all: autogenerated update (2018-09-16)

Add:
- file/v1beta1

Update:
- adexchangebuyer2/v2beta1
- adexperiencereport/v1
- admin/directory/v1
- androidenterprise/v1
- appengine/v1
- appengine/v1beta
- classroom/v1
- cloudbuild/v1
- cloudtrace/v1
- container/v1
- dataproc/v1
- dlp/v2
- jobs/v2
- jobs/v3
- logging/v2
- logging/v2beta1
- proximitybeacon/v1beta1
- serviceconsumermanagement/v1
- servicecontrol/v1
- servicemanagement/v1
- serviceusage/v1
- serviceusage/v1beta1
- serviceuser/v1
- speech/v1
- speech/v1beta1
- sqladmin/v1beta4
- storage/v1
- storage/v1beta2
- storagetransfer/v1
- testing/v1
- vision/v1
- vision/v1p1beta1
- vision/v1p2beta1
diff --git a/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json b/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
index 5dd67f7..fb7c865 100644
--- a/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
+++ b/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
@@ -838,6 +838,555 @@
               }
             }
           }
+        },
+        "finalizedProposals": {
+          "methods": {
+            "list": {
+              "description": "List finalized proposals, regardless if a proposal is being renegotiated.\nA filter expression (PQL query) may be specified to filter the results.\nThe notes will not be returned.",
+              "flatPath": "v2beta1/accounts/{accountId}/finalizedProposals",
+              "httpMethod": "GET",
+              "id": "adexchangebuyer2.accounts.finalizedProposals.list",
+              "parameterOrder": [
+                "accountId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "filter": {
+                  "description": "An optional PQL filter query used to query for proposals.\n\nNested repeated fields, such as proposal.deals.targetingCriterion,\ncannot be filtered.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "filterSyntax": {
+                  "description": "Syntax the filter is written in. Current implementation defaults to PQL\nbut in the future it will be LIST_FILTER.",
+                  "enum": [
+                    "FILTER_SYNTAX_UNSPECIFIED",
+                    "PQL",
+                    "LIST_FILTER"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "The page token as returned from ListProposalsResponse.",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/finalizedProposals",
+              "response": {
+                "$ref": "ListProposalsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            }
+          }
+        },
+        "products": {
+          "methods": {
+            "get": {
+              "description": "Gets the requested product by ID.",
+              "flatPath": "v2beta1/accounts/{accountId}/products/{productId}",
+              "httpMethod": "GET",
+              "id": "adexchangebuyer2.accounts.products.get",
+              "parameterOrder": [
+                "accountId",
+                "productId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "productId": {
+                  "description": "The ID for the product to get the head revision for.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/products/{productId}",
+              "response": {
+                "$ref": "Product"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "list": {
+              "description": "List all products visible to the buyer (optionally filtered by the\nspecified PQL query).",
+              "flatPath": "v2beta1/accounts/{accountId}/products",
+              "httpMethod": "GET",
+              "id": "adexchangebuyer2.accounts.products.list",
+              "parameterOrder": [
+                "accountId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "filter": {
+                  "description": "An optional PQL query used to query for products. See\nhttps://developers.google.com/doubleclick-publishers/docs/pqlreference\nfor documentation about PQL and examples.\n\nNested repeated fields, such as product.targetingCriterion.inclusions,\ncannot be filtered.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "The page token as returned from ListProductsResponse.",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/products",
+              "response": {
+                "$ref": "ListProductsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            }
+          }
+        },
+        "proposals": {
+          "methods": {
+            "accept": {
+              "description": "Mark the proposal as accepted at the given revision number. If the number\ndoes not match the server's revision number an `ABORTED` error message will\nbe returned. This call updates the proposal_state from `PROPOSED` to\n`BUYER_ACCEPTED`, or from `SELLER_ACCEPTED` to `FINALIZED`.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:accept",
+              "httpMethod": "POST",
+              "id": "adexchangebuyer2.accounts.proposals.accept",
+              "parameterOrder": [
+                "accountId",
+                "proposalId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "proposalId": {
+                  "description": "The ID of the proposal to accept.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:accept",
+              "request": {
+                "$ref": "AcceptProposalRequest"
+              },
+              "response": {
+                "$ref": "Proposal"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "addNote": {
+              "description": "Create a new note and attach it to the proposal. The note is assigned\na unique ID by the server.\nThe proposal revision number will not increase when associated with a\nnew note.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:addNote",
+              "httpMethod": "POST",
+              "id": "adexchangebuyer2.accounts.proposals.addNote",
+              "parameterOrder": [
+                "accountId",
+                "proposalId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "proposalId": {
+                  "description": "The ID of the proposal to attach the note to.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:addNote",
+              "request": {
+                "$ref": "AddNoteRequest"
+              },
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "cancelNegotiation": {
+              "description": "Cancel an ongoing negotiation on a proposal. This does not cancel or end\nserving for the deals if the proposal has been finalized, but only cancels\na negotiation unilaterally.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:cancelNegotiation",
+              "httpMethod": "POST",
+              "id": "adexchangebuyer2.accounts.proposals.cancelNegotiation",
+              "parameterOrder": [
+                "accountId",
+                "proposalId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "proposalId": {
+                  "description": "The ID of the proposal to cancel negotiation for.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:cancelNegotiation",
+              "request": {
+                "$ref": "CancelNegotiationRequest"
+              },
+              "response": {
+                "$ref": "Proposal"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "completeSetup": {
+              "description": "Update the given proposal to indicate that setup has been completed.\nThis method is called by the buyer when the line items have been created\non their end for a finalized proposal and all the required creatives\nhave been uploaded using the creatives API. This call updates the\n`is_setup_completed` bit on the proposal and also notifies the seller.\nThe server will advance the revision number of the most recent proposal.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:completeSetup",
+              "httpMethod": "POST",
+              "id": "adexchangebuyer2.accounts.proposals.completeSetup",
+              "parameterOrder": [
+                "accountId",
+                "proposalId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "proposalId": {
+                  "description": "The ID of the proposal to mark as setup completed.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:completeSetup",
+              "request": {
+                "$ref": "CompleteSetupRequest"
+              },
+              "response": {
+                "$ref": "Proposal"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "create": {
+              "description": "Create the given proposal. Each created proposal and any deals it contains\nare assigned a unique ID by the server.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals",
+              "httpMethod": "POST",
+              "id": "adexchangebuyer2.accounts.proposals.create",
+              "parameterOrder": [
+                "accountId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals",
+              "request": {
+                "$ref": "Proposal"
+              },
+              "response": {
+                "$ref": "Proposal"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "get": {
+              "description": "Gets a proposal given its ID. The proposal is returned at its head\nrevision.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}",
+              "httpMethod": "GET",
+              "id": "adexchangebuyer2.accounts.proposals.get",
+              "parameterOrder": [
+                "accountId",
+                "proposalId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "proposalId": {
+                  "description": "The unique ID of the proposal",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}",
+              "response": {
+                "$ref": "Proposal"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "list": {
+              "description": "List proposals. A filter expression (PQL query) may be specified to\nfilter the results. To retrieve all finalized proposals, regardless if a\nproposal is being renegotiated, see the FinalizedProposals resource.\nNote that Bidder/ChildSeat relationships differ from the usual behavior.\nA Bidder account can only see its child seats' proposals by specifying\nthe ChildSeat's accountId in the request path.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals",
+              "httpMethod": "GET",
+              "id": "adexchangebuyer2.accounts.proposals.list",
+              "parameterOrder": [
+                "accountId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "filter": {
+                  "description": "An optional PQL filter query used to query for proposals.\n\nNested repeated fields, such as proposal.deals.targetingCriterion,\ncannot be filtered.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "filterSyntax": {
+                  "description": "Syntax the filter is written in. Current implementation defaults to PQL\nbut in the future it will be LIST_FILTER.",
+                  "enum": [
+                    "FILTER_SYNTAX_UNSPECIFIED",
+                    "PQL",
+                    "LIST_FILTER"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "The page token as returned from ListProposalsResponse.",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals",
+              "response": {
+                "$ref": "ListProposalsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "pause": {
+              "description": "Update the given proposal to pause serving.\nThis method will set the\n`DealServingMetadata.DealPauseStatus.has_buyer_paused` bit to true for all\ndeals in the proposal.\n\nIt is a no-op to pause an already-paused proposal.\nIt is an error to call PauseProposal for a proposal that is not\nfinalized or renegotiating.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:pause",
+              "httpMethod": "POST",
+              "id": "adexchangebuyer2.accounts.proposals.pause",
+              "parameterOrder": [
+                "accountId",
+                "proposalId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "proposalId": {
+                  "description": "The ID of the proposal to pause.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:pause",
+              "request": {
+                "$ref": "PauseProposalRequest"
+              },
+              "response": {
+                "$ref": "Proposal"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "resume": {
+              "description": "Update the given proposal to resume serving.\nThis method will set the\n`DealServingMetadata.DealPauseStatus.has_buyer_paused` bit to false for all\ndeals in the proposal.\n\nNote that if the `has_seller_paused` bit is also set, serving will not\nresume until the seller also resumes.\n\nIt is a no-op to resume an already-running proposal.\nIt is an error to call ResumeProposal for a proposal that is not\nfinalized or renegotiating.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:resume",
+              "httpMethod": "POST",
+              "id": "adexchangebuyer2.accounts.proposals.resume",
+              "parameterOrder": [
+                "accountId",
+                "proposalId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "proposalId": {
+                  "description": "The ID of the proposal to resume.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:resume",
+              "request": {
+                "$ref": "ResumeProposalRequest"
+              },
+              "response": {
+                "$ref": "Proposal"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "update": {
+              "description": "Update the given proposal at the client known revision number. If the\nserver revision has advanced since the passed-in\n`proposal.proposal_revision`, an `ABORTED` error message will be returned.\nOnly the buyer-modifiable fields of the proposal will be updated.\n\nNote that the deals in the proposal will be updated to match the passed-in\ncopy.\nIf a passed-in deal does not have a `deal_id`, the server will assign a new\nunique ID and create the deal.\nIf passed-in deal has a `deal_id`, it will be updated to match the\npassed-in copy.\nAny existing deals not present in the passed-in proposal will be deleted.\nIt is an error to pass in a deal with a `deal_id` not present at head.",
+              "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}",
+              "httpMethod": "PUT",
+              "id": "adexchangebuyer2.accounts.proposals.update",
+              "parameterOrder": [
+                "accountId",
+                "proposalId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "proposalId": {
+                  "description": "The unique ID of the proposal.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}",
+              "request": {
+                "$ref": "Proposal"
+              },
+              "response": {
+                "$ref": "Proposal"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            }
+          }
+        },
+        "publisherProfiles": {
+          "methods": {
+            "get": {
+              "description": "Gets the requested publisher profile by id.",
+              "flatPath": "v2beta1/accounts/{accountId}/publisherProfiles/{publisherProfileId}",
+              "httpMethod": "GET",
+              "id": "adexchangebuyer2.accounts.publisherProfiles.get",
+              "parameterOrder": [
+                "accountId",
+                "publisherProfileId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "publisherProfileId": {
+                  "description": "The id for the publisher profile to get.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/publisherProfiles/{publisherProfileId}",
+              "response": {
+                "$ref": "PublisherProfile"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            },
+            "list": {
+              "description": "List all publisher profiles visible to the buyer",
+              "flatPath": "v2beta1/accounts/{accountId}/publisherProfiles",
+              "httpMethod": "GET",
+              "id": "adexchangebuyer2.accounts.publisherProfiles.list",
+              "parameterOrder": [
+                "accountId"
+              ],
+              "parameters": {
+                "accountId": {
+                  "description": "Account ID of the buyer.",
+                  "location": "path",
+                  "required": true,
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Specify the number of results to include per page.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "The page token as return from ListPublisherProfilesResponse.",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v2beta1/accounts/{accountId}/publisherProfiles",
+              "response": {
+                "$ref": "ListPublisherProfilesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/adexchange.buyer"
+              ]
+            }
+          }
         }
       }
     },
@@ -1936,7 +2485,7 @@
       }
     }
   },
-  "revision": "20180908",
+  "revision": "20180912",
   "rootUrl": "https://adexchangebuyer.googleapis.com/",
   "schemas": {
     "AbsoluteDateRange": {
@@ -1954,6 +2503,53 @@
       },
       "type": "object"
     },
+    "AcceptProposalRequest": {
+      "description": "Request to accept a proposal.",
+      "id": "AcceptProposalRequest",
+      "properties": {
+        "proposalRevision": {
+          "description": "The last known client revision number of the proposal.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "AdSize": {
+      "description": "Represents size of a single ad slot, or a creative.",
+      "id": "AdSize",
+      "properties": {
+        "height": {
+          "description": "The height of the ad slot in pixels.\nThis field will be present only when size type is `PIXEL`.",
+          "format": "int64",
+          "type": "string"
+        },
+        "sizeType": {
+          "description": "The size type of the ad slot.",
+          "enum": [
+            "SIZE_TYPE_UNSPECIFIED",
+            "PIXEL",
+            "INTERSTITIAL",
+            "NATIVE",
+            "FLUID"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined size type.",
+            "Ad slot with size specified by height and width in pixels.",
+            "Special size to describe an interstitial ad slot.",
+            "Native (mobile) ads rendered by the publisher.",
+            "Fluid size (i.e. responsive size) can be resized automatically with the\nchange of outside environment."
+          ],
+          "type": "string"
+        },
+        "width": {
+          "description": "The width of the ad slot in pixels.\nThis field will be present only when size type is `PIXEL`.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "AddDealAssociationRequest": {
       "description": "A request for associating a deal and a creative.",
       "id": "AddDealAssociationRequest",
@@ -1965,6 +2561,17 @@
       },
       "type": "object"
     },
+    "AddNoteRequest": {
+      "description": "Request message for adding a note to a given proposal.",
+      "id": "AddNoteRequest",
+      "properties": {
+        "note": {
+          "$ref": "Note",
+          "description": "Details of the note to add."
+        }
+      },
+      "type": "object"
+    },
     "AppContext": {
       "description": "@OutputOnly The app type the restriction applies to for mobile device.",
       "id": "AppContext",
@@ -2075,6 +2682,17 @@
       },
       "type": "object"
     },
+    "Buyer": {
+      "description": "Represents a buyer of inventory. Each buyer is identified by a unique\nAd Exchange account ID.",
+      "id": "Buyer",
+      "properties": {
+        "accountId": {
+          "description": "Ad Exchange account ID of the buyer.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "CalloutStatusRow": {
       "description": "The number of impressions with the specified dimension values where the\ncorresponding bid request or bid response was not successful, as described by\nthe specified callout status.",
       "id": "CalloutStatusRow",
@@ -2095,6 +2713,12 @@
       },
       "type": "object"
     },
+    "CancelNegotiationRequest": {
+      "description": "Request to cancel an ongoing negotiation.",
+      "id": "CancelNegotiationRequest",
+      "properties": {},
+      "type": "object"
+    },
     "Client": {
       "description": "A client resource represents a client buyer\u0026mdash;an agency,\na brand, or an advertiser customer of the sponsor buyer.\nUsers associated with the client buyer have restricted access to\nthe Ad Exchange Marketplace and certain other sections\nof the Ad Exchange Buyer UI based on the role\ngranted to the client buyer.\nAll fields are required unless otherwise specified.",
       "id": "Client",
@@ -2232,6 +2856,27 @@
       },
       "type": "object"
     },
+    "CompleteSetupRequest": {
+      "description": "Request message for indicating that the proposal's setup step is complete.",
+      "id": "CompleteSetupRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "ContactInformation": {
+      "description": "Contains information on how a buyer or seller can be reached.",
+      "id": "ContactInformation",
+      "properties": {
+        "email": {
+          "description": "Email address for the contact.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The name of the contact.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Correction": {
       "description": "@OutputOnly Shows any corrections that were applied to this creative.",
       "id": "Correction",
@@ -2549,6 +3194,152 @@
       },
       "type": "object"
     },
+    "CreativeRestrictions": {
+      "description": "Represents creative restrictions associated to Programmatic Guaranteed/\nPreferred Deal in DFP.\nThis doesn't apply to Private Auction and AdX Preferred Deals.",
+      "id": "CreativeRestrictions",
+      "properties": {
+        "creativeFormat": {
+          "description": "The format of the environment that the creatives will be displayed in.",
+          "enum": [
+            "CREATIVE_FORMAT_UNSPECIFIED",
+            "DISPLAY",
+            "VIDEO"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined creative format.",
+            "A creative that will be displayed in environments such as a browser.",
+            "A video creative that will be displayed in environments such as a video\nplayer."
+          ],
+          "type": "string"
+        },
+        "creativeSpecifications": {
+          "items": {
+            "$ref": "CreativeSpecification"
+          },
+          "type": "array"
+        },
+        "skippableAdType": {
+          "description": "Skippable video ads allow viewers to skip ads after 5 seconds.",
+          "enum": [
+            "SKIPPABLE_AD_TYPE_UNSPECIFIED",
+            "SKIPPABLE",
+            "INSTREAM_SELECT",
+            "NOT_SKIPPABLE"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined skippable ad type.",
+            "This video ad can be skipped after 5 seconds.",
+            "This video ad can be skipped after 5 seconds, and is counted as\nengaged view after 30 seconds. The creative is hosted on\nYouTube only, and viewcount of the YouTube video increments\nafter the engaged view.",
+            "This video ad is not skippable."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "CreativeSize": {
+      "description": "Specifies the size of the creative.",
+      "id": "CreativeSize",
+      "properties": {
+        "allowedFormats": {
+          "description": "What formats are allowed by the publisher.\nIf this repeated field is empty then all formats are allowed.\nE.g., if this field contains AllowedFormatType.AUDIO then the publisher\nonly allows an audio ad (without any video).",
+          "enumDescriptions": [
+            "A placeholder for an undefined allowed format.",
+            "An audio-only ad (without any video)."
+          ],
+          "items": {
+            "enum": [
+              "UNKNOWN",
+              "AUDIO"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "companionSizes": {
+          "description": "For video creatives specifies the sizes of companion ads (if present).\nCompanion sizes may be filled in only when creative_size_type = VIDEO",
+          "items": {
+            "$ref": "Size"
+          },
+          "type": "array"
+        },
+        "creativeSizeType": {
+          "description": "The creative size type.",
+          "enum": [
+            "CREATIVE_SIZE_TYPE_UNSPECIFIED",
+            "REGULAR",
+            "INTERSTITIAL",
+            "VIDEO",
+            "NATIVE"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined creative size type.",
+            "The creative is a regular desktop creative.",
+            "The creative is an interstitial creative.",
+            "The creative is a video creative.",
+            "The creative is a native (mobile) creative."
+          ],
+          "type": "string"
+        },
+        "nativeTemplate": {
+          "description": "The native template for this creative. It will have a value only if\ncreative_size_type = CreativeSizeType.NATIVE.\n@OutputOnly",
+          "enum": [
+            "UNKNOWN_NATIVE_TEMPLATE",
+            "NATIVE_CONTENT_AD",
+            "NATIVE_APP_INSTALL_AD",
+            "NATIVE_VIDEO_CONTENT_AD",
+            "NATIVE_VIDEO_APP_INSTALL_AD"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined native template.",
+            "The creative is linked to native content ad.",
+            "The creative is linked to native app install ad.",
+            "The creative is linked to native video content ad.",
+            "The creative is linked to native video app install ad."
+          ],
+          "type": "string"
+        },
+        "size": {
+          "$ref": "Size",
+          "description": "For regular or video creative size type, specifies the size\nof the creative"
+        },
+        "skippableAdType": {
+          "description": "The type of skippable ad for this creative. It will have a value only if\ncreative_size_type = CreativeSizeType.VIDEO.",
+          "enum": [
+            "SKIPPABLE_AD_TYPE_UNSPECIFIED",
+            "GENERIC",
+            "INSTREAM_SELECT",
+            "NOT_SKIPPABLE"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined skippable ad type.",
+            "This video ad can be skipped after 5 seconds.",
+            "This video ad can be skipped after 5 seconds, and count as\nengaged view after 30 seconds. The creative is hosted on\nYouTube only, and viewcount of the YouTube video increments\nafter the engaged view.",
+            "This video ad is not skippable."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "CreativeSpecification": {
+      "description": "Represents information for a creative that is associated with a Programmatic\nGuaranteed/Preferred Deal in DFP.",
+      "id": "CreativeSpecification",
+      "properties": {
+        "creativeCompanionSizes": {
+          "description": "Companion sizes may be filled in only when this is a video creative.",
+          "items": {
+            "$ref": "AdSize"
+          },
+          "type": "array"
+        },
+        "creativeSize": {
+          "$ref": "AdSize",
+          "description": "The size of the creative."
+        }
+      },
+      "type": "object"
+    },
     "CreativeStatusRow": {
       "description": "The number of bids with the specified dimension values that did not win the\nauction (either were filtered pre-auction or lost the auction), as described\nby the specified creative status.",
       "id": "CreativeStatusRow",
@@ -2569,6 +3360,29 @@
       },
       "type": "object"
     },
+    "CriteriaTargeting": {
+      "description": "Generic targeting used for targeting dimensions that contains a list of\nincluded and excluded numeric IDs.",
+      "id": "CriteriaTargeting",
+      "properties": {
+        "excludedCriteriaIds": {
+          "description": "A list of numeric IDs to be excluded.",
+          "items": {
+            "format": "int64",
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "targetedCriteriaIds": {
+          "description": "A list of numeric IDs to be included.",
+          "items": {
+            "format": "int64",
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "Date": {
       "description": "Represents a whole calendar date, for example date of birth. The time of day\nand time zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day can be 0 to\nrepresent a year and month where the day is not significant, for example\ncredit card expiration date. The year can be 0 to represent a month and day\nindependent of year, for example anniversary date. Related types are\ngoogle.type.TimeOfDay and `google.protobuf.Timestamp`.",
       "id": "Date",
@@ -2591,6 +3405,377 @@
       },
       "type": "object"
     },
+    "DayPart": {
+      "description": "Daypart targeting message that specifies if the ad can be shown\nonly during certain parts of a day/week.",
+      "id": "DayPart",
+      "properties": {
+        "dayOfWeek": {
+          "description": "The day of the week to target. If unspecified, applicable to all days.",
+          "enum": [
+            "DAY_OF_WEEK_UNSPECIFIED",
+            "MONDAY",
+            "TUESDAY",
+            "WEDNESDAY",
+            "THURSDAY",
+            "FRIDAY",
+            "SATURDAY",
+            "SUNDAY"
+          ],
+          "enumDescriptions": [
+            "A placeholder for when the day of the week is not specified.",
+            "Monday",
+            "Tuesday",
+            "Wednesday",
+            "Thursday",
+            "Friday",
+            "Saturday",
+            "Sunday"
+          ],
+          "type": "string"
+        },
+        "endTime": {
+          "$ref": "TimeOfDay",
+          "description": "The ending time of the day for the ad to show (minute level granularity).\nThe end time is exclusive.\nThis field is not available for filtering in PQL queries."
+        },
+        "startTime": {
+          "$ref": "TimeOfDay",
+          "description": "The starting time of day for the ad to show (minute level granularity).\nThe start time is inclusive.\nThis field is not available for filtering in PQL queries."
+        }
+      },
+      "type": "object"
+    },
+    "DayPartTargeting": {
+      "description": "Specifies the day part targeting criteria.",
+      "id": "DayPartTargeting",
+      "properties": {
+        "dayParts": {
+          "description": "A list of day part targeting criterion.",
+          "items": {
+            "$ref": "DayPart"
+          },
+          "type": "array"
+        },
+        "timeZoneType": {
+          "description": "The timezone to use for interpreting the day part targeting.",
+          "enum": [
+            "TIME_ZONE_SOURCE_UNSPECIFIED",
+            "PUBLISHER",
+            "USER"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined time zone source.",
+            "Use publisher's time zone setting.",
+            "Use the user's time zone setting."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Deal": {
+      "description": "A deal represents a segment of inventory for displaying ads on.\nA proposal can contain multiple deals. A deal contains the terms and targeting information that\nis used for serving.",
+      "id": "Deal",
+      "properties": {
+        "availableEndTime": {
+          "description": "Proposed flight end time of the deal.\nThis will generally be stored in a granularity of a second.\nA value is not required for Private Auction deals or Preferred Deals.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "availableStartTime": {
+          "description": "Optional proposed flight start time of the deal.\nThis will generally be stored in the granularity of one second since deal serving\nstarts at seconds boundary. Any time specified with more granularity\n(e.g., in milliseconds) will be truncated towards the start of time in seconds.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "buyerPrivateData": {
+          "$ref": "PrivateData",
+          "description": "Buyer private data (hidden from seller)."
+        },
+        "createProductId": {
+          "description": "The product ID from which this deal was created.\n\nNote: This field may be set only when creating the resource. Modifying\nthis field while updating the resource will result in an error.",
+          "type": "string"
+        },
+        "createProductRevision": {
+          "description": "Optional revision number of the product that the deal was created from.\nIf present on create, and the server `product_revision` has advanced sinced\nthe passed-in `create_product_revision`, an `ABORTED` error will be\nreturned.\n\nNote: This field may be set only when creating the resource. Modifying\nthis field while updating the resource will result in an error.",
+          "format": "int64",
+          "type": "string"
+        },
+        "createTime": {
+          "description": "The time of the deal creation.\n@OutputOnly",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "creativePreApprovalPolicy": {
+          "description": "Specifies the creative pre-approval policy.\n@OutputOnly",
+          "enum": [
+            "CREATIVE_PRE_APPROVAL_POLICY_UNSPECIFIED",
+            "SELLER_PRE_APPROVAL_REQUIRED",
+            "SELLER_PRE_APPROVAL_NOT_REQUIRED"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined creative pre-approval policy.",
+            "The seller needs to approve each creative before it can serve.",
+            "The seller does not need to approve each creative before it can serve."
+          ],
+          "type": "string"
+        },
+        "creativeRestrictions": {
+          "$ref": "CreativeRestrictions",
+          "description": "Restricitions about the creatives associated with the deal (i.e. size)\nThis is available for Programmatic Guaranteed/Preferred Deals in DFP.\n@OutputOnly"
+        },
+        "creativeSafeFrameCompatibility": {
+          "description": "Specifies whether the creative is safeFrame compatible.\n@OutputOnly",
+          "enum": [
+            "CREATIVE_SAFE_FRAME_COMPATIBILITY_UNSPECIFIED",
+            "COMPATIBLE",
+            "INCOMPATIBLE"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined creative safe-frame compatibility.",
+            "The creatives need to be compatible with the safe frame option.",
+            "The creatives can be incompatible with the safe frame option."
+          ],
+          "type": "string"
+        },
+        "dealId": {
+          "description": "A unique deal ID for the deal (server-assigned).\n@OutputOnly",
+          "type": "string"
+        },
+        "dealServingMetadata": {
+          "$ref": "DealServingMetadata",
+          "description": "Metadata about the serving status of this deal.\n@OutputOnly"
+        },
+        "dealTerms": {
+          "$ref": "DealTerms",
+          "description": "The negotiable terms of the deal."
+        },
+        "deliveryControl": {
+          "$ref": "DeliveryControl",
+          "description": "The set of fields around delivery control that are interesting for a buyer\nto see but are non-negotiable. These are set by the publisher."
+        },
+        "description": {
+          "description": "Description for the deal terms.",
+          "type": "string"
+        },
+        "displayName": {
+          "description": "The name of the deal.",
+          "type": "string"
+        },
+        "externalDealId": {
+          "description": "The external deal ID assigned to this deal once the deal is finalized.\nThis is the deal ID that shows up in serving/reporting etc.\n@OutputOnly",
+          "type": "string"
+        },
+        "isSetupComplete": {
+          "description": "True, if the buyside inventory setup is complete for this deal.\n@OutputOnly",
+          "type": "boolean"
+        },
+        "programmaticCreativeSource": {
+          "description": "Specifies the creative source for programmatic deals. PUBLISHER means\ncreative is provided by seller and ADVERTISER means creative is\nprovided by buyer.\n@OutputOnly",
+          "enum": [
+            "PROGRAMMATIC_CREATIVE_SOURCE_UNSPECIFIED",
+            "ADVERTISER",
+            "PUBLISHER"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined programmatic creative source.",
+            "The advertiser provides the creatives.",
+            "The publisher provides the creatives to be served."
+          ],
+          "type": "string"
+        },
+        "proposalId": {
+          "description": "ID of the proposal that this deal is part of.\n@OutputOnly",
+          "type": "string"
+        },
+        "sellerContacts": {
+          "description": "Seller contact information for the deal.\n@OutputOnly",
+          "items": {
+            "$ref": "ContactInformation"
+          },
+          "type": "array"
+        },
+        "syndicationProduct": {
+          "description": "The syndication product associated with the deal.\n\nNote: This field may be set only when creating the resource. Modifying\nthis field while updating the resource will result in an error.",
+          "enum": [
+            "SYNDICATION_PRODUCT_UNSPECIFIED",
+            "CONTENT",
+            "MOBILE",
+            "VIDEO",
+            "GAMES"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined syndication product.",
+            "This typically represents a web page.",
+            "This represents a mobile property.",
+            "This represents video ad formats.",
+            "This represents ads shown within games."
+          ],
+          "type": "string"
+        },
+        "targeting": {
+          "$ref": "MarketplaceTargeting",
+          "description": "Specifies the subset of inventory targeted by the deal.\n@OutputOnly"
+        },
+        "targetingCriterion": {
+          "description": "The shared targeting visible to buyers and sellers. Each shared\ntargeting entity is AND'd together.",
+          "items": {
+            "$ref": "TargetingCriteria"
+          },
+          "type": "array"
+        },
+        "updateTime": {
+          "description": "The time when the deal was last updated.\n@OutputOnly",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "webPropertyCode": {
+          "description": "The web property code for the seller copied over from the product.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "DealPauseStatus": {
+      "description": "Tracks which parties (if any) have paused a deal.\nThe deal is considered paused if either hasBuyerPaused or\nhasSellPaused is true.",
+      "id": "DealPauseStatus",
+      "properties": {
+        "buyerPauseReason": {
+          "description": "The buyer's reason for pausing, if the buyer paused the deal.",
+          "type": "string"
+        },
+        "firstPausedBy": {
+          "description": "The role of the person who first paused this deal.",
+          "enum": [
+            "BUYER_SELLER_ROLE_UNSPECIFIED",
+            "BUYER",
+            "SELLER"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined buyer/seller role.",
+            "Specifies the role as buyer.",
+            "Specifies the role as seller."
+          ],
+          "type": "string"
+        },
+        "hasBuyerPaused": {
+          "description": "True, if the buyer has paused the deal unilaterally.",
+          "type": "boolean"
+        },
+        "hasSellerPaused": {
+          "description": "True, if the seller has paused the deal unilaterally.",
+          "type": "boolean"
+        },
+        "sellerPauseReason": {
+          "description": "The seller's reason for pausing, if the seller paused the deal.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "DealServingMetadata": {
+      "description": "Message captures metadata about the serving status of a deal.",
+      "id": "DealServingMetadata",
+      "properties": {
+        "dealPauseStatus": {
+          "$ref": "DealPauseStatus",
+          "description": "Tracks which parties (if any) have paused a deal.\n@OutputOnly"
+        }
+      },
+      "type": "object"
+    },
+    "DealTerms": {
+      "description": "The deal terms specify the details of a Product/deal. They specify things\nlike price per buyer, the type of pricing model (e.g., fixed price, auction)\nand expected impressions from the publisher.",
+      "id": "DealTerms",
+      "properties": {
+        "brandingType": {
+          "description": "Visibility of the URL in bid requests. (default: BRANDED)",
+          "enum": [
+            "BRANDING_TYPE_UNSPECIFIED",
+            "BRANDED",
+            "SEMI_TRANSPARENT"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined branding type.",
+            "Full URL is included in bid requests.",
+            "A TopLevelDomain or masked URL is sent in bid requests\nrather than the full one."
+          ],
+          "type": "string"
+        },
+        "description": {
+          "description": "Publisher provided description for the terms.",
+          "type": "string"
+        },
+        "estimatedGrossSpend": {
+          "$ref": "Price",
+          "description": "Non-binding estimate of the estimated gross spend for this deal.\nCan be set by buyer or seller."
+        },
+        "estimatedImpressionsPerDay": {
+          "description": "Non-binding estimate of the impressions served per day.\nCan be set by buyer or seller.",
+          "format": "int64",
+          "type": "string"
+        },
+        "guaranteedFixedPriceTerms": {
+          "$ref": "GuaranteedFixedPriceTerms",
+          "description": "The terms for guaranteed fixed price deals."
+        },
+        "nonGuaranteedAuctionTerms": {
+          "$ref": "NonGuaranteedAuctionTerms",
+          "description": "The terms for non-guaranteed auction deals."
+        },
+        "nonGuaranteedFixedPriceTerms": {
+          "$ref": "NonGuaranteedFixedPriceTerms",
+          "description": "The terms for non-guaranteed fixed price deals."
+        },
+        "sellerTimeZone": {
+          "description": "The time zone name. For deals with Cost Per Day billing, defines the\ntime zone used to mark the boundaries of a day. It should be an\nIANA TZ name, such as \"America/Los_Angeles\". For more information,\nsee https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "DeliveryControl": {
+      "description": "Message contains details about how the deals will be paced.",
+      "id": "DeliveryControl",
+      "properties": {
+        "creativeBlockingLevel": {
+          "description": "Specified the creative blocking levels to be applied.\n@OutputOnly",
+          "enum": [
+            "CREATIVE_BLOCKING_LEVEL_UNSPECIFIED",
+            "PUBLISHER_BLOCKING_RULES",
+            "ADX_POLICY_BLOCKING_ONLY"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined creative blocking level.",
+            "Publisher blocking rules will be applied.",
+            "The Ad Exchange policy blocking rules will be applied."
+          ],
+          "type": "string"
+        },
+        "deliveryRateType": {
+          "description": "Specifies how the impression delivery will be paced.\n@OutputOnly",
+          "enum": [
+            "DELIVERY_RATE_TYPE_UNSPECIFIED",
+            "EVENLY",
+            "FRONT_LOADED",
+            "AS_FAST_AS_POSSIBLE"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined delivery rate type.",
+            "Impressions are served uniformly over the life of the deal.",
+            "Impressions are served front-loaded.",
+            "Impressions are served as fast as possible."
+          ],
+          "type": "string"
+        },
+        "frequencyCaps": {
+          "description": "Specifies any frequency caps.\n@OutputOnly",
+          "items": {
+            "$ref": "FrequencyCap"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "Disapproval": {
       "description": "@OutputOnly The reason and details for a disapproval.",
       "id": "Disapproval",
@@ -2991,6 +4176,95 @@
       },
       "type": "object"
     },
+    "FirstPartyMobileApplicationTargeting": {
+      "description": "Represents a list of targeted and excluded mobile application IDs that\npublishers own.\nMobile application IDs are from App Store and Google Play Store.\nAndroid App ID, for example, com.google.android.apps.maps, can be found in\nGoogle Play Store URL.\niOS App ID (which is a number) can be found at the end of iTunes store URL.\nFirst party mobile applications is either included or excluded.",
+      "id": "FirstPartyMobileApplicationTargeting",
+      "properties": {
+        "excludedAppIds": {
+          "description": "A list of application IDs to be excluded.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "targetedAppIds": {
+          "description": "A list of application IDs to be included.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "FrequencyCap": {
+      "description": "Frequency cap.",
+      "id": "FrequencyCap",
+      "properties": {
+        "maxImpressions": {
+          "description": "The maximum number of impressions that can be served to a user within the\nspecified time period.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "numTimeUnits": {
+          "description": "The amount of time, in the units specified by time_unit_type. Defines the\namount of time over which impressions per user are counted and capped.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "timeUnitType": {
+          "description": "The time unit. Along with num_time_units defines the amount of time over\nwhich impressions per user are counted and capped.",
+          "enum": [
+            "TIME_UNIT_TYPE_UNSPECIFIED",
+            "MINUTE",
+            "HOUR",
+            "DAY",
+            "WEEK",
+            "MONTH",
+            "LIFETIME"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined time unit type. This just indicates the\nvariable with this value hasn't been initialized.",
+            "Minute",
+            "Hour",
+            "Day",
+            "Week",
+            "Month",
+            "Lifetime"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GuaranteedFixedPriceTerms": {
+      "description": "Terms for Programmatic Guaranteed Deals.",
+      "id": "GuaranteedFixedPriceTerms",
+      "properties": {
+        "fixedPrices": {
+          "description": "Fixed price for the specified buyer.",
+          "items": {
+            "$ref": "PricePerBuyer"
+          },
+          "type": "array"
+        },
+        "guaranteedImpressions": {
+          "description": "Guaranteed impressions as a percentage. This is the percentage\nof guaranteed looks that the buyer is guaranteeing to buy.",
+          "format": "int64",
+          "type": "string"
+        },
+        "guaranteedLooks": {
+          "description": "Count of guaranteed looks. Required for deal, optional for product.",
+          "format": "int64",
+          "type": "string"
+        },
+        "minimumDailyLooks": {
+          "description": "Daily minimum looks for CPD deal types.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "HtmlContent": {
       "description": "HTML content for a creative.",
       "id": "HtmlContent",
@@ -3064,6 +4338,27 @@
       },
       "type": "object"
     },
+    "InventorySizeTargeting": {
+      "description": "Represents the size of an ad unit that can be targeted on an ad\nrequest. It only applies to Private Auction, AdX Preferred Deals and\nAuction Packages. This targeting does not apply to Programmatic Guaranteed\nand Preferred Deals in DFP.",
+      "id": "InventorySizeTargeting",
+      "properties": {
+        "excludedInventorySizes": {
+          "description": "A list of inventory sizes to be excluded.",
+          "items": {
+            "$ref": "AdSize"
+          },
+          "type": "array"
+        },
+        "targetedInventorySizes": {
+          "description": "A list of inventory sizes to be included.",
+          "items": {
+            "$ref": "AdSize"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "ListBidMetricsResponse": {
       "description": "Response message for listing the metrics that are measured in number of bids.",
       "id": "ListBidMetricsResponse",
@@ -3369,6 +4664,60 @@
       },
       "type": "object"
     },
+    "ListProductsResponse": {
+      "description": "Response message for listing products visible to the buyer.",
+      "id": "ListProductsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "List pagination support.",
+          "type": "string"
+        },
+        "products": {
+          "description": "The list of matching products at their head revision number.",
+          "items": {
+            "$ref": "Product"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListProposalsResponse": {
+      "description": "Response message for listing proposals.",
+      "id": "ListProposalsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "Continuation token for fetching the next page of results.",
+          "type": "string"
+        },
+        "proposals": {
+          "description": "The list of proposals.",
+          "items": {
+            "$ref": "Proposal"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListPublisherProfilesResponse": {
+      "description": "Response message for profiles visible to the buyer.",
+      "id": "ListPublisherProfilesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "List pagination support",
+          "type": "string"
+        },
+        "publisherProfiles": {
+          "description": "The list of matching publisher profiles.",
+          "items": {
+            "$ref": "PublisherProfile"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "LocationContext": {
       "description": "@OutputOnly The Geo criteria the restriction applies to.",
       "id": "LocationContext",
@@ -3384,6 +4733,33 @@
       },
       "type": "object"
     },
+    "MarketplaceTargeting": {
+      "description": "Targeting represents different criteria that can be used by advertisers to\ntarget ad inventory. For example, they can choose to target ad requests only\nif the user is in the US.\nMultiple types of targeting are always applied as a logical AND, unless noted\notherwise.",
+      "id": "MarketplaceTargeting",
+      "properties": {
+        "geoTargeting": {
+          "$ref": "CriteriaTargeting",
+          "description": "Geo criteria IDs to be included/excluded."
+        },
+        "inventorySizeTargeting": {
+          "$ref": "InventorySizeTargeting",
+          "description": "Inventory sizes to be included/excluded."
+        },
+        "placementTargeting": {
+          "$ref": "PlacementTargeting",
+          "description": "Placement targeting information, e.g. URL, mobile applications."
+        },
+        "technologyTargeting": {
+          "$ref": "TechnologyTargeting",
+          "description": "Technology targeting information, e.g. operating system, device category."
+        },
+        "videoTargeting": {
+          "$ref": "VideoTargeting",
+          "description": "Video targeting information."
+        }
+      },
+      "type": "object"
+    },
     "MetricValue": {
       "description": "A metric value, with an expected value and a variance; represents a count\nthat may be either exact or estimated (i.e. when sampled).",
       "id": "MetricValue",
@@ -3401,6 +4777,38 @@
       },
       "type": "object"
     },
+    "MobileApplicationTargeting": {
+      "description": "Mobile application targeting settings.",
+      "id": "MobileApplicationTargeting",
+      "properties": {
+        "firstPartyTargeting": {
+          "$ref": "FirstPartyMobileApplicationTargeting",
+          "description": "Publisher owned apps to be targeted or excluded by the publisher to\ndisplay the ads in."
+        }
+      },
+      "type": "object"
+    },
+    "Money": {
+      "description": "Represents an amount of money with its currency type.",
+      "id": "Money",
+      "properties": {
+        "currencyCode": {
+          "description": "The 3-letter currency code defined in ISO 4217.",
+          "type": "string"
+        },
+        "nanos": {
+          "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "units": {
+          "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "NativeContent": {
       "description": "Native content for a creative.",
       "id": "NativeContent",
@@ -3490,6 +4898,118 @@
       },
       "type": "object"
     },
+    "NonGuaranteedAuctionTerms": {
+      "description": "Terms for Private Auctions. Note that Private Auctions can be created only\nby the seller, but they can be returned in a get or list request.",
+      "id": "NonGuaranteedAuctionTerms",
+      "properties": {
+        "autoOptimizePrivateAuction": {
+          "description": "True if open auction buyers are allowed to compete with invited buyers\nin this private auction.",
+          "type": "boolean"
+        },
+        "reservePricesPerBuyer": {
+          "description": "Reserve price for the specified buyer.",
+          "items": {
+            "$ref": "PricePerBuyer"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "NonGuaranteedFixedPriceTerms": {
+      "description": "Terms for Preferred Deals. Note that Preferred Deals cannot be created via\nthe API at this time, but can be returned in a get or list request.",
+      "id": "NonGuaranteedFixedPriceTerms",
+      "properties": {
+        "fixedPrices": {
+          "description": "Fixed price for the specified buyer.",
+          "items": {
+            "$ref": "PricePerBuyer"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Note": {
+      "description": "A proposal may be associated to several notes.",
+      "id": "Note",
+      "properties": {
+        "createTime": {
+          "description": "The timestamp for when this note was created.\n@OutputOnly",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "creatorRole": {
+          "description": "The role of the person (buyer/seller) creating the note.\n@OutputOnly",
+          "enum": [
+            "BUYER_SELLER_ROLE_UNSPECIFIED",
+            "BUYER",
+            "SELLER"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined buyer/seller role.",
+            "Specifies the role as buyer.",
+            "Specifies the role as seller."
+          ],
+          "type": "string"
+        },
+        "note": {
+          "description": "The actual note to attach.\n(max-length: 1024 unicode code units)\n\nNote: This field may be set only when creating the resource. Modifying\nthis field while updating the resource will result in an error.",
+          "type": "string"
+        },
+        "noteId": {
+          "description": "The unique ID for the note.\n@OutputOnly",
+          "type": "string"
+        },
+        "proposalRevision": {
+          "description": "The revision number of the proposal when the note is created.\n@OutputOnly",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "OperatingSystemTargeting": {
+      "description": "Represents targeting information for operating systems.",
+      "id": "OperatingSystemTargeting",
+      "properties": {
+        "operatingSystemCriteria": {
+          "$ref": "CriteriaTargeting",
+          "description": "IDs of operating systems to be included/excluded."
+        },
+        "operatingSystemVersionCriteria": {
+          "$ref": "CriteriaTargeting",
+          "description": "IDs of operating system versions to be included/excluded."
+        }
+      },
+      "type": "object"
+    },
+    "PauseProposalRequest": {
+      "description": "Request message to pause serving for an already-finalized proposal.",
+      "id": "PauseProposalRequest",
+      "properties": {
+        "reason": {
+          "description": "The reason why the proposal is being paused.\nThis human readable message will be displayed in the seller's UI.\n(Max length: 100 unicode code units.)",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "PlacementTargeting": {
+      "description": "Represents targeting about where the ads can appear, e.g. certain sites or\nmobile applications.\nDifferent placement targeting types will be logically OR'ed.",
+      "id": "PlacementTargeting",
+      "properties": {
+        "mobileApplicationTargeting": {
+          "$ref": "MobileApplicationTargeting",
+          "description": "Mobile application targeting information in a deal.\nThis doesn't apply to Auction Packages."
+        },
+        "urlTargeting": {
+          "$ref": "UrlTargeting",
+          "description": "URLs to be included/excluded."
+        }
+      },
+      "type": "object"
+    },
     "PlatformContext": {
       "description": "@OutputOnly The type of platform the restriction applies to.",
       "id": "PlatformContext",
@@ -3514,6 +5034,358 @@
       },
       "type": "object"
     },
+    "Price": {
+      "description": "Represents a price and a pricing type for a product / deal.",
+      "id": "Price",
+      "properties": {
+        "amount": {
+          "$ref": "Money",
+          "description": "The actual price with currency specified."
+        },
+        "pricingType": {
+          "description": "The pricing type for the deal/product. (default: CPM)",
+          "enum": [
+            "PRICING_TYPE_UNSPECIFIED",
+            "COST_PER_MILLE",
+            "COST_PER_DAY"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined pricing type. If the pricing type is\nunpsecified, `COST_PER_MILLE` will be used instead.",
+            "Cost per thousand impressions.",
+            "Cost per day"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "PricePerBuyer": {
+      "description": "Used to specify pricing rules for buyers/advertisers. Each PricePerBuyer in\na product can become 0 or 1 deals. To check if there is a PricePerBuyer for\na particular buyer or buyer/advertiser pair, we look for the most specific\nmatching rule - we first look for a rule matching the buyer and advertiser,\nnext a rule with the buyer but an empty advertiser list, and otherwise look\nfor a matching rule where no buyer is set.",
+      "id": "PricePerBuyer",
+      "properties": {
+        "advertiserIds": {
+          "description": "The list of advertisers for this price when associated with this buyer.\nIf empty, all advertisers with this buyer pay this price.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "buyer": {
+          "$ref": "Buyer",
+          "description": "The buyer who will pay this price. If unset, all buyers can pay this price\n(if the\nadvertisers match, and there's no more specific rule matching the buyer)."
+        },
+        "price": {
+          "$ref": "Price",
+          "description": "The specified price."
+        }
+      },
+      "type": "object"
+    },
+    "PrivateData": {
+      "description": "Buyers are allowed to store certain types of private data in a proposal/deal.",
+      "id": "PrivateData",
+      "properties": {
+        "referenceId": {
+          "description": "A buyer or seller specified reference ID. This can be queried in the list\noperations (max-length: 1024 unicode code units).",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Product": {
+      "description": "Note: this resource requires whitelisting for access. Please contact your\naccount manager for access to Marketplace resources.\n\nA product is a segment of inventory that a seller wishes to sell. It is\nassociated with certain terms and targeting information which helps the buyer\nknow more about the inventory.",
+      "id": "Product",
+      "properties": {
+        "availableEndTime": {
+          "description": "The proposed end time for the deal. The field will be truncated to the order of\nseconds during serving.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "availableStartTime": {
+          "description": "Inventory availability dates. The start time will be truncated to seconds during serving.\nThus, a field specified as 3:23:34.456 (HH:mm:ss.SSS) will be truncated to 3:23:34\nwhen serving.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "createTime": {
+          "description": "Creation time.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "creatorContacts": {
+          "description": "Optional contact information for the creator of this product.",
+          "items": {
+            "$ref": "ContactInformation"
+          },
+          "type": "array"
+        },
+        "displayName": {
+          "description": "The display name for this product as set by the seller.",
+          "type": "string"
+        },
+        "hasCreatorSignedOff": {
+          "description": "If the creator has already signed off on the product, then the buyer can\nfinalize the deal by accepting the product as is. When copying to a\nproposal, if any of the terms are changed, then auto_finalize is\nautomatically set to false.",
+          "type": "boolean"
+        },
+        "productId": {
+          "description": "The unique ID for the product.",
+          "type": "string"
+        },
+        "productRevision": {
+          "description": "The revision number of the product. (auto-assigned by marketplace)",
+          "format": "int64",
+          "type": "string"
+        },
+        "publisherProfileId": {
+          "description": "An ID which can be used by the Publisher Profile API to get more\ninformation about the seller that created this product.",
+          "type": "string"
+        },
+        "seller": {
+          "$ref": "Seller",
+          "description": "Information about the seller that created this product."
+        },
+        "syndicationProduct": {
+          "description": "The syndication product associated with the deal.",
+          "enum": [
+            "SYNDICATION_PRODUCT_UNSPECIFIED",
+            "CONTENT",
+            "MOBILE",
+            "VIDEO",
+            "GAMES"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined syndication product.",
+            "This typically represents a web page.",
+            "This represents a mobile property.",
+            "This represents video ad formats.",
+            "This represents ads shown within games."
+          ],
+          "type": "string"
+        },
+        "targetingCriterion": {
+          "description": "Targeting that is shared between the buyer and the seller. Each targeting\ncriterion has a specified key and for each key there is a list of inclusion\nvalue or exclusion values.",
+          "items": {
+            "$ref": "TargetingCriteria"
+          },
+          "type": "array"
+        },
+        "terms": {
+          "$ref": "DealTerms",
+          "description": "The negotiable terms of the deal."
+        },
+        "updateTime": {
+          "description": "Time of last update.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "webPropertyCode": {
+          "description": "The web-property code for the seller. This needs to be copied as is when\nadding a new deal to a proposal.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Proposal": {
+      "description": "Note: this resource requires whitelisting for access. Please contact your\naccount manager for access to Marketplace resources.\n\nRepresents a proposal in the marketplace. A proposal is the unit of\nnegotiation between a seller and a buyer and contains deals which\nare served.\n\nNote: you can not update, create, or otherwise modify Private\nAuction or Preferred Deals deals through the API.\n\nFields are updatable unless noted otherwise.",
+      "id": "Proposal",
+      "properties": {
+        "billedBuyer": {
+          "$ref": "Buyer",
+          "description": "Reference to the buyer that will get billed for this proposal.\n@OutputOnly"
+        },
+        "buyer": {
+          "$ref": "Buyer",
+          "description": "Reference to the buyer on the proposal.\n\nNote: This field may be set only when creating the resource. Modifying\nthis field while updating the resource will result in an error."
+        },
+        "buyerContacts": {
+          "description": "Contact information for the buyer.",
+          "items": {
+            "$ref": "ContactInformation"
+          },
+          "type": "array"
+        },
+        "buyerPrivateData": {
+          "$ref": "PrivateData",
+          "description": "Private data for buyer. (hidden from seller)."
+        },
+        "deals": {
+          "description": "The deals associated with this proposal. For Private Auction proposals (whose deals have\nNonGuaranteedAuctionTerms), there will only be one deal.",
+          "items": {
+            "$ref": "Deal"
+          },
+          "type": "array"
+        },
+        "displayName": {
+          "description": "The name for the proposal.",
+          "type": "string"
+        },
+        "isRenegotiating": {
+          "description": "True if the proposal is being renegotiated.\n@OutputOnly",
+          "type": "boolean"
+        },
+        "isSetupComplete": {
+          "description": "True, if the buyside inventory setup is complete for this proposal.\n@OutputOnly",
+          "type": "boolean"
+        },
+        "lastUpdaterOrCommentorRole": {
+          "description": "The role of the last user that either updated the proposal or left a\ncomment.\n@OutputOnly",
+          "enum": [
+            "BUYER_SELLER_ROLE_UNSPECIFIED",
+            "BUYER",
+            "SELLER"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined buyer/seller role.",
+            "Specifies the role as buyer.",
+            "Specifies the role as seller."
+          ],
+          "type": "string"
+        },
+        "notes": {
+          "description": "The notes associated with this proposal.\n@OutputOnly",
+          "items": {
+            "$ref": "Note"
+          },
+          "type": "array"
+        },
+        "originatorRole": {
+          "description": "Indicates whether the buyer/seller created the proposal.\n@OutputOnly",
+          "enum": [
+            "BUYER_SELLER_ROLE_UNSPECIFIED",
+            "BUYER",
+            "SELLER"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined buyer/seller role.",
+            "Specifies the role as buyer.",
+            "Specifies the role as seller."
+          ],
+          "type": "string"
+        },
+        "privateAuctionId": {
+          "description": "Private auction ID if this proposal is a private auction proposal.\n@OutputOnly",
+          "type": "string"
+        },
+        "proposalId": {
+          "description": "The unique ID of the proposal.\n@OutputOnly",
+          "type": "string"
+        },
+        "proposalRevision": {
+          "description": "The revision number for the proposal.\nEach update to the proposal or the deal causes the proposal revision number\nto auto-increment. The buyer keeps track of the last revision number they\nknow of and pass it in when making an update. If the head revision number\non the server has since incremented, then an ABORTED error is returned\nduring the update operation to let the buyer know that a subsequent update\nwas made.\n@OutputOnly",
+          "format": "int64",
+          "type": "string"
+        },
+        "proposalState": {
+          "description": "The current state of the proposal.\n@OutputOnly",
+          "enum": [
+            "PROPOSAL_STATE_UNSPECIFIED",
+            "PROPOSED",
+            "BUYER_ACCEPTED",
+            "SELLER_ACCEPTED",
+            "CANCELED",
+            "FINALIZED"
+          ],
+          "enumDescriptions": [
+            "A placeholder for an undefined proposal state.",
+            "The proposal is under negotiation or renegotiation.",
+            "The proposal has been accepted by the buyer.",
+            "The proposal has been accepted by the seller.",
+            "The negotiations on the proposal were canceled and the proposal was never\nfinalized.",
+            "The proposal is finalized. During renegotiation, the proposal may\nnot be in this state."
+          ],
+          "type": "string"
+        },
+        "seller": {
+          "$ref": "Seller",
+          "description": "Reference to the seller on the proposal.\n\nNote: This field may be set only when creating the resource. Modifying\nthis field while updating the resource will result in an error."
+        },
+        "sellerContacts": {
+          "description": "Contact information for the seller.\n@OutputOnly",
+          "items": {
+            "$ref": "ContactInformation"
+          },
+          "type": "array"
+        },
+        "updateTime": {
+          "description": "The time when the proposal was last revised.\n@OutputOnly",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "PublisherProfile": {
+      "description": "Note: this resource requires whitelisting for access. Please contact your\naccount manager for access to Marketplace resources.\n\nRepresents a publisher profile in Marketplace.\n\nAll fields are read only. All string fields are free-form text entered by the publisher\nunless noted otherwise.",
+      "id": "PublisherProfile",
+      "properties": {
+        "audienceDescription": {
+          "description": "Description on the publisher's audience.",
+          "type": "string"
+        },
+        "buyerPitchStatement": {
+          "description": "Statement explaining what's unique about publisher's business, and why buyers should\npartner with the publisher.",
+          "type": "string"
+        },
+        "directDealsContact": {
+          "description": "Contact information for direct reservation deals. This is free text entered by the publisher\nand may include information like names, phone numbers and email addresses.",
+          "type": "string"
+        },
+        "displayName": {
+          "description": "Name of the publisher profile.",
+          "type": "string"
+        },
+        "domains": {
+          "description": "The list of domains represented in this publisher profile. Empty if this is a parent profile.\nThese are top private domains, meaning that these will not contain a string like\n\"photos.google.co.uk/123\", but will instead contain \"google.co.uk\".",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "googlePlusUrl": {
+          "description": "URL to publisher's Google+ page.",
+          "type": "string"
+        },
+        "logoUrl": {
+          "description": "A Google public URL to the logo for this publisher profile. The logo is stored as\na PNG, JPG, or GIF image.",
+          "type": "string"
+        },
+        "mediaKitUrl": {
+          "description": "URL to additional marketing and sales materials.",
+          "type": "string"
+        },
+        "overview": {
+          "description": "Overview of the publisher.",
+          "type": "string"
+        },
+        "programmaticDealsContact": {
+          "description": "Contact information for programmatic deals. This is free text entered by the publisher\nand may include information like names, phone numbers and email addresses.",
+          "type": "string"
+        },
+        "publisherProfileId": {
+          "description": "Unique ID for publisher profile.",
+          "type": "string"
+        },
+        "rateCardInfoUrl": {
+          "description": "URL to a publisher rate card.",
+          "type": "string"
+        },
+        "samplePageUrl": {
+          "description": "URL to a sample content page.",
+          "type": "string"
+        },
+        "seller": {
+          "$ref": "Seller",
+          "description": "Seller of the publisher profile."
+        },
+        "topHeadlines": {
+          "description": "Up to three key metrics and rankings. Max 100 characters each.\nFor example \"#1 Mobile News Site for 20 Straight Months\".",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "RealtimeTimeRange": {
       "description": "An open-ended realtime time range specified by the start timestamp.\nFor filter sets that specify a realtime time range RTB metrics continue to\nbe aggregated throughout the lifetime of the filter set.",
       "id": "RealtimeTimeRange",
@@ -3571,6 +5443,12 @@
       },
       "type": "object"
     },
+    "ResumeProposalRequest": {
+      "description": "Request message to resume (unpause) serving for an already-finalized\nproposal.",
+      "id": "ResumeProposalRequest",
+      "properties": {},
+      "type": "object"
+    },
     "RowDimensions": {
       "description": "A response may include multiple rows, breaking down along various dimensions.\nEncapsulates the values of all dimensions for a given row.",
       "id": "RowDimensions",
@@ -3604,6 +5482,21 @@
       },
       "type": "object"
     },
+    "Seller": {
+      "description": "Represents a seller of inventory. Each seller is identified by a unique\nAd Exchange account ID.",
+      "id": "Seller",
+      "properties": {
+        "accountId": {
+          "description": "The unique ID for the seller. The seller fills in this field.\nThe seller account ID is then available to buyer in the product.",
+          "type": "string"
+        },
+        "subAccountId": {
+          "description": "Optional sub-account ID for the seller.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "ServingContext": {
       "description": "The serving context for this restriction.",
       "id": "ServingContext",
@@ -3680,12 +5573,97 @@
       },
       "type": "object"
     },
+    "Size": {
+      "description": "Message depicting the size of the creative. The units of width and\nheight depend on the type of the targeting.",
+      "id": "Size",
+      "properties": {
+        "height": {
+          "description": "The height of the creative.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "width": {
+          "description": "The width of the creative",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "StopWatchingCreativeRequest": {
       "description": "A request for stopping notifications for changes to creative Status.",
       "id": "StopWatchingCreativeRequest",
       "properties": {},
       "type": "object"
     },
+    "TargetingCriteria": {
+      "description": "Advertisers can target different attributes of an ad slot. For example,\nthey can choose to show ads only if the user is in the U.S. Such\ntargeting criteria can be specified as part of Shared Targeting.",
+      "id": "TargetingCriteria",
+      "properties": {
+        "exclusions": {
+          "description": "The list of values to exclude from targeting. Each value is AND'd\ntogether.",
+          "items": {
+            "$ref": "TargetingValue"
+          },
+          "type": "array"
+        },
+        "inclusions": {
+          "description": "The list of value to include as part of the targeting. Each value is OR'd\ntogether.",
+          "items": {
+            "$ref": "TargetingValue"
+          },
+          "type": "array"
+        },
+        "key": {
+          "description": "The key representing the shared targeting criterion.\nTargeting criteria defined by Google ad servers will begin with GOOG_.\nThird parties may define their own keys.\nA list of permissible keys along with the acceptable values will be\nprovided as part of the external documentation.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "TargetingValue": {
+      "description": "A polymorphic targeting value used as part of Shared Targeting.",
+      "id": "TargetingValue",
+      "properties": {
+        "creativeSizeValue": {
+          "$ref": "CreativeSize",
+          "description": "The creative size value to include/exclude.\nFilled in when key = GOOG_CREATIVE_SIZE"
+        },
+        "dayPartTargetingValue": {
+          "$ref": "DayPartTargeting",
+          "description": "The daypart targeting to include / exclude.\nFilled in when the key is GOOG_DAYPART_TARGETING.\nThe definition of this targeting is derived from the structure\nused by DFP."
+        },
+        "longValue": {
+          "description": "The long value to include/exclude.",
+          "format": "int64",
+          "type": "string"
+        },
+        "stringValue": {
+          "description": "The string value to include/exclude.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "TechnologyTargeting": {
+      "description": "Represents targeting about various types of technology.",
+      "id": "TechnologyTargeting",
+      "properties": {
+        "deviceCapabilityTargeting": {
+          "$ref": "CriteriaTargeting",
+          "description": "IDs of device capabilities to be included/excluded."
+        },
+        "deviceCategoryTargeting": {
+          "$ref": "CriteriaTargeting",
+          "description": "IDs of device categories to be included/excluded."
+        },
+        "operatingSystemTargeting": {
+          "$ref": "OperatingSystemTargeting",
+          "description": "Operating system related targeting information."
+        }
+      },
+      "type": "object"
+    },
     "TimeInterval": {
       "description": "An interval of time, with an absolute start and end.",
       "id": "TimeInterval",
@@ -3703,6 +5681,54 @@
       },
       "type": "object"
     },
+    "TimeOfDay": {
+      "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are google.type.Date and `google.protobuf.Timestamp`.",
+      "id": "TimeOfDay",
+      "properties": {
+        "hours": {
+          "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "minutes": {
+          "description": "Minutes of hour of day. Must be from 0 to 59.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "nanos": {
+          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "seconds": {
+          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may\nallow the value 60 if it allows leap-seconds.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "UrlTargeting": {
+      "description": "Represents a list of targeted and excluded URLs (e.g google.com).\nFor Private Auction and AdX Preferred Deals, URLs are either included or\nexcluded.\nFor DFP Programmatic Guaranteed and Preferred Deals, this doesn't apply.",
+      "id": "UrlTargeting",
+      "properties": {
+        "excludedUrls": {
+          "description": "A list of URLs to be excluded.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "targetedUrls": {
+          "description": "A list of URLs to be included.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "VideoContent": {
       "description": "Video content for a creative.",
       "id": "VideoContent",
@@ -3718,6 +5744,51 @@
       },
       "type": "object"
     },
+    "VideoTargeting": {
+      "description": "Represents targeting information about video.",
+      "id": "VideoTargeting",
+      "properties": {
+        "excludedPositionTypes": {
+          "description": "A list of video positions to be excluded.\nPosition types can either be included or excluded (XOR).",
+          "enumDescriptions": [
+            "A placeholder for an undefined video position.",
+            "Ad is played before the video.",
+            "Ad is played during the video.",
+            "Ad is played after the video."
+          ],
+          "items": {
+            "enum": [
+              "POSITION_TYPE_UNSPECIFIED",
+              "PREROLL",
+              "MIDROLL",
+              "POSTROLL"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "targetedPositionTypes": {
+          "description": "A list of video positions to be included.\nWhen the included list is present, the excluded list must be empty.\nWhen the excluded list is present, the included list must be empty.",
+          "enumDescriptions": [
+            "A placeholder for an undefined video position.",
+            "Ad is played before the video.",
+            "Ad is played during the video.",
+            "Ad is played after the video."
+          ],
+          "items": {
+            "enum": [
+              "POSITION_TYPE_UNSPECIFIED",
+              "PREROLL",
+              "MIDROLL",
+              "POSTROLL"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "WatchCreativeRequest": {
       "description": "A request for watching changes to creative Status.",
       "id": "WatchCreativeRequest",
diff --git a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
index 89748be..7cf009f 100644
--- a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
+++ b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
@@ -82,6 +82,10 @@
 	rs := &AccountsService{s: s}
 	rs.Clients = NewAccountsClientsService(s)
 	rs.Creatives = NewAccountsCreativesService(s)
+	rs.FinalizedProposals = NewAccountsFinalizedProposalsService(s)
+	rs.Products = NewAccountsProductsService(s)
+	rs.Proposals = NewAccountsProposalsService(s)
+	rs.PublisherProfiles = NewAccountsPublisherProfilesService(s)
 	return rs
 }
 
@@ -91,6 +95,14 @@
 	Clients *AccountsClientsService
 
 	Creatives *AccountsCreativesService
+
+	FinalizedProposals *AccountsFinalizedProposalsService
+
+	Products *AccountsProductsService
+
+	Proposals *AccountsProposalsService
+
+	PublisherProfiles *AccountsPublisherProfilesService
 }
 
 func NewAccountsClientsService(s *Service) *AccountsClientsService {
@@ -147,6 +159,42 @@
 	s *Service
 }
 
+func NewAccountsFinalizedProposalsService(s *Service) *AccountsFinalizedProposalsService {
+	rs := &AccountsFinalizedProposalsService{s: s}
+	return rs
+}
+
+type AccountsFinalizedProposalsService struct {
+	s *Service
+}
+
+func NewAccountsProductsService(s *Service) *AccountsProductsService {
+	rs := &AccountsProductsService{s: s}
+	return rs
+}
+
+type AccountsProductsService struct {
+	s *Service
+}
+
+func NewAccountsProposalsService(s *Service) *AccountsProposalsService {
+	rs := &AccountsProposalsService{s: s}
+	return rs
+}
+
+type AccountsProposalsService struct {
+	s *Service
+}
+
+func NewAccountsPublisherProfilesService(s *Service) *AccountsPublisherProfilesService {
+	rs := &AccountsPublisherProfilesService{s: s}
+	return rs
+}
+
+type AccountsPublisherProfilesService struct {
+	s *Service
+}
+
 func NewBiddersService(s *Service) *BiddersService {
 	rs := &BiddersService{s: s}
 	rs.Accounts = NewBiddersAccountsService(s)
@@ -477,6 +525,82 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// AcceptProposalRequest: Request to accept a proposal.
+type AcceptProposalRequest struct {
+	// ProposalRevision: The last known client revision number of the
+	// proposal.
+	ProposalRevision int64 `json:"proposalRevision,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "ProposalRevision") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ProposalRevision") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AcceptProposalRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod AcceptProposalRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AdSize: Represents size of a single ad slot, or a creative.
+type AdSize struct {
+	// Height: The height of the ad slot in pixels.
+	// This field will be present only when size type is `PIXEL`.
+	Height int64 `json:"height,omitempty,string"`
+
+	// SizeType: The size type of the ad slot.
+	//
+	// Possible values:
+	//   "SIZE_TYPE_UNSPECIFIED" - A placeholder for an undefined size type.
+	//   "PIXEL" - Ad slot with size specified by height and width in
+	// pixels.
+	//   "INTERSTITIAL" - Special size to describe an interstitial ad slot.
+	//   "NATIVE" - Native (mobile) ads rendered by the publisher.
+	//   "FLUID" - Fluid size (i.e. responsive size) can be resized
+	// automatically with the
+	// change of outside environment.
+	SizeType string `json:"sizeType,omitempty"`
+
+	// Width: The width of the ad slot in pixels.
+	// This field will be present only when size type is `PIXEL`.
+	Width int64 `json:"width,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Height") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Height") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AdSize) MarshalJSON() ([]byte, error) {
+	type NoMethod AdSize
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // AddDealAssociationRequest: A request for associating a deal and a
 // creative.
 type AddDealAssociationRequest struct {
@@ -507,6 +631,35 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// AddNoteRequest: Request message for adding a note to a given
+// proposal.
+type AddNoteRequest struct {
+	// Note: Details of the note to add.
+	Note *Note `json:"note,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Note") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Note") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AddNoteRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod AddNoteRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // AppContext: @OutputOnly The app type the restriction applies to for
 // mobile device.
 type AppContext struct {
@@ -685,6 +838,36 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Buyer: Represents a buyer of inventory. Each buyer is identified by a
+// unique
+// Ad Exchange account ID.
+type Buyer struct {
+	// AccountId: Ad Exchange account ID of the buyer.
+	AccountId string `json:"accountId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AccountId") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Buyer) MarshalJSON() ([]byte, error) {
+	type NoMethod Buyer
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // CalloutStatusRow: The number of impressions with the specified
 // dimension values where the
 // corresponding bid request or bid response was not successful, as
@@ -730,6 +913,10 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// CancelNegotiationRequest: Request to cancel an ongoing negotiation.
+type CancelNegotiationRequest struct {
+}
+
 // Client: A client resource represents a client buyer—an
 // agency,
 // a brand, or an advertiser customer of the sponsor buyer.
@@ -995,6 +1182,43 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// CompleteSetupRequest: Request message for indicating that the
+// proposal's setup step is complete.
+type CompleteSetupRequest struct {
+}
+
+// ContactInformation: Contains information on how a buyer or seller can
+// be reached.
+type ContactInformation struct {
+	// Email: Email address for the contact.
+	Email string `json:"email,omitempty"`
+
+	// Name: The name of the contact.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Email") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Email") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ContactInformation) MarshalJSON() ([]byte, error) {
+	type NoMethod ContactInformation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Correction: @OutputOnly Shows any corrections that were applied to
 // this creative.
 type Correction struct {
@@ -1333,6 +1557,191 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// CreativeRestrictions: Represents creative restrictions associated to
+// Programmatic Guaranteed/
+// Preferred Deal in DFP.
+// This doesn't apply to Private Auction and AdX Preferred Deals.
+type CreativeRestrictions struct {
+	// CreativeFormat: The format of the environment that the creatives will
+	// be displayed in.
+	//
+	// Possible values:
+	//   "CREATIVE_FORMAT_UNSPECIFIED" - A placeholder for an undefined
+	// creative format.
+	//   "DISPLAY" - A creative that will be displayed in environments such
+	// as a browser.
+	//   "VIDEO" - A video creative that will be displayed in environments
+	// such as a video
+	// player.
+	CreativeFormat string `json:"creativeFormat,omitempty"`
+
+	CreativeSpecifications []*CreativeSpecification `json:"creativeSpecifications,omitempty"`
+
+	// SkippableAdType: Skippable video ads allow viewers to skip ads after
+	// 5 seconds.
+	//
+	// Possible values:
+	//   "SKIPPABLE_AD_TYPE_UNSPECIFIED" - A placeholder for an undefined
+	// skippable ad type.
+	//   "SKIPPABLE" - This video ad can be skipped after 5 seconds.
+	//   "INSTREAM_SELECT" - This video ad can be skipped after 5 seconds,
+	// and is counted as
+	// engaged view after 30 seconds. The creative is hosted on
+	// YouTube only, and viewcount of the YouTube video increments
+	// after the engaged view.
+	//   "NOT_SKIPPABLE" - This video ad is not skippable.
+	SkippableAdType string `json:"skippableAdType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeFormat") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CreativeFormat") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreativeRestrictions) MarshalJSON() ([]byte, error) {
+	type NoMethod CreativeRestrictions
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CreativeSize: Specifies the size of the creative.
+type CreativeSize struct {
+	// AllowedFormats: What formats are allowed by the publisher.
+	// If this repeated field is empty then all formats are allowed.
+	// E.g., if this field contains AllowedFormatType.AUDIO then the
+	// publisher
+	// only allows an audio ad (without any video).
+	//
+	// Possible values:
+	//   "UNKNOWN" - A placeholder for an undefined allowed format.
+	//   "AUDIO" - An audio-only ad (without any video).
+	AllowedFormats []string `json:"allowedFormats,omitempty"`
+
+	// CompanionSizes: For video creatives specifies the sizes of companion
+	// ads (if present).
+	// Companion sizes may be filled in only when creative_size_type = VIDEO
+	CompanionSizes []*Size `json:"companionSizes,omitempty"`
+
+	// CreativeSizeType: The creative size type.
+	//
+	// Possible values:
+	//   "CREATIVE_SIZE_TYPE_UNSPECIFIED" - A placeholder for an undefined
+	// creative size type.
+	//   "REGULAR" - The creative is a regular desktop creative.
+	//   "INTERSTITIAL" - The creative is an interstitial creative.
+	//   "VIDEO" - The creative is a video creative.
+	//   "NATIVE" - The creative is a native (mobile) creative.
+	CreativeSizeType string `json:"creativeSizeType,omitempty"`
+
+	// NativeTemplate: The native template for this creative. It will have a
+	// value only if
+	// creative_size_type = CreativeSizeType.NATIVE.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "UNKNOWN_NATIVE_TEMPLATE" - A placeholder for an undefined native
+	// template.
+	//   "NATIVE_CONTENT_AD" - The creative is linked to native content ad.
+	//   "NATIVE_APP_INSTALL_AD" - The creative is linked to native app
+	// install ad.
+	//   "NATIVE_VIDEO_CONTENT_AD" - The creative is linked to native video
+	// content ad.
+	//   "NATIVE_VIDEO_APP_INSTALL_AD" - The creative is linked to native
+	// video app install ad.
+	NativeTemplate string `json:"nativeTemplate,omitempty"`
+
+	// Size: For regular or video creative size type, specifies the size
+	// of the creative
+	Size *Size `json:"size,omitempty"`
+
+	// SkippableAdType: The type of skippable ad for this creative. It will
+	// have a value only if
+	// creative_size_type = CreativeSizeType.VIDEO.
+	//
+	// Possible values:
+	//   "SKIPPABLE_AD_TYPE_UNSPECIFIED" - A placeholder for an undefined
+	// skippable ad type.
+	//   "GENERIC" - This video ad can be skipped after 5 seconds.
+	//   "INSTREAM_SELECT" - This video ad can be skipped after 5 seconds,
+	// and count as
+	// engaged view after 30 seconds. The creative is hosted on
+	// YouTube only, and viewcount of the YouTube video increments
+	// after the engaged view.
+	//   "NOT_SKIPPABLE" - This video ad is not skippable.
+	SkippableAdType string `json:"skippableAdType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AllowedFormats") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AllowedFormats") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreativeSize) MarshalJSON() ([]byte, error) {
+	type NoMethod CreativeSize
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CreativeSpecification: Represents information for a creative that is
+// associated with a Programmatic
+// Guaranteed/Preferred Deal in DFP.
+type CreativeSpecification struct {
+	// CreativeCompanionSizes: Companion sizes may be filled in only when
+	// this is a video creative.
+	CreativeCompanionSizes []*AdSize `json:"creativeCompanionSizes,omitempty"`
+
+	// CreativeSize: The size of the creative.
+	CreativeSize *AdSize `json:"creativeSize,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "CreativeCompanionSizes") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CreativeCompanionSizes")
+	// to include in API requests with the JSON null value. By default,
+	// fields with empty values are omitted from API requests. However, any
+	// field with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreativeSpecification) MarshalJSON() ([]byte, error) {
+	type NoMethod CreativeSpecification
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // CreativeStatusRow: The number of bids with the specified dimension
 // values that did not win the
 // auction (either were filtered pre-auction or lost the auction), as
@@ -1375,6 +1784,40 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// CriteriaTargeting: Generic targeting used for targeting dimensions
+// that contains a list of
+// included and excluded numeric IDs.
+type CriteriaTargeting struct {
+	// ExcludedCriteriaIds: A list of numeric IDs to be excluded.
+	ExcludedCriteriaIds googleapi.Int64s `json:"excludedCriteriaIds,omitempty"`
+
+	// TargetedCriteriaIds: A list of numeric IDs to be included.
+	TargetedCriteriaIds googleapi.Int64s `json:"targetedCriteriaIds,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExcludedCriteriaIds")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ExcludedCriteriaIds") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CriteriaTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod CriteriaTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Date: Represents a whole calendar date, for example date of birth.
 // The time of day
 // and time zone are either specified elsewhere or are not significant.
@@ -1427,6 +1870,513 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// DayPart: Daypart targeting message that specifies if the ad can be
+// shown
+// only during certain parts of a day/week.
+type DayPart struct {
+	// DayOfWeek: The day of the week to target. If unspecified, applicable
+	// to all days.
+	//
+	// Possible values:
+	//   "DAY_OF_WEEK_UNSPECIFIED" - A placeholder for when the day of the
+	// week is not specified.
+	//   "MONDAY" - Monday
+	//   "TUESDAY" - Tuesday
+	//   "WEDNESDAY" - Wednesday
+	//   "THURSDAY" - Thursday
+	//   "FRIDAY" - Friday
+	//   "SATURDAY" - Saturday
+	//   "SUNDAY" - Sunday
+	DayOfWeek string `json:"dayOfWeek,omitempty"`
+
+	// EndTime: The ending time of the day for the ad to show (minute level
+	// granularity).
+	// The end time is exclusive.
+	// This field is not available for filtering in PQL queries.
+	EndTime *TimeOfDay `json:"endTime,omitempty"`
+
+	// StartTime: The starting time of day for the ad to show (minute level
+	// granularity).
+	// The start time is inclusive.
+	// This field is not available for filtering in PQL queries.
+	StartTime *TimeOfDay `json:"startTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DayOfWeek") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DayOfWeek") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *DayPart) MarshalJSON() ([]byte, error) {
+	type NoMethod DayPart
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// DayPartTargeting: Specifies the day part targeting criteria.
+type DayPartTargeting struct {
+	// DayParts: A list of day part targeting criterion.
+	DayParts []*DayPart `json:"dayParts,omitempty"`
+
+	// TimeZoneType: The timezone to use for interpreting the day part
+	// targeting.
+	//
+	// Possible values:
+	//   "TIME_ZONE_SOURCE_UNSPECIFIED" - A placeholder for an undefined
+	// time zone source.
+	//   "PUBLISHER" - Use publisher's time zone setting.
+	//   "USER" - Use the user's time zone setting.
+	TimeZoneType string `json:"timeZoneType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DayParts") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DayParts") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *DayPartTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod DayPartTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Deal: A deal represents a segment of inventory for displaying ads
+// on.
+// A proposal can contain multiple deals. A deal contains the terms and
+// targeting information that
+// is used for serving.
+type Deal struct {
+	// AvailableEndTime: Proposed flight end time of the deal.
+	// This will generally be stored in a granularity of a second.
+	// A value is not required for Private Auction deals or Preferred Deals.
+	AvailableEndTime string `json:"availableEndTime,omitempty"`
+
+	// AvailableStartTime: Optional proposed flight start time of the
+	// deal.
+	// This will generally be stored in the granularity of one second since
+	// deal serving
+	// starts at seconds boundary. Any time specified with more
+	// granularity
+	// (e.g., in milliseconds) will be truncated towards the start of time
+	// in seconds.
+	AvailableStartTime string `json:"availableStartTime,omitempty"`
+
+	// BuyerPrivateData: Buyer private data (hidden from seller).
+	BuyerPrivateData *PrivateData `json:"buyerPrivateData,omitempty"`
+
+	// CreateProductId: The product ID from which this deal was
+	// created.
+	//
+	// Note: This field may be set only when creating the resource.
+	// Modifying
+	// this field while updating the resource will result in an error.
+	CreateProductId string `json:"createProductId,omitempty"`
+
+	// CreateProductRevision: Optional revision number of the product that
+	// the deal was created from.
+	// If present on create, and the server `product_revision` has advanced
+	// sinced
+	// the passed-in `create_product_revision`, an `ABORTED` error will
+	// be
+	// returned.
+	//
+	// Note: This field may be set only when creating the resource.
+	// Modifying
+	// this field while updating the resource will result in an error.
+	CreateProductRevision int64 `json:"createProductRevision,omitempty,string"`
+
+	// CreateTime: The time of the deal creation.
+	// @OutputOnly
+	CreateTime string `json:"createTime,omitempty"`
+
+	// CreativePreApprovalPolicy: Specifies the creative pre-approval
+	// policy.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "CREATIVE_PRE_APPROVAL_POLICY_UNSPECIFIED" - A placeholder for an
+	// undefined creative pre-approval policy.
+	//   "SELLER_PRE_APPROVAL_REQUIRED" - The seller needs to approve each
+	// creative before it can serve.
+	//   "SELLER_PRE_APPROVAL_NOT_REQUIRED" - The seller does not need to
+	// approve each creative before it can serve.
+	CreativePreApprovalPolicy string `json:"creativePreApprovalPolicy,omitempty"`
+
+	// CreativeRestrictions: Restricitions about the creatives associated
+	// with the deal (i.e. size)
+	// This is available for Programmatic Guaranteed/Preferred Deals in
+	// DFP.
+	// @OutputOnly
+	CreativeRestrictions *CreativeRestrictions `json:"creativeRestrictions,omitempty"`
+
+	// CreativeSafeFrameCompatibility: Specifies whether the creative is
+	// safeFrame compatible.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "CREATIVE_SAFE_FRAME_COMPATIBILITY_UNSPECIFIED" - A placeholder for
+	// an undefined creative safe-frame compatibility.
+	//   "COMPATIBLE" - The creatives need to be compatible with the safe
+	// frame option.
+	//   "INCOMPATIBLE" - The creatives can be incompatible with the safe
+	// frame option.
+	CreativeSafeFrameCompatibility string `json:"creativeSafeFrameCompatibility,omitempty"`
+
+	// DealId: A unique deal ID for the deal (server-assigned).
+	// @OutputOnly
+	DealId string `json:"dealId,omitempty"`
+
+	// DealServingMetadata: Metadata about the serving status of this
+	// deal.
+	// @OutputOnly
+	DealServingMetadata *DealServingMetadata `json:"dealServingMetadata,omitempty"`
+
+	// DealTerms: The negotiable terms of the deal.
+	DealTerms *DealTerms `json:"dealTerms,omitempty"`
+
+	// 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.
+	DeliveryControl *DeliveryControl `json:"deliveryControl,omitempty"`
+
+	// Description: Description for the deal terms.
+	Description string `json:"description,omitempty"`
+
+	// DisplayName: The name of the deal.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// ExternalDealId: The external deal ID assigned to this deal once the
+	// deal is finalized.
+	// This is the deal ID that shows up in serving/reporting
+	// etc.
+	// @OutputOnly
+	ExternalDealId string `json:"externalDealId,omitempty"`
+
+	// IsSetupComplete: True, if the buyside inventory setup is complete for
+	// this deal.
+	// @OutputOnly
+	IsSetupComplete bool `json:"isSetupComplete,omitempty"`
+
+	// ProgrammaticCreativeSource: Specifies the creative source for
+	// programmatic deals. PUBLISHER means
+	// creative is provided by seller and ADVERTISER means creative
+	// is
+	// provided by buyer.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "PROGRAMMATIC_CREATIVE_SOURCE_UNSPECIFIED" - A placeholder for an
+	// undefined programmatic creative source.
+	//   "ADVERTISER" - The advertiser provides the creatives.
+	//   "PUBLISHER" - The publisher provides the creatives to be served.
+	ProgrammaticCreativeSource string `json:"programmaticCreativeSource,omitempty"`
+
+	// ProposalId: ID of the proposal that this deal is part of.
+	// @OutputOnly
+	ProposalId string `json:"proposalId,omitempty"`
+
+	// SellerContacts: Seller contact information for the deal.
+	// @OutputOnly
+	SellerContacts []*ContactInformation `json:"sellerContacts,omitempty"`
+
+	// SyndicationProduct: The syndication product associated with the
+	// deal.
+	//
+	// Note: This field may be set only when creating the resource.
+	// Modifying
+	// this field while updating the resource will result in an error.
+	//
+	// Possible values:
+	//   "SYNDICATION_PRODUCT_UNSPECIFIED" - A placeholder for an undefined
+	// syndication product.
+	//   "CONTENT" - This typically represents a web page.
+	//   "MOBILE" - This represents a mobile property.
+	//   "VIDEO" - This represents video ad formats.
+	//   "GAMES" - This represents ads shown within games.
+	SyndicationProduct string `json:"syndicationProduct,omitempty"`
+
+	// Targeting: Specifies the subset of inventory targeted by the
+	// deal.
+	// @OutputOnly
+	Targeting *MarketplaceTargeting `json:"targeting,omitempty"`
+
+	// TargetingCriterion: The shared targeting visible to buyers and
+	// sellers. Each shared
+	// targeting entity is AND'd together.
+	TargetingCriterion []*TargetingCriteria `json:"targetingCriterion,omitempty"`
+
+	// UpdateTime: The time when the deal was last updated.
+	// @OutputOnly
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// WebPropertyCode: The web property code for the seller copied over
+	// from the product.
+	WebPropertyCode string `json:"webPropertyCode,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AvailableEndTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AvailableEndTime") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Deal) MarshalJSON() ([]byte, error) {
+	type NoMethod Deal
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// DealPauseStatus: Tracks which parties (if any) have paused a
+// deal.
+// The deal is considered paused if either hasBuyerPaused
+// or
+// hasSellPaused is true.
+type DealPauseStatus struct {
+	// BuyerPauseReason: The buyer's reason for pausing, if the buyer paused
+	// the deal.
+	BuyerPauseReason string `json:"buyerPauseReason,omitempty"`
+
+	// FirstPausedBy: The role of the person who first paused this deal.
+	//
+	// Possible values:
+	//   "BUYER_SELLER_ROLE_UNSPECIFIED" - A placeholder for an undefined
+	// buyer/seller role.
+	//   "BUYER" - Specifies the role as buyer.
+	//   "SELLER" - Specifies the role as seller.
+	FirstPausedBy string `json:"firstPausedBy,omitempty"`
+
+	// HasBuyerPaused: True, if the buyer has paused the deal unilaterally.
+	HasBuyerPaused bool `json:"hasBuyerPaused,omitempty"`
+
+	// HasSellerPaused: True, if the seller has paused the deal
+	// unilaterally.
+	HasSellerPaused bool `json:"hasSellerPaused,omitempty"`
+
+	// SellerPauseReason: The seller's reason for pausing, if the seller
+	// paused the deal.
+	SellerPauseReason string `json:"sellerPauseReason,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BuyerPauseReason") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BuyerPauseReason") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *DealPauseStatus) MarshalJSON() ([]byte, error) {
+	type NoMethod DealPauseStatus
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// DealServingMetadata: Message captures metadata about the serving
+// status of a deal.
+type DealServingMetadata struct {
+	// DealPauseStatus: Tracks which parties (if any) have paused a
+	// deal.
+	// @OutputOnly
+	DealPauseStatus *DealPauseStatus `json:"dealPauseStatus,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DealPauseStatus") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DealPauseStatus") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *DealServingMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod DealServingMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// DealTerms: The deal terms specify the details of a Product/deal. They
+// specify things
+// like price per buyer, the type of pricing model (e.g., fixed price,
+// auction)
+// and expected impressions from the publisher.
+type DealTerms struct {
+	// BrandingType: Visibility of the URL in bid requests. (default:
+	// BRANDED)
+	//
+	// Possible values:
+	//   "BRANDING_TYPE_UNSPECIFIED" - A placeholder for an undefined
+	// branding type.
+	//   "BRANDED" - Full URL is included in bid requests.
+	//   "SEMI_TRANSPARENT" - A TopLevelDomain or masked URL is sent in bid
+	// requests
+	// rather than the full one.
+	BrandingType string `json:"brandingType,omitempty"`
+
+	// Description: Publisher provided description for the terms.
+	Description string `json:"description,omitempty"`
+
+	// EstimatedGrossSpend: Non-binding estimate of the estimated gross
+	// spend for this deal.
+	// Can be set by buyer or seller.
+	EstimatedGrossSpend *Price `json:"estimatedGrossSpend,omitempty"`
+
+	// EstimatedImpressionsPerDay: Non-binding estimate of the impressions
+	// served per day.
+	// Can be set by buyer or seller.
+	EstimatedImpressionsPerDay int64 `json:"estimatedImpressionsPerDay,omitempty,string"`
+
+	// GuaranteedFixedPriceTerms: The terms for guaranteed fixed price
+	// deals.
+	GuaranteedFixedPriceTerms *GuaranteedFixedPriceTerms `json:"guaranteedFixedPriceTerms,omitempty"`
+
+	// NonGuaranteedAuctionTerms: The terms for non-guaranteed auction
+	// deals.
+	NonGuaranteedAuctionTerms *NonGuaranteedAuctionTerms `json:"nonGuaranteedAuctionTerms,omitempty"`
+
+	// NonGuaranteedFixedPriceTerms: The terms for non-guaranteed fixed
+	// price deals.
+	NonGuaranteedFixedPriceTerms *NonGuaranteedFixedPriceTerms `json:"nonGuaranteedFixedPriceTerms,omitempty"`
+
+	// SellerTimeZone: The time zone name. For deals with Cost Per Day
+	// billing, defines the
+	// time zone used to mark the boundaries of a day. It should be an
+	// IANA TZ name, such as "America/Los_Angeles". For more
+	// information,
+	// see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
+	SellerTimeZone string `json:"sellerTimeZone,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BrandingType") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BrandingType") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *DealTerms) MarshalJSON() ([]byte, error) {
+	type NoMethod DealTerms
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// DeliveryControl: Message contains details about how the deals will be
+// paced.
+type DeliveryControl struct {
+	// CreativeBlockingLevel: Specified the creative blocking levels to be
+	// applied.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "CREATIVE_BLOCKING_LEVEL_UNSPECIFIED" - A placeholder for an
+	// undefined creative blocking level.
+	//   "PUBLISHER_BLOCKING_RULES" - Publisher blocking rules will be
+	// applied.
+	//   "ADX_POLICY_BLOCKING_ONLY" - The Ad Exchange policy blocking rules
+	// will be applied.
+	CreativeBlockingLevel string `json:"creativeBlockingLevel,omitempty"`
+
+	// DeliveryRateType: Specifies how the impression delivery will be
+	// paced.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "DELIVERY_RATE_TYPE_UNSPECIFIED" - A placeholder for an undefined
+	// delivery rate type.
+	//   "EVENLY" - Impressions are served uniformly over the life of the
+	// deal.
+	//   "FRONT_LOADED" - Impressions are served front-loaded.
+	//   "AS_FAST_AS_POSSIBLE" - Impressions are served as fast as possible.
+	DeliveryRateType string `json:"deliveryRateType,omitempty"`
+
+	// FrequencyCaps: Specifies any frequency caps.
+	// @OutputOnly
+	FrequencyCaps []*FrequencyCap `json:"frequencyCaps,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "CreativeBlockingLevel") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CreativeBlockingLevel") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *DeliveryControl) MarshalJSON() ([]byte, error) {
+	type NoMethod DeliveryControl
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Disapproval: @OutputOnly The reason and details for a disapproval.
 type Disapproval struct {
 	// Details: Additional details about the reason for disapproval.
@@ -1925,6 +2875,141 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// FirstPartyMobileApplicationTargeting: Represents a list of targeted
+// and excluded mobile application IDs that
+// publishers own.
+// Mobile application IDs are from App Store and Google Play
+// Store.
+// Android App ID, for example, com.google.android.apps.maps, can be
+// found in
+// Google Play Store URL.
+// iOS App ID (which is a number) can be found at the end of iTunes
+// store URL.
+// First party mobile applications is either included or excluded.
+type FirstPartyMobileApplicationTargeting struct {
+	// ExcludedAppIds: A list of application IDs to be excluded.
+	ExcludedAppIds []string `json:"excludedAppIds,omitempty"`
+
+	// TargetedAppIds: A list of application IDs to be included.
+	TargetedAppIds []string `json:"targetedAppIds,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExcludedAppIds") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ExcludedAppIds") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *FirstPartyMobileApplicationTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod FirstPartyMobileApplicationTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// FrequencyCap: Frequency cap.
+type FrequencyCap struct {
+	// MaxImpressions: The maximum number of impressions that can be served
+	// to a user within the
+	// specified time period.
+	MaxImpressions int64 `json:"maxImpressions,omitempty"`
+
+	// NumTimeUnits: The amount of time, in the units specified by
+	// time_unit_type. Defines the
+	// amount of time over which impressions per user are counted and
+	// capped.
+	NumTimeUnits int64 `json:"numTimeUnits,omitempty"`
+
+	// TimeUnitType: The time unit. Along with num_time_units defines the
+	// amount of time over
+	// which impressions per user are counted and capped.
+	//
+	// Possible values:
+	//   "TIME_UNIT_TYPE_UNSPECIFIED" - A placeholder for an undefined time
+	// unit type. This just indicates the
+	// variable with this value hasn't been initialized.
+	//   "MINUTE" - Minute
+	//   "HOUR" - Hour
+	//   "DAY" - Day
+	//   "WEEK" - Week
+	//   "MONTH" - Month
+	//   "LIFETIME" - Lifetime
+	TimeUnitType string `json:"timeUnitType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MaxImpressions") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "MaxImpressions") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *FrequencyCap) MarshalJSON() ([]byte, error) {
+	type NoMethod FrequencyCap
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GuaranteedFixedPriceTerms: Terms for Programmatic Guaranteed Deals.
+type GuaranteedFixedPriceTerms struct {
+	// FixedPrices: Fixed price for the specified buyer.
+	FixedPrices []*PricePerBuyer `json:"fixedPrices,omitempty"`
+
+	// GuaranteedImpressions: Guaranteed impressions as a percentage. This
+	// is the percentage
+	// of guaranteed looks that the buyer is guaranteeing to buy.
+	GuaranteedImpressions int64 `json:"guaranteedImpressions,omitempty,string"`
+
+	// GuaranteedLooks: Count of guaranteed looks. Required for deal,
+	// optional for product.
+	GuaranteedLooks int64 `json:"guaranteedLooks,omitempty,string"`
+
+	// MinimumDailyLooks: Daily minimum looks for CPD deal types.
+	MinimumDailyLooks int64 `json:"minimumDailyLooks,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "FixedPrices") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FixedPrices") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GuaranteedFixedPriceTerms) MarshalJSON() ([]byte, error) {
+	type NoMethod GuaranteedFixedPriceTerms
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // HtmlContent: HTML content for a creative.
 type HtmlContent struct {
 	// Height: The height of the HTML snippet in pixels.
@@ -2055,6 +3140,45 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// InventorySizeTargeting: Represents the size of an ad unit that can be
+// targeted on an ad
+// request. It only applies to Private Auction, AdX Preferred Deals
+// and
+// Auction Packages. This targeting does not apply to Programmatic
+// Guaranteed
+// and Preferred Deals in DFP.
+type InventorySizeTargeting struct {
+	// ExcludedInventorySizes: A list of inventory sizes to be excluded.
+	ExcludedInventorySizes []*AdSize `json:"excludedInventorySizes,omitempty"`
+
+	// TargetedInventorySizes: A list of inventory sizes to be included.
+	TargetedInventorySizes []*AdSize `json:"targetedInventorySizes,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ExcludedInventorySizes") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ExcludedInventorySizes")
+	// to include in API requests with the JSON null value. By default,
+	// fields with empty values are omitted from API requests. However, any
+	// field with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *InventorySizeTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod InventorySizeTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // ListBidMetricsResponse: Response message for listing the metrics that
 // are measured in number of bids.
 type ListBidMetricsResponse struct {
@@ -2770,6 +3894,115 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ListProductsResponse: Response message for listing products visible
+// to the buyer.
+type ListProductsResponse struct {
+	// NextPageToken: List pagination support.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Products: The list of matching products at their head revision
+	// number.
+	Products []*Product `json:"products,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListProductsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListProductsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListProposalsResponse: Response message for listing proposals.
+type ListProposalsResponse struct {
+	// NextPageToken: Continuation token for fetching the next page of
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Proposals: The list of proposals.
+	Proposals []*Proposal `json:"proposals,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListProposalsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListProposalsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListPublisherProfilesResponse: Response message for profiles visible
+// to the buyer.
+type ListPublisherProfilesResponse struct {
+	// NextPageToken: List pagination support
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// PublisherProfiles: The list of matching publisher profiles.
+	PublisherProfiles []*PublisherProfile `json:"publisherProfiles,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListPublisherProfilesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListPublisherProfilesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // LocationContext: @OutputOnly The Geo criteria the restriction applies
 // to.
 type LocationContext struct {
@@ -2806,6 +4039,55 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// MarketplaceTargeting: Targeting represents different criteria that
+// can be used by advertisers to
+// target ad inventory. For example, they can choose to target ad
+// requests only
+// if the user is in the US.
+// Multiple types of targeting are always applied as a logical AND,
+// unless noted
+// otherwise.
+type MarketplaceTargeting struct {
+	// GeoTargeting: Geo criteria IDs to be included/excluded.
+	GeoTargeting *CriteriaTargeting `json:"geoTargeting,omitempty"`
+
+	// InventorySizeTargeting: Inventory sizes to be included/excluded.
+	InventorySizeTargeting *InventorySizeTargeting `json:"inventorySizeTargeting,omitempty"`
+
+	// PlacementTargeting: Placement targeting information, e.g. URL, mobile
+	// applications.
+	PlacementTargeting *PlacementTargeting `json:"placementTargeting,omitempty"`
+
+	// TechnologyTargeting: Technology targeting information, e.g. operating
+	// system, device category.
+	TechnologyTargeting *TechnologyTargeting `json:"technologyTargeting,omitempty"`
+
+	// VideoTargeting: Video targeting information.
+	VideoTargeting *VideoTargeting `json:"videoTargeting,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "GeoTargeting") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "GeoTargeting") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *MarketplaceTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod MarketplaceTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // MetricValue: A metric value, with an expected value and a variance;
 // represents a count
 // that may be either exact or estimated (i.e. when sampled).
@@ -2850,6 +4132,79 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// MobileApplicationTargeting: Mobile application targeting settings.
+type MobileApplicationTargeting struct {
+	// FirstPartyTargeting: Publisher owned apps to be targeted or excluded
+	// by the publisher to
+	// display the ads in.
+	FirstPartyTargeting *FirstPartyMobileApplicationTargeting `json:"firstPartyTargeting,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FirstPartyTargeting")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FirstPartyTargeting") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *MobileApplicationTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod MobileApplicationTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Money: Represents an amount of money with its currency type.
+type Money struct {
+	// CurrencyCode: The 3-letter currency code defined in ISO 4217.
+	CurrencyCode string `json:"currencyCode,omitempty"`
+
+	// Nanos: Number of nano (10^-9) units of the amount.
+	// The value must be between -999,999,999 and +999,999,999 inclusive.
+	// If `units` is positive, `nanos` must be positive or zero.
+	// If `units` is zero, `nanos` can be positive, zero, or negative.
+	// If `units` is negative, `nanos` must be negative or zero.
+	// For example $-1.75 is represented as `units`=-1 and
+	// `nanos`=-750,000,000.
+	Nanos int64 `json:"nanos,omitempty"`
+
+	// Units: The whole units of the amount.
+	// For example if `currencyCode` is "USD", then 1 unit is one US
+	// dollar.
+	Units int64 `json:"units,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CurrencyCode") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Money) MarshalJSON() ([]byte, error) {
+	type NoMethod Money
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // NativeContent: Native content for a creative.
 type NativeContent struct {
 	// AdvertiserName: The name of the advertiser or sponsor, to be
@@ -2982,6 +4337,240 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// NonGuaranteedAuctionTerms: Terms for Private Auctions. Note that
+// Private Auctions can be created only
+// by the seller, but they can be returned in a get or list request.
+type NonGuaranteedAuctionTerms struct {
+	// AutoOptimizePrivateAuction: True if open auction buyers are allowed
+	// to compete with invited buyers
+	// in this private auction.
+	AutoOptimizePrivateAuction bool `json:"autoOptimizePrivateAuction,omitempty"`
+
+	// ReservePricesPerBuyer: Reserve price for the specified buyer.
+	ReservePricesPerBuyer []*PricePerBuyer `json:"reservePricesPerBuyer,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AutoOptimizePrivateAuction") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g.
+	// "AutoOptimizePrivateAuction") to include in API requests with the
+	// JSON null value. By default, fields with empty values are omitted
+	// from API requests. However, any field with an empty value appearing
+	// in NullFields will be sent to the server as null. It is an error if a
+	// field in this list has a non-empty value. This may be used to include
+	// null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *NonGuaranteedAuctionTerms) MarshalJSON() ([]byte, error) {
+	type NoMethod NonGuaranteedAuctionTerms
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// NonGuaranteedFixedPriceTerms: Terms for Preferred Deals. Note that
+// Preferred Deals cannot be created via
+// the API at this time, but can be returned in a get or list request.
+type NonGuaranteedFixedPriceTerms struct {
+	// FixedPrices: Fixed price for the specified buyer.
+	FixedPrices []*PricePerBuyer `json:"fixedPrices,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FixedPrices") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FixedPrices") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *NonGuaranteedFixedPriceTerms) MarshalJSON() ([]byte, error) {
+	type NoMethod NonGuaranteedFixedPriceTerms
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Note: A proposal may be associated to several notes.
+type Note struct {
+	// CreateTime: The timestamp for when this note was created.
+	// @OutputOnly
+	CreateTime string `json:"createTime,omitempty"`
+
+	// CreatorRole: The role of the person (buyer/seller) creating the
+	// note.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "BUYER_SELLER_ROLE_UNSPECIFIED" - A placeholder for an undefined
+	// buyer/seller role.
+	//   "BUYER" - Specifies the role as buyer.
+	//   "SELLER" - Specifies the role as seller.
+	CreatorRole string `json:"creatorRole,omitempty"`
+
+	// Note: The actual note to attach.
+	// (max-length: 1024 unicode code units)
+	//
+	// Note: This field may be set only when creating the resource.
+	// Modifying
+	// this field while updating the resource will result in an error.
+	Note string `json:"note,omitempty"`
+
+	// NoteId: The unique ID for the note.
+	// @OutputOnly
+	NoteId string `json:"noteId,omitempty"`
+
+	// ProposalRevision: The revision number of the proposal when the note
+	// is created.
+	// @OutputOnly
+	ProposalRevision int64 `json:"proposalRevision,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CreateTime") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Note) MarshalJSON() ([]byte, error) {
+	type NoMethod Note
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// OperatingSystemTargeting: Represents targeting information for
+// operating systems.
+type OperatingSystemTargeting struct {
+	// OperatingSystemCriteria: IDs of operating systems to be
+	// included/excluded.
+	OperatingSystemCriteria *CriteriaTargeting `json:"operatingSystemCriteria,omitempty"`
+
+	// OperatingSystemVersionCriteria: IDs of operating system versions to
+	// be included/excluded.
+	OperatingSystemVersionCriteria *CriteriaTargeting `json:"operatingSystemVersionCriteria,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "OperatingSystemCriteria") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "OperatingSystemCriteria")
+	// to include in API requests with the JSON null value. By default,
+	// fields with empty values are omitted from API requests. However, any
+	// field with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *OperatingSystemTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod OperatingSystemTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PauseProposalRequest: Request message to pause serving for an
+// already-finalized proposal.
+type PauseProposalRequest struct {
+	// Reason: The reason why the proposal is being paused.
+	// This human readable message will be displayed in the seller's
+	// UI.
+	// (Max length: 100 unicode code units.)
+	Reason string `json:"reason,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Reason") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Reason") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *PauseProposalRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod PauseProposalRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PlacementTargeting: Represents targeting about where the ads can
+// appear, e.g. certain sites or
+// mobile applications.
+// Different placement targeting types will be logically OR'ed.
+type PlacementTargeting struct {
+	// MobileApplicationTargeting: Mobile application targeting information
+	// in a deal.
+	// This doesn't apply to Auction Packages.
+	MobileApplicationTargeting *MobileApplicationTargeting `json:"mobileApplicationTargeting,omitempty"`
+
+	// UrlTargeting: URLs to be included/excluded.
+	UrlTargeting *UrlTargeting `json:"urlTargeting,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "MobileApplicationTargeting") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g.
+	// "MobileApplicationTargeting") to include in API requests with the
+	// JSON null value. By default, fields with empty values are omitted
+	// from API requests. However, any field with an empty value appearing
+	// in NullFields will be sent to the server as null. It is an error if a
+	// field in this list has a non-empty value. This may be used to include
+	// null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *PlacementTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod PlacementTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // PlatformContext: @OutputOnly The type of platform the restriction
 // applies to.
 type PlatformContext struct {
@@ -3016,6 +4605,497 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Price: Represents a price and a pricing type for a product / deal.
+type Price struct {
+	// Amount: The actual price with currency specified.
+	Amount *Money `json:"amount,omitempty"`
+
+	// PricingType: The pricing type for the deal/product. (default: CPM)
+	//
+	// Possible values:
+	//   "PRICING_TYPE_UNSPECIFIED" - A placeholder for an undefined pricing
+	// type. If the pricing type is
+	// unpsecified, `COST_PER_MILLE` will be used instead.
+	//   "COST_PER_MILLE" - Cost per thousand impressions.
+	//   "COST_PER_DAY" - Cost per day
+	PricingType string `json:"pricingType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Amount") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Amount") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Price) MarshalJSON() ([]byte, error) {
+	type NoMethod Price
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PricePerBuyer: Used to specify pricing rules for buyers/advertisers.
+// Each PricePerBuyer in
+// a product can become 0 or 1 deals. To check if there is a
+// PricePerBuyer for
+// a particular buyer or buyer/advertiser pair, we look for the most
+// specific
+// matching rule - we first look for a rule matching the buyer and
+// advertiser,
+// next a rule with the buyer but an empty advertiser list, and
+// otherwise look
+// for a matching rule where no buyer is set.
+type PricePerBuyer struct {
+	// AdvertiserIds: The list of advertisers for this price when associated
+	// with this buyer.
+	// If empty, all advertisers with this buyer pay this price.
+	AdvertiserIds []string `json:"advertiserIds,omitempty"`
+
+	// Buyer: The buyer who will pay this price. If unset, all buyers can
+	// pay this price
+	// (if the
+	// advertisers match, and there's no more specific rule matching the
+	// buyer).
+	Buyer *Buyer `json:"buyer,omitempty"`
+
+	// Price: The specified price.
+	Price *Price `json:"price,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AdvertiserIds") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AdvertiserIds") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *PricePerBuyer) MarshalJSON() ([]byte, error) {
+	type NoMethod PricePerBuyer
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PrivateData: Buyers are allowed to store certain types of private
+// data in a proposal/deal.
+type PrivateData struct {
+	// ReferenceId: A buyer or seller specified reference ID. This can be
+	// queried in the list
+	// operations (max-length: 1024 unicode code units).
+	ReferenceId string `json:"referenceId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ReferenceId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ReferenceId") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *PrivateData) MarshalJSON() ([]byte, error) {
+	type NoMethod PrivateData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Product: Note: this resource requires whitelisting for access. Please
+// contact your
+// account manager for access to Marketplace resources.
+//
+// A product is a segment of inventory that a seller wishes to sell. It
+// is
+// associated with certain terms and targeting information which helps
+// the buyer
+// know more about the inventory.
+type Product struct {
+	// AvailableEndTime: The proposed end time for the deal. The field will
+	// be truncated to the order of
+	// seconds during serving.
+	AvailableEndTime string `json:"availableEndTime,omitempty"`
+
+	// AvailableStartTime: Inventory availability dates. The start time will
+	// be truncated to seconds during serving.
+	// Thus, a field specified as 3:23:34.456 (HH:mm:ss.SSS) will be
+	// truncated to 3:23:34
+	// when serving.
+	AvailableStartTime string `json:"availableStartTime,omitempty"`
+
+	// CreateTime: Creation time.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// CreatorContacts: Optional contact information for the creator of this
+	// product.
+	CreatorContacts []*ContactInformation `json:"creatorContacts,omitempty"`
+
+	// DisplayName: The display name for this product as set by the seller.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// HasCreatorSignedOff: If the creator has already signed off on the
+	// product, then the buyer can
+	// finalize the deal by accepting the product as is. When copying to
+	// a
+	// proposal, if any of the terms are changed, then auto_finalize
+	// is
+	// automatically set to false.
+	HasCreatorSignedOff bool `json:"hasCreatorSignedOff,omitempty"`
+
+	// ProductId: The unique ID for the product.
+	ProductId string `json:"productId,omitempty"`
+
+	// ProductRevision: The revision number of the product. (auto-assigned
+	// by marketplace)
+	ProductRevision int64 `json:"productRevision,omitempty,string"`
+
+	// PublisherProfileId: An ID which can be used by the Publisher Profile
+	// API to get more
+	// information about the seller that created this product.
+	PublisherProfileId string `json:"publisherProfileId,omitempty"`
+
+	// Seller: Information about the seller that created this product.
+	Seller *Seller `json:"seller,omitempty"`
+
+	// SyndicationProduct: The syndication product associated with the deal.
+	//
+	// Possible values:
+	//   "SYNDICATION_PRODUCT_UNSPECIFIED" - A placeholder for an undefined
+	// syndication product.
+	//   "CONTENT" - This typically represents a web page.
+	//   "MOBILE" - This represents a mobile property.
+	//   "VIDEO" - This represents video ad formats.
+	//   "GAMES" - This represents ads shown within games.
+	SyndicationProduct string `json:"syndicationProduct,omitempty"`
+
+	// TargetingCriterion: Targeting that is shared between the buyer and
+	// the seller. Each targeting
+	// criterion has a specified key and for each key there is a list of
+	// inclusion
+	// value or exclusion values.
+	TargetingCriterion []*TargetingCriteria `json:"targetingCriterion,omitempty"`
+
+	// Terms: The negotiable terms of the deal.
+	Terms *DealTerms `json:"terms,omitempty"`
+
+	// UpdateTime: Time of last update.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// WebPropertyCode: The web-property code for the seller. This needs to
+	// be copied as is when
+	// adding a new deal to a proposal.
+	WebPropertyCode string `json:"webPropertyCode,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AvailableEndTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AvailableEndTime") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Product) MarshalJSON() ([]byte, error) {
+	type NoMethod Product
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Proposal: Note: this resource requires whitelisting for access.
+// Please contact your
+// account manager for access to Marketplace resources.
+//
+// Represents a proposal in the marketplace. A proposal is the unit
+// of
+// negotiation between a seller and a buyer and contains deals which
+// are served.
+//
+// Note: you can not update, create, or otherwise modify Private
+// Auction or Preferred Deals deals through the API.
+//
+// Fields are updatable unless noted otherwise.
+type Proposal struct {
+	// BilledBuyer: Reference to the buyer that will get billed for this
+	// proposal.
+	// @OutputOnly
+	BilledBuyer *Buyer `json:"billedBuyer,omitempty"`
+
+	// Buyer: Reference to the buyer on the proposal.
+	//
+	// Note: This field may be set only when creating the resource.
+	// Modifying
+	// this field while updating the resource will result in an error.
+	Buyer *Buyer `json:"buyer,omitempty"`
+
+	// BuyerContacts: Contact information for the buyer.
+	BuyerContacts []*ContactInformation `json:"buyerContacts,omitempty"`
+
+	// BuyerPrivateData: Private data for buyer. (hidden from seller).
+	BuyerPrivateData *PrivateData `json:"buyerPrivateData,omitempty"`
+
+	// Deals: The deals associated with this proposal. For Private Auction
+	// proposals (whose deals have
+	// NonGuaranteedAuctionTerms), there will only be one deal.
+	Deals []*Deal `json:"deals,omitempty"`
+
+	// DisplayName: The name for the proposal.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// IsRenegotiating: True if the proposal is being
+	// renegotiated.
+	// @OutputOnly
+	IsRenegotiating bool `json:"isRenegotiating,omitempty"`
+
+	// IsSetupComplete: True, if the buyside inventory setup is complete for
+	// this proposal.
+	// @OutputOnly
+	IsSetupComplete bool `json:"isSetupComplete,omitempty"`
+
+	// LastUpdaterOrCommentorRole: The role of the last user that either
+	// updated the proposal or left a
+	// comment.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "BUYER_SELLER_ROLE_UNSPECIFIED" - A placeholder for an undefined
+	// buyer/seller role.
+	//   "BUYER" - Specifies the role as buyer.
+	//   "SELLER" - Specifies the role as seller.
+	LastUpdaterOrCommentorRole string `json:"lastUpdaterOrCommentorRole,omitempty"`
+
+	// Notes: The notes associated with this proposal.
+	// @OutputOnly
+	Notes []*Note `json:"notes,omitempty"`
+
+	// OriginatorRole: Indicates whether the buyer/seller created the
+	// proposal.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "BUYER_SELLER_ROLE_UNSPECIFIED" - A placeholder for an undefined
+	// buyer/seller role.
+	//   "BUYER" - Specifies the role as buyer.
+	//   "SELLER" - Specifies the role as seller.
+	OriginatorRole string `json:"originatorRole,omitempty"`
+
+	// PrivateAuctionId: Private auction ID if this proposal is a private
+	// auction proposal.
+	// @OutputOnly
+	PrivateAuctionId string `json:"privateAuctionId,omitempty"`
+
+	// ProposalId: The unique ID of the proposal.
+	// @OutputOnly
+	ProposalId string `json:"proposalId,omitempty"`
+
+	// ProposalRevision: The revision number for the proposal.
+	// Each update to the proposal or the deal causes the proposal revision
+	// number
+	// to auto-increment. The buyer keeps track of the last revision number
+	// they
+	// know of and pass it in when making an update. If the head revision
+	// number
+	// on the server has since incremented, then an ABORTED error is
+	// returned
+	// during the update operation to let the buyer know that a subsequent
+	// update
+	// was made.
+	// @OutputOnly
+	ProposalRevision int64 `json:"proposalRevision,omitempty,string"`
+
+	// ProposalState: The current state of the proposal.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "PROPOSAL_STATE_UNSPECIFIED" - A placeholder for an undefined
+	// proposal state.
+	//   "PROPOSED" - The proposal is under negotiation or renegotiation.
+	//   "BUYER_ACCEPTED" - The proposal has been accepted by the buyer.
+	//   "SELLER_ACCEPTED" - The proposal has been accepted by the seller.
+	//   "CANCELED" - The negotiations on the proposal were canceled and the
+	// proposal was never
+	// finalized.
+	//   "FINALIZED" - The proposal is finalized. During renegotiation, the
+	// proposal may
+	// not be in this state.
+	ProposalState string `json:"proposalState,omitempty"`
+
+	// Seller: Reference to the seller on the proposal.
+	//
+	// Note: This field may be set only when creating the resource.
+	// Modifying
+	// this field while updating the resource will result in an error.
+	Seller *Seller `json:"seller,omitempty"`
+
+	// SellerContacts: Contact information for the seller.
+	// @OutputOnly
+	SellerContacts []*ContactInformation `json:"sellerContacts,omitempty"`
+
+	// UpdateTime: The time when the proposal was last revised.
+	// @OutputOnly
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "BilledBuyer") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BilledBuyer") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Proposal) MarshalJSON() ([]byte, error) {
+	type NoMethod Proposal
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PublisherProfile: Note: this resource requires whitelisting for
+// access. Please contact your
+// account manager for access to Marketplace resources.
+//
+// Represents a publisher profile in Marketplace.
+//
+// All fields are read only. All string fields are free-form text
+// entered by the publisher
+// unless noted otherwise.
+type PublisherProfile struct {
+	// AudienceDescription: Description on the publisher's audience.
+	AudienceDescription string `json:"audienceDescription,omitempty"`
+
+	// BuyerPitchStatement: Statement explaining what's unique about
+	// publisher's business, and why buyers should
+	// partner with the publisher.
+	BuyerPitchStatement string `json:"buyerPitchStatement,omitempty"`
+
+	// DirectDealsContact: Contact information for direct reservation deals.
+	// This is free text entered by the publisher
+	// and may include information like names, phone numbers and email
+	// addresses.
+	DirectDealsContact string `json:"directDealsContact,omitempty"`
+
+	// DisplayName: Name of the publisher profile.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Domains: The list of domains represented in this publisher profile.
+	// Empty if this is a parent profile.
+	// These are top private domains, meaning that these will not contain a
+	// string like
+	// "photos.google.co.uk/123", but will instead contain "google.co.uk".
+	Domains []string `json:"domains,omitempty"`
+
+	// GooglePlusUrl: URL to publisher's Google+ page.
+	GooglePlusUrl string `json:"googlePlusUrl,omitempty"`
+
+	// LogoUrl: A Google public URL to the logo for this publisher profile.
+	// The logo is stored as
+	// a PNG, JPG, or GIF image.
+	LogoUrl string `json:"logoUrl,omitempty"`
+
+	// MediaKitUrl: URL to additional marketing and sales materials.
+	MediaKitUrl string `json:"mediaKitUrl,omitempty"`
+
+	// Overview: Overview of the publisher.
+	Overview string `json:"overview,omitempty"`
+
+	// ProgrammaticDealsContact: Contact information for programmatic deals.
+	// This is free text entered by the publisher
+	// and may include information like names, phone numbers and email
+	// addresses.
+	ProgrammaticDealsContact string `json:"programmaticDealsContact,omitempty"`
+
+	// PublisherProfileId: Unique ID for publisher profile.
+	PublisherProfileId string `json:"publisherProfileId,omitempty"`
+
+	// RateCardInfoUrl: URL to a publisher rate card.
+	RateCardInfoUrl string `json:"rateCardInfoUrl,omitempty"`
+
+	// SamplePageUrl: URL to a sample content page.
+	SamplePageUrl string `json:"samplePageUrl,omitempty"`
+
+	// Seller: Seller of the publisher profile.
+	Seller *Seller `json:"seller,omitempty"`
+
+	// TopHeadlines: Up to three key metrics and rankings. Max 100
+	// characters each.
+	// For example "#1 Mobile News Site for 20 Straight Months".
+	TopHeadlines []string `json:"topHeadlines,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AudienceDescription")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AudienceDescription") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *PublisherProfile) MarshalJSON() ([]byte, error) {
+	type NoMethod PublisherProfile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // RealtimeTimeRange: An open-ended realtime time range specified by the
 // start timestamp.
 // For filter sets that specify a realtime time range RTB metrics
@@ -3159,6 +5239,12 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ResumeProposalRequest: Request message to resume (unpause) serving
+// for an already-finalized
+// proposal.
+type ResumeProposalRequest struct {
+}
+
 // RowDimensions: A response may include multiple rows, breaking down
 // along various dimensions.
 // Encapsulates the values of all dimensions for a given row.
@@ -3222,6 +5308,41 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Seller: Represents a seller of inventory. Each seller is identified
+// by a unique
+// Ad Exchange account ID.
+type Seller struct {
+	// AccountId: The unique ID for the seller. The seller fills in this
+	// field.
+	// The seller account ID is then available to buyer in the product.
+	AccountId string `json:"accountId,omitempty"`
+
+	// SubAccountId: Optional sub-account ID for the seller.
+	SubAccountId string `json:"subAccountId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AccountId") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Seller) MarshalJSON() ([]byte, error) {
+	type NoMethod Seller
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // ServingContext: The serving context for this restriction.
 type ServingContext struct {
 	// All: Matches all contexts.
@@ -3332,11 +5453,176 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Size: Message depicting the size of the creative. The units of width
+// and
+// height depend on the type of the targeting.
+type Size struct {
+	// Height: The height of the creative.
+	Height int64 `json:"height,omitempty"`
+
+	// Width: The width of the creative
+	Width int64 `json:"width,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Height") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Height") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Size) MarshalJSON() ([]byte, error) {
+	type NoMethod Size
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // StopWatchingCreativeRequest: A request for stopping notifications for
 // changes to creative Status.
 type StopWatchingCreativeRequest struct {
 }
 
+// TargetingCriteria: Advertisers can target different attributes of an
+// ad slot. For example,
+// they can choose to show ads only if the user is in the U.S.
+// Such
+// targeting criteria can be specified as part of Shared Targeting.
+type TargetingCriteria struct {
+	// Exclusions: The list of values to exclude from targeting. Each value
+	// is AND'd
+	// together.
+	Exclusions []*TargetingValue `json:"exclusions,omitempty"`
+
+	// Inclusions: The list of value to include as part of the targeting.
+	// Each value is OR'd
+	// together.
+	Inclusions []*TargetingValue `json:"inclusions,omitempty"`
+
+	// Key: The key representing the shared targeting criterion.
+	// Targeting criteria defined by Google ad servers will begin with
+	// GOOG_.
+	// Third parties may define their own keys.
+	// A list of permissible keys along with the acceptable values will
+	// be
+	// provided as part of the external documentation.
+	Key string `json:"key,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Exclusions") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Exclusions") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetingCriteria) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetingCriteria
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TargetingValue: A polymorphic targeting value used as part of Shared
+// Targeting.
+type TargetingValue struct {
+	// CreativeSizeValue: The creative size value to include/exclude.
+	// Filled in when key = GOOG_CREATIVE_SIZE
+	CreativeSizeValue *CreativeSize `json:"creativeSizeValue,omitempty"`
+
+	// DayPartTargetingValue: The daypart targeting to include /
+	// exclude.
+	// Filled in when the key is GOOG_DAYPART_TARGETING.
+	// The definition of this targeting is derived from the structure
+	// used by DFP.
+	DayPartTargetingValue *DayPartTargeting `json:"dayPartTargetingValue,omitempty"`
+
+	// LongValue: The long value to include/exclude.
+	LongValue int64 `json:"longValue,omitempty,string"`
+
+	// StringValue: The string value to include/exclude.
+	StringValue string `json:"stringValue,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeSizeValue")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CreativeSizeValue") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetingValue) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetingValue
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TechnologyTargeting: Represents targeting about various types of
+// technology.
+type TechnologyTargeting struct {
+	// DeviceCapabilityTargeting: IDs of device capabilities to be
+	// included/excluded.
+	DeviceCapabilityTargeting *CriteriaTargeting `json:"deviceCapabilityTargeting,omitempty"`
+
+	// DeviceCategoryTargeting: IDs of device categories to be
+	// included/excluded.
+	DeviceCategoryTargeting *CriteriaTargeting `json:"deviceCategoryTargeting,omitempty"`
+
+	// OperatingSystemTargeting: Operating system related targeting
+	// information.
+	OperatingSystemTargeting *OperatingSystemTargeting `json:"operatingSystemTargeting,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "DeviceCapabilityTargeting") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g.
+	// "DeviceCapabilityTargeting") to include in API requests with the JSON
+	// null value. By default, fields with empty values are omitted from API
+	// requests. However, any field with an empty value appearing in
+	// NullFields will be sent to the server as null. It is an error if a
+	// field in this list has a non-empty value. This may be used to include
+	// null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TechnologyTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod TechnologyTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // TimeInterval: An interval of time, with an absolute start and end.
 type TimeInterval struct {
 	// EndTime: The timestamp marking the end of the range (exclusive) for
@@ -3372,6 +5658,90 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// TimeOfDay: Represents a time of day. The date and time zone are
+// either not significant
+// or are specified elsewhere. An API may choose to allow leap seconds.
+// Related
+// types are google.type.Date and `google.protobuf.Timestamp`.
+type TimeOfDay struct {
+	// Hours: Hours of day in 24 hour format. Should be from 0 to 23. An API
+	// may choose
+	// to allow the value "24:00:00" for scenarios like business closing
+	// time.
+	Hours int64 `json:"hours,omitempty"`
+
+	// Minutes: Minutes of hour of day. Must be from 0 to 59.
+	Minutes int64 `json:"minutes,omitempty"`
+
+	// Nanos: Fractions of seconds in nanoseconds. Must be from 0 to
+	// 999,999,999.
+	Nanos int64 `json:"nanos,omitempty"`
+
+	// Seconds: Seconds of minutes of the time. Must normally be from 0 to
+	// 59. An API may
+	// allow the value 60 if it allows leap-seconds.
+	Seconds int64 `json:"seconds,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Hours") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Hours") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TimeOfDay) MarshalJSON() ([]byte, error) {
+	type NoMethod TimeOfDay
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// UrlTargeting: Represents a list of targeted and excluded URLs (e.g
+// google.com).
+// For Private Auction and AdX Preferred Deals, URLs are either included
+// or
+// excluded.
+// For DFP Programmatic Guaranteed and Preferred Deals, this doesn't
+// apply.
+type UrlTargeting struct {
+	// ExcludedUrls: A list of URLs to be excluded.
+	ExcludedUrls []string `json:"excludedUrls,omitempty"`
+
+	// TargetedUrls: A list of URLs to be included.
+	TargetedUrls []string `json:"targetedUrls,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExcludedUrls") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ExcludedUrls") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UrlTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod UrlTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // VideoContent: Video content for a creative.
 type VideoContent struct {
 	// VideoUrl: The URL to fetch a video ad.
@@ -3404,6 +5774,58 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// VideoTargeting: Represents targeting information about video.
+type VideoTargeting struct {
+	// ExcludedPositionTypes: A list of video positions to be
+	// excluded.
+	// Position types can either be included or excluded (XOR).
+	//
+	// Possible values:
+	//   "POSITION_TYPE_UNSPECIFIED" - A placeholder for an undefined video
+	// position.
+	//   "PREROLL" - Ad is played before the video.
+	//   "MIDROLL" - Ad is played during the video.
+	//   "POSTROLL" - Ad is played after the video.
+	ExcludedPositionTypes []string `json:"excludedPositionTypes,omitempty"`
+
+	// TargetedPositionTypes: A list of video positions to be included.
+	// When the included list is present, the excluded list must be
+	// empty.
+	// When the excluded list is present, the included list must be empty.
+	//
+	// Possible values:
+	//   "POSITION_TYPE_UNSPECIFIED" - A placeholder for an undefined video
+	// position.
+	//   "PREROLL" - Ad is played before the video.
+	//   "MIDROLL" - Ad is played during the video.
+	//   "POSTROLL" - Ad is played after the video.
+	TargetedPositionTypes []string `json:"targetedPositionTypes,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ExcludedPositionTypes") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ExcludedPositionTypes") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *VideoTargeting) MarshalJSON() ([]byte, error) {
+	type NoMethod VideoTargeting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // WatchCreativeRequest: A request for watching changes to creative
 // Status.
 type WatchCreativeRequest struct {
@@ -6609,6 +9031,2535 @@
 
 }
 
+// method id "adexchangebuyer2.accounts.finalizedProposals.list":
+
+type AccountsFinalizedProposalsListCall struct {
+	s            *Service
+	accountId    string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List finalized proposals, regardless if a proposal is being
+// renegotiated.
+// A filter expression (PQL query) may be specified to filter the
+// results.
+// The notes will not be returned.
+func (r *AccountsFinalizedProposalsService) List(accountId string) *AccountsFinalizedProposalsListCall {
+	c := &AccountsFinalizedProposalsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	return c
+}
+
+// Filter sets the optional parameter "filter": An optional PQL filter
+// query used to query for proposals.
+//
+// Nested repeated fields, such as
+// proposal.deals.targetingCriterion,
+// cannot be filtered.
+func (c *AccountsFinalizedProposalsListCall) Filter(filter string) *AccountsFinalizedProposalsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// FilterSyntax sets the optional parameter "filterSyntax": Syntax the
+// filter is written in. Current implementation defaults to PQL
+// but in the future it will be LIST_FILTER.
+//
+// Possible values:
+//   "FILTER_SYNTAX_UNSPECIFIED"
+//   "PQL"
+//   "LIST_FILTER"
+func (c *AccountsFinalizedProposalsListCall) FilterSyntax(filterSyntax string) *AccountsFinalizedProposalsListCall {
+	c.urlParams_.Set("filterSyntax", filterSyntax)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Requested page size.
+// The server may return fewer results than requested.
+// If unspecified, the server will pick an appropriate default.
+func (c *AccountsFinalizedProposalsListCall) PageSize(pageSize int64) *AccountsFinalizedProposalsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The page token as
+// returned from ListProposalsResponse.
+func (c *AccountsFinalizedProposalsListCall) PageToken(pageToken string) *AccountsFinalizedProposalsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsFinalizedProposalsListCall) Fields(s ...googleapi.Field) *AccountsFinalizedProposalsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsFinalizedProposalsListCall) IfNoneMatch(entityTag string) *AccountsFinalizedProposalsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsFinalizedProposalsListCall) Context(ctx context.Context) *AccountsFinalizedProposalsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsFinalizedProposalsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsFinalizedProposalsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/finalizedProposals")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId": c.accountId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.finalizedProposals.list" call.
+// Exactly one of *ListProposalsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListProposalsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountsFinalizedProposalsListCall) Do(opts ...googleapi.CallOption) (*ListProposalsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListProposalsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "List finalized proposals, regardless if a proposal is being renegotiated.\nA filter expression (PQL query) may be specified to filter the results.\nThe notes will not be returned.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/finalizedProposals",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer2.accounts.finalizedProposals.list",
+	//   "parameterOrder": [
+	//     "accountId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "filter": {
+	//       "description": "An optional PQL filter query used to query for proposals.\n\nNested repeated fields, such as proposal.deals.targetingCriterion,\ncannot be filtered.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "filterSyntax": {
+	//       "description": "Syntax the filter is written in. Current implementation defaults to PQL\nbut in the future it will be LIST_FILTER.",
+	//       "enum": [
+	//         "FILTER_SYNTAX_UNSPECIFIED",
+	//         "PQL",
+	//         "LIST_FILTER"
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The page token as returned from ListProposalsResponse.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/finalizedProposals",
+	//   "response": {
+	//     "$ref": "ListProposalsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AccountsFinalizedProposalsListCall) Pages(ctx context.Context, f func(*ListProposalsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "adexchangebuyer2.accounts.products.get":
+
+type AccountsProductsGetCall struct {
+	s            *Service
+	accountId    string
+	productId    string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the requested product by ID.
+func (r *AccountsProductsService) Get(accountId string, productId string) *AccountsProductsGetCall {
+	c := &AccountsProductsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.productId = productId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProductsGetCall) Fields(s ...googleapi.Field) *AccountsProductsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsProductsGetCall) IfNoneMatch(entityTag string) *AccountsProductsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProductsGetCall) Context(ctx context.Context) *AccountsProductsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProductsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProductsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/products/{productId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId": c.accountId,
+		"productId": c.productId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.products.get" call.
+// Exactly one of *Product or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Product.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *AccountsProductsGetCall) Do(opts ...googleapi.CallOption) (*Product, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Product{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the requested product by ID.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/products/{productId}",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer2.accounts.products.get",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "productId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "productId": {
+	//       "description": "The ID for the product to get the head revision for.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/products/{productId}",
+	//   "response": {
+	//     "$ref": "Product"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.products.list":
+
+type AccountsProductsListCall struct {
+	s            *Service
+	accountId    string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List all products visible to the buyer (optionally filtered by
+// the
+// specified PQL query).
+func (r *AccountsProductsService) List(accountId string) *AccountsProductsListCall {
+	c := &AccountsProductsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	return c
+}
+
+// Filter sets the optional parameter "filter": An optional PQL query
+// used to query for products.
+// See
+// https://developers.google.com/doubleclick-publishers/docs/pqlrefer
+// ence
+// for documentation about PQL and examples.
+//
+// Nested repeated fields, such as
+// product.targetingCriterion.inclusions,
+// cannot be filtered.
+func (c *AccountsProductsListCall) Filter(filter string) *AccountsProductsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Requested page size.
+// The server may return fewer results than requested.
+// If unspecified, the server will pick an appropriate default.
+func (c *AccountsProductsListCall) PageSize(pageSize int64) *AccountsProductsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The page token as
+// returned from ListProductsResponse.
+func (c *AccountsProductsListCall) PageToken(pageToken string) *AccountsProductsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProductsListCall) Fields(s ...googleapi.Field) *AccountsProductsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsProductsListCall) IfNoneMatch(entityTag string) *AccountsProductsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProductsListCall) Context(ctx context.Context) *AccountsProductsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProductsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProductsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/products")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId": c.accountId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.products.list" call.
+// Exactly one of *ListProductsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListProductsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountsProductsListCall) Do(opts ...googleapi.CallOption) (*ListProductsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListProductsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "List all products visible to the buyer (optionally filtered by the\nspecified PQL query).",
+	//   "flatPath": "v2beta1/accounts/{accountId}/products",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer2.accounts.products.list",
+	//   "parameterOrder": [
+	//     "accountId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "filter": {
+	//       "description": "An optional PQL query used to query for products. See\nhttps://developers.google.com/doubleclick-publishers/docs/pqlreference\nfor documentation about PQL and examples.\n\nNested repeated fields, such as product.targetingCriterion.inclusions,\ncannot be filtered.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The page token as returned from ListProductsResponse.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/products",
+	//   "response": {
+	//     "$ref": "ListProductsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AccountsProductsListCall) Pages(ctx context.Context, f func(*ListProductsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "adexchangebuyer2.accounts.proposals.accept":
+
+type AccountsProposalsAcceptCall struct {
+	s                     *Service
+	accountId             string
+	proposalId            string
+	acceptproposalrequest *AcceptProposalRequest
+	urlParams_            gensupport.URLParams
+	ctx_                  context.Context
+	header_               http.Header
+}
+
+// Accept: Mark the proposal as accepted at the given revision number.
+// If the number
+// does not match the server's revision number an `ABORTED` error
+// message will
+// be returned. This call updates the proposal_state from `PROPOSED`
+// to
+// `BUYER_ACCEPTED`, or from `SELLER_ACCEPTED` to `FINALIZED`.
+func (r *AccountsProposalsService) Accept(accountId string, proposalId string, acceptproposalrequest *AcceptProposalRequest) *AccountsProposalsAcceptCall {
+	c := &AccountsProposalsAcceptCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposalId = proposalId
+	c.acceptproposalrequest = acceptproposalrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsAcceptCall) Fields(s ...googleapi.Field) *AccountsProposalsAcceptCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsAcceptCall) Context(ctx context.Context) *AccountsProposalsAcceptCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsAcceptCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsAcceptCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.acceptproposalrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals/{proposalId}:accept")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":  c.accountId,
+		"proposalId": c.proposalId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.accept" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AccountsProposalsAcceptCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Mark the proposal as accepted at the given revision number. If the number\ndoes not match the server's revision number an `ABORTED` error message will\nbe returned. This call updates the proposal_state from `PROPOSED` to\n`BUYER_ACCEPTED`, or from `SELLER_ACCEPTED` to `FINALIZED`.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:accept",
+	//   "httpMethod": "POST",
+	//   "id": "adexchangebuyer2.accounts.proposals.accept",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "proposalId": {
+	//       "description": "The ID of the proposal to accept.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:accept",
+	//   "request": {
+	//     "$ref": "AcceptProposalRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.proposals.addNote":
+
+type AccountsProposalsAddNoteCall struct {
+	s              *Service
+	accountId      string
+	proposalId     string
+	addnoterequest *AddNoteRequest
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+	header_        http.Header
+}
+
+// AddNote: Create a new note and attach it to the proposal. The note is
+// assigned
+// a unique ID by the server.
+// The proposal revision number will not increase when associated with
+// a
+// new note.
+func (r *AccountsProposalsService) AddNote(accountId string, proposalId string, addnoterequest *AddNoteRequest) *AccountsProposalsAddNoteCall {
+	c := &AccountsProposalsAddNoteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposalId = proposalId
+	c.addnoterequest = addnoterequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsAddNoteCall) Fields(s ...googleapi.Field) *AccountsProposalsAddNoteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsAddNoteCall) Context(ctx context.Context) *AccountsProposalsAddNoteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsAddNoteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsAddNoteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.addnoterequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals/{proposalId}:addNote")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":  c.accountId,
+		"proposalId": c.proposalId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.addNote" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AccountsProposalsAddNoteCall) Do(opts ...googleapi.CallOption) (*Note, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Note{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Create a new note and attach it to the proposal. The note is assigned\na unique ID by the server.\nThe proposal revision number will not increase when associated with a\nnew note.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:addNote",
+	//   "httpMethod": "POST",
+	//   "id": "adexchangebuyer2.accounts.proposals.addNote",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "proposalId": {
+	//       "description": "The ID of the proposal to attach the note to.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:addNote",
+	//   "request": {
+	//     "$ref": "AddNoteRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.proposals.cancelNegotiation":
+
+type AccountsProposalsCancelNegotiationCall struct {
+	s                        *Service
+	accountId                string
+	proposalId               string
+	cancelnegotiationrequest *CancelNegotiationRequest
+	urlParams_               gensupport.URLParams
+	ctx_                     context.Context
+	header_                  http.Header
+}
+
+// CancelNegotiation: Cancel an ongoing negotiation on a proposal. This
+// does not cancel or end
+// serving for the deals if the proposal has been finalized, but only
+// cancels
+// a negotiation unilaterally.
+func (r *AccountsProposalsService) CancelNegotiation(accountId string, proposalId string, cancelnegotiationrequest *CancelNegotiationRequest) *AccountsProposalsCancelNegotiationCall {
+	c := &AccountsProposalsCancelNegotiationCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposalId = proposalId
+	c.cancelnegotiationrequest = cancelnegotiationrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsCancelNegotiationCall) Fields(s ...googleapi.Field) *AccountsProposalsCancelNegotiationCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsCancelNegotiationCall) Context(ctx context.Context) *AccountsProposalsCancelNegotiationCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsCancelNegotiationCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsCancelNegotiationCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.cancelnegotiationrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals/{proposalId}:cancelNegotiation")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":  c.accountId,
+		"proposalId": c.proposalId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.cancelNegotiation" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AccountsProposalsCancelNegotiationCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Cancel an ongoing negotiation on a proposal. This does not cancel or end\nserving for the deals if the proposal has been finalized, but only cancels\na negotiation unilaterally.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:cancelNegotiation",
+	//   "httpMethod": "POST",
+	//   "id": "adexchangebuyer2.accounts.proposals.cancelNegotiation",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "proposalId": {
+	//       "description": "The ID of the proposal to cancel negotiation for.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:cancelNegotiation",
+	//   "request": {
+	//     "$ref": "CancelNegotiationRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.proposals.completeSetup":
+
+type AccountsProposalsCompleteSetupCall struct {
+	s                    *Service
+	accountId            string
+	proposalId           string
+	completesetuprequest *CompleteSetupRequest
+	urlParams_           gensupport.URLParams
+	ctx_                 context.Context
+	header_              http.Header
+}
+
+// CompleteSetup: Update the given proposal to indicate that setup has
+// been completed.
+// This method is called by the buyer when the line items have been
+// created
+// on their end for a finalized proposal and all the required
+// creatives
+// have been uploaded using the creatives API. This call updates
+// the
+// `is_setup_completed` bit on the proposal and also notifies the
+// seller.
+// The server will advance the revision number of the most recent
+// proposal.
+func (r *AccountsProposalsService) CompleteSetup(accountId string, proposalId string, completesetuprequest *CompleteSetupRequest) *AccountsProposalsCompleteSetupCall {
+	c := &AccountsProposalsCompleteSetupCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposalId = proposalId
+	c.completesetuprequest = completesetuprequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsCompleteSetupCall) Fields(s ...googleapi.Field) *AccountsProposalsCompleteSetupCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsCompleteSetupCall) Context(ctx context.Context) *AccountsProposalsCompleteSetupCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsCompleteSetupCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsCompleteSetupCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.completesetuprequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals/{proposalId}:completeSetup")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":  c.accountId,
+		"proposalId": c.proposalId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.completeSetup" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AccountsProposalsCompleteSetupCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Update the given proposal to indicate that setup has been completed.\nThis method is called by the buyer when the line items have been created\non their end for a finalized proposal and all the required creatives\nhave been uploaded using the creatives API. This call updates the\n`is_setup_completed` bit on the proposal and also notifies the seller.\nThe server will advance the revision number of the most recent proposal.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:completeSetup",
+	//   "httpMethod": "POST",
+	//   "id": "adexchangebuyer2.accounts.proposals.completeSetup",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "proposalId": {
+	//       "description": "The ID of the proposal to mark as setup completed.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:completeSetup",
+	//   "request": {
+	//     "$ref": "CompleteSetupRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.proposals.create":
+
+type AccountsProposalsCreateCall struct {
+	s          *Service
+	accountId  string
+	proposal   *Proposal
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Create the given proposal. Each created proposal and any
+// deals it contains
+// are assigned a unique ID by the server.
+func (r *AccountsProposalsService) Create(accountId string, proposal *Proposal) *AccountsProposalsCreateCall {
+	c := &AccountsProposalsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposal = proposal
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsCreateCall) Fields(s ...googleapi.Field) *AccountsProposalsCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsCreateCall) Context(ctx context.Context) *AccountsProposalsCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.proposal)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId": c.accountId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.create" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AccountsProposalsCreateCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Create the given proposal. Each created proposal and any deals it contains\nare assigned a unique ID by the server.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals",
+	//   "httpMethod": "POST",
+	//   "id": "adexchangebuyer2.accounts.proposals.create",
+	//   "parameterOrder": [
+	//     "accountId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals",
+	//   "request": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.proposals.get":
+
+type AccountsProposalsGetCall struct {
+	s            *Service
+	accountId    string
+	proposalId   string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a proposal given its ID. The proposal is returned at its
+// head
+// revision.
+func (r *AccountsProposalsService) Get(accountId string, proposalId string) *AccountsProposalsGetCall {
+	c := &AccountsProposalsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposalId = proposalId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsGetCall) Fields(s ...googleapi.Field) *AccountsProposalsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsProposalsGetCall) IfNoneMatch(entityTag string) *AccountsProposalsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsGetCall) Context(ctx context.Context) *AccountsProposalsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals/{proposalId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":  c.accountId,
+		"proposalId": c.proposalId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.get" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AccountsProposalsGetCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a proposal given its ID. The proposal is returned at its head\nrevision.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer2.accounts.proposals.get",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "proposalId": {
+	//       "description": "The unique ID of the proposal",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}",
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.proposals.list":
+
+type AccountsProposalsListCall struct {
+	s            *Service
+	accountId    string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List proposals. A filter expression (PQL query) may be
+// specified to
+// filter the results. To retrieve all finalized proposals, regardless
+// if a
+// proposal is being renegotiated, see the FinalizedProposals
+// resource.
+// Note that Bidder/ChildSeat relationships differ from the usual
+// behavior.
+// A Bidder account can only see its child seats' proposals by
+// specifying
+// the ChildSeat's accountId in the request path.
+func (r *AccountsProposalsService) List(accountId string) *AccountsProposalsListCall {
+	c := &AccountsProposalsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	return c
+}
+
+// Filter sets the optional parameter "filter": An optional PQL filter
+// query used to query for proposals.
+//
+// Nested repeated fields, such as
+// proposal.deals.targetingCriterion,
+// cannot be filtered.
+func (c *AccountsProposalsListCall) Filter(filter string) *AccountsProposalsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// FilterSyntax sets the optional parameter "filterSyntax": Syntax the
+// filter is written in. Current implementation defaults to PQL
+// but in the future it will be LIST_FILTER.
+//
+// Possible values:
+//   "FILTER_SYNTAX_UNSPECIFIED"
+//   "PQL"
+//   "LIST_FILTER"
+func (c *AccountsProposalsListCall) FilterSyntax(filterSyntax string) *AccountsProposalsListCall {
+	c.urlParams_.Set("filterSyntax", filterSyntax)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Requested page size.
+// The server may return fewer results than requested.
+// If unspecified, the server will pick an appropriate default.
+func (c *AccountsProposalsListCall) PageSize(pageSize int64) *AccountsProposalsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The page token as
+// returned from ListProposalsResponse.
+func (c *AccountsProposalsListCall) PageToken(pageToken string) *AccountsProposalsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsListCall) Fields(s ...googleapi.Field) *AccountsProposalsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsProposalsListCall) IfNoneMatch(entityTag string) *AccountsProposalsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsListCall) Context(ctx context.Context) *AccountsProposalsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId": c.accountId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.list" call.
+// Exactly one of *ListProposalsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListProposalsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountsProposalsListCall) Do(opts ...googleapi.CallOption) (*ListProposalsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListProposalsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "List proposals. A filter expression (PQL query) may be specified to\nfilter the results. To retrieve all finalized proposals, regardless if a\nproposal is being renegotiated, see the FinalizedProposals resource.\nNote that Bidder/ChildSeat relationships differ from the usual behavior.\nA Bidder account can only see its child seats' proposals by specifying\nthe ChildSeat's accountId in the request path.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer2.accounts.proposals.list",
+	//   "parameterOrder": [
+	//     "accountId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "filter": {
+	//       "description": "An optional PQL filter query used to query for proposals.\n\nNested repeated fields, such as proposal.deals.targetingCriterion,\ncannot be filtered.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "filterSyntax": {
+	//       "description": "Syntax the filter is written in. Current implementation defaults to PQL\nbut in the future it will be LIST_FILTER.",
+	//       "enum": [
+	//         "FILTER_SYNTAX_UNSPECIFIED",
+	//         "PQL",
+	//         "LIST_FILTER"
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The page token as returned from ListProposalsResponse.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals",
+	//   "response": {
+	//     "$ref": "ListProposalsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AccountsProposalsListCall) Pages(ctx context.Context, f func(*ListProposalsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "adexchangebuyer2.accounts.proposals.pause":
+
+type AccountsProposalsPauseCall struct {
+	s                    *Service
+	accountId            string
+	proposalId           string
+	pauseproposalrequest *PauseProposalRequest
+	urlParams_           gensupport.URLParams
+	ctx_                 context.Context
+	header_              http.Header
+}
+
+// Pause: Update the given proposal to pause serving.
+// This method will set
+// the
+// `DealServingMetadata.DealPauseStatus.has_buyer_paused` bit to true
+// for all
+// deals in the proposal.
+//
+// It is a no-op to pause an already-paused proposal.
+// It is an error to call PauseProposal for a proposal that is
+// not
+// finalized or renegotiating.
+func (r *AccountsProposalsService) Pause(accountId string, proposalId string, pauseproposalrequest *PauseProposalRequest) *AccountsProposalsPauseCall {
+	c := &AccountsProposalsPauseCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposalId = proposalId
+	c.pauseproposalrequest = pauseproposalrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsPauseCall) Fields(s ...googleapi.Field) *AccountsProposalsPauseCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsPauseCall) Context(ctx context.Context) *AccountsProposalsPauseCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsPauseCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsPauseCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.pauseproposalrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals/{proposalId}:pause")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":  c.accountId,
+		"proposalId": c.proposalId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.pause" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AccountsProposalsPauseCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Update the given proposal to pause serving.\nThis method will set the\n`DealServingMetadata.DealPauseStatus.has_buyer_paused` bit to true for all\ndeals in the proposal.\n\nIt is a no-op to pause an already-paused proposal.\nIt is an error to call PauseProposal for a proposal that is not\nfinalized or renegotiating.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:pause",
+	//   "httpMethod": "POST",
+	//   "id": "adexchangebuyer2.accounts.proposals.pause",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "proposalId": {
+	//       "description": "The ID of the proposal to pause.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:pause",
+	//   "request": {
+	//     "$ref": "PauseProposalRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.proposals.resume":
+
+type AccountsProposalsResumeCall struct {
+	s                     *Service
+	accountId             string
+	proposalId            string
+	resumeproposalrequest *ResumeProposalRequest
+	urlParams_            gensupport.URLParams
+	ctx_                  context.Context
+	header_               http.Header
+}
+
+// Resume: Update the given proposal to resume serving.
+// This method will set
+// the
+// `DealServingMetadata.DealPauseStatus.has_buyer_paused` bit to false
+// for all
+// deals in the proposal.
+//
+// Note that if the `has_seller_paused` bit is also set, serving will
+// not
+// resume until the seller also resumes.
+//
+// It is a no-op to resume an already-running proposal.
+// It is an error to call ResumeProposal for a proposal that is
+// not
+// finalized or renegotiating.
+func (r *AccountsProposalsService) Resume(accountId string, proposalId string, resumeproposalrequest *ResumeProposalRequest) *AccountsProposalsResumeCall {
+	c := &AccountsProposalsResumeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposalId = proposalId
+	c.resumeproposalrequest = resumeproposalrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsResumeCall) Fields(s ...googleapi.Field) *AccountsProposalsResumeCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsResumeCall) Context(ctx context.Context) *AccountsProposalsResumeCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsResumeCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsResumeCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.resumeproposalrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals/{proposalId}:resume")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":  c.accountId,
+		"proposalId": c.proposalId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.resume" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AccountsProposalsResumeCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Update the given proposal to resume serving.\nThis method will set the\n`DealServingMetadata.DealPauseStatus.has_buyer_paused` bit to false for all\ndeals in the proposal.\n\nNote that if the `has_seller_paused` bit is also set, serving will not\nresume until the seller also resumes.\n\nIt is a no-op to resume an already-running proposal.\nIt is an error to call ResumeProposal for a proposal that is not\nfinalized or renegotiating.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}:resume",
+	//   "httpMethod": "POST",
+	//   "id": "adexchangebuyer2.accounts.proposals.resume",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "proposalId": {
+	//       "description": "The ID of the proposal to resume.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}:resume",
+	//   "request": {
+	//     "$ref": "ResumeProposalRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.proposals.update":
+
+type AccountsProposalsUpdateCall struct {
+	s          *Service
+	accountId  string
+	proposalId string
+	proposal   *Proposal
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Update: Update the given proposal at the client known revision
+// number. If the
+// server revision has advanced since the
+// passed-in
+// `proposal.proposal_revision`, an `ABORTED` error message will be
+// returned.
+// Only the buyer-modifiable fields of the proposal will be
+// updated.
+//
+// Note that the deals in the proposal will be updated to match the
+// passed-in
+// copy.
+// If a passed-in deal does not have a `deal_id`, the server will assign
+// a new
+// unique ID and create the deal.
+// If passed-in deal has a `deal_id`, it will be updated to match
+// the
+// passed-in copy.
+// Any existing deals not present in the passed-in proposal will be
+// deleted.
+// It is an error to pass in a deal with a `deal_id` not present at
+// head.
+func (r *AccountsProposalsService) Update(accountId string, proposalId string, proposal *Proposal) *AccountsProposalsUpdateCall {
+	c := &AccountsProposalsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.proposalId = proposalId
+	c.proposal = proposal
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsProposalsUpdateCall) Fields(s ...googleapi.Field) *AccountsProposalsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsProposalsUpdateCall) Context(ctx context.Context) *AccountsProposalsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsProposalsUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsProposalsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.proposal)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/proposals/{proposalId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":  c.accountId,
+		"proposalId": c.proposalId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.proposals.update" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AccountsProposalsUpdateCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Update the given proposal at the client known revision number. If the\nserver revision has advanced since the passed-in\n`proposal.proposal_revision`, an `ABORTED` error message will be returned.\nOnly the buyer-modifiable fields of the proposal will be updated.\n\nNote that the deals in the proposal will be updated to match the passed-in\ncopy.\nIf a passed-in deal does not have a `deal_id`, the server will assign a new\nunique ID and create the deal.\nIf passed-in deal has a `deal_id`, it will be updated to match the\npassed-in copy.\nAny existing deals not present in the passed-in proposal will be deleted.\nIt is an error to pass in a deal with a `deal_id` not present at head.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/proposals/{proposalId}",
+	//   "httpMethod": "PUT",
+	//   "id": "adexchangebuyer2.accounts.proposals.update",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "proposalId": {
+	//       "description": "The unique ID of the proposal.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/proposals/{proposalId}",
+	//   "request": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.publisherProfiles.get":
+
+type AccountsPublisherProfilesGetCall struct {
+	s                  *Service
+	accountId          string
+	publisherProfileId string
+	urlParams_         gensupport.URLParams
+	ifNoneMatch_       string
+	ctx_               context.Context
+	header_            http.Header
+}
+
+// Get: Gets the requested publisher profile by id.
+func (r *AccountsPublisherProfilesService) Get(accountId string, publisherProfileId string) *AccountsPublisherProfilesGetCall {
+	c := &AccountsPublisherProfilesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	c.publisherProfileId = publisherProfileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsPublisherProfilesGetCall) Fields(s ...googleapi.Field) *AccountsPublisherProfilesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsPublisherProfilesGetCall) IfNoneMatch(entityTag string) *AccountsPublisherProfilesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsPublisherProfilesGetCall) Context(ctx context.Context) *AccountsPublisherProfilesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsPublisherProfilesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsPublisherProfilesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/publisherProfiles/{publisherProfileId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId":          c.accountId,
+		"publisherProfileId": c.publisherProfileId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.publisherProfiles.get" call.
+// Exactly one of *PublisherProfile or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *PublisherProfile.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountsPublisherProfilesGetCall) Do(opts ...googleapi.CallOption) (*PublisherProfile, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PublisherProfile{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the requested publisher profile by id.",
+	//   "flatPath": "v2beta1/accounts/{accountId}/publisherProfiles/{publisherProfileId}",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer2.accounts.publisherProfiles.get",
+	//   "parameterOrder": [
+	//     "accountId",
+	//     "publisherProfileId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "publisherProfileId": {
+	//       "description": "The id for the publisher profile to get.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/publisherProfiles/{publisherProfileId}",
+	//   "response": {
+	//     "$ref": "PublisherProfile"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer2.accounts.publisherProfiles.list":
+
+type AccountsPublisherProfilesListCall struct {
+	s            *Service
+	accountId    string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List all publisher profiles visible to the buyer
+func (r *AccountsPublisherProfilesService) List(accountId string) *AccountsPublisherProfilesListCall {
+	c := &AccountsPublisherProfilesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.accountId = accountId
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Specify the number
+// of results to include per page.
+func (c *AccountsPublisherProfilesListCall) PageSize(pageSize int64) *AccountsPublisherProfilesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The page token as
+// return from ListPublisherProfilesResponse.
+func (c *AccountsPublisherProfilesListCall) PageToken(pageToken string) *AccountsPublisherProfilesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsPublisherProfilesListCall) Fields(s ...googleapi.Field) *AccountsPublisherProfilesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsPublisherProfilesListCall) IfNoneMatch(entityTag string) *AccountsPublisherProfilesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsPublisherProfilesListCall) Context(ctx context.Context) *AccountsPublisherProfilesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsPublisherProfilesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsPublisherProfilesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/accounts/{accountId}/publisherProfiles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"accountId": c.accountId,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "adexchangebuyer2.accounts.publisherProfiles.list" call.
+// Exactly one of *ListPublisherProfilesResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *ListPublisherProfilesResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountsPublisherProfilesListCall) Do(opts ...googleapi.CallOption) (*ListPublisherProfilesResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListPublisherProfilesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "List all publisher profiles visible to the buyer",
+	//   "flatPath": "v2beta1/accounts/{accountId}/publisherProfiles",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer2.accounts.publisherProfiles.list",
+	//   "parameterOrder": [
+	//     "accountId"
+	//   ],
+	//   "parameters": {
+	//     "accountId": {
+	//       "description": "Account ID of the buyer.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Specify the number of results to include per page.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The page token as return from ListPublisherProfilesResponse.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2beta1/accounts/{accountId}/publisherProfiles",
+	//   "response": {
+	//     "$ref": "ListPublisherProfilesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AccountsPublisherProfilesListCall) Pages(ctx context.Context, f func(*ListPublisherProfilesResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "adexchangebuyer2.bidders.accounts.filterSets.create":
 
 type BiddersAccountsFilterSetsCreateCall struct {
diff --git a/adexperiencereport/v1/adexperiencereport-api.json b/adexperiencereport/v1/adexperiencereport-api.json
index f6e9a3a..0a73c40 100644
--- a/adexperiencereport/v1/adexperiencereport-api.json
+++ b/adexperiencereport/v1/adexperiencereport-api.json
@@ -152,7 +152,7 @@
       }
     }
   },
-  "revision": "20180821",
+  "revision": "20180911",
   "rootUrl": "https://adexperiencereport.googleapis.com/",
   "schemas": {
     "PlatformSummary": {
@@ -234,7 +234,7 @@
       "type": "object"
     },
     "SiteSummaryResponse": {
-      "description": "Response message for GetSiteSummary.\nDo not confuse with same message in google.chrome.abusiveexperiencereport.v1",
+      "description": "Response message for GetSiteSummary.",
       "id": "SiteSummaryResponse",
       "properties": {
         "desktopSummary": {
diff --git a/adexperiencereport/v1/adexperiencereport-gen.go b/adexperiencereport/v1/adexperiencereport-gen.go
index 5122014..d2117c8 100644
--- a/adexperiencereport/v1/adexperiencereport-gen.go
+++ b/adexperiencereport/v1/adexperiencereport-gen.go
@@ -165,8 +165,6 @@
 }
 
 // SiteSummaryResponse: Response message for GetSiteSummary.
-// Do not confuse with same message in
-// google.chrome.abusiveexperiencereport.v1
 type SiteSummaryResponse struct {
 	// DesktopSummary: Summary for the desktop review of the site.
 	DesktopSummary *PlatformSummary `json:"desktopSummary,omitempty"`
diff --git a/admin/directory/v1/admin-api.json b/admin/directory/v1/admin-api.json
index 1a8c736..cb7d2dd 100644
--- a/admin/directory/v1/admin-api.json
+++ b/admin/directory/v1/admin-api.json
@@ -93,7 +93,7 @@
   "description": "Manages enterprise resources such as users and groups, administrative notifications, security features, and more.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/admin-sdk/directory/",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/Zp5udf3d_MSf3cProroao6vKvEo\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/bJY6yaK7IUjX9b18cnF3M_RjDj0\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -3969,6 +3969,7 @@
       }
     }
   },
+  "revision": "20180911",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Alias": {
@@ -4260,10 +4261,20 @@
           "type": "string"
         },
         "resourceId": {
+          "annotations": {
+            "required": [
+              "directory.resources.calendars.insert"
+            ]
+          },
           "description": "The unique ID for the calendar resource.",
           "type": "string"
         },
         "resourceName": {
+          "annotations": {
+            "required": [
+              "directory.resources.calendars.insert"
+            ]
+          },
           "description": "The name of the calendar resource. For example, \"Training Room 1A\".",
           "type": "string"
         },
@@ -5005,6 +5016,10 @@
       "description": "JSON template for Member resource in Directory API.",
       "id": "Member",
       "properties": {
+        "delivery_settings": {
+          "description": "Delivery settings of member",
+          "type": "string"
+        },
         "email": {
           "description": "Email of member (Read-only)",
           "type": "string"
@@ -5988,7 +6003,7 @@
           "type": "array"
         },
         "archived": {
-          "description": "Indicates if user is archived",
+          "description": "Indicates if user is archived.",
           "type": "boolean"
         },
         "changePasswordAtNextLogin": {
@@ -6155,7 +6170,7 @@
           "type": "any"
         },
         "suspended": {
-          "description": "Indicates if user is suspended",
+          "description": "Indicates if user is suspended.",
           "type": "boolean"
         },
         "suspensionReason": {
diff --git a/admin/directory/v1/admin-gen.go b/admin/directory/v1/admin-gen.go
index 6ac5dda..9ae8523 100644
--- a/admin/directory/v1/admin-gen.go
+++ b/admin/directory/v1/admin-gen.go
@@ -1951,6 +1951,9 @@
 
 // Member: JSON template for Member resource in Directory API.
 type Member struct {
+	// DeliverySettings: Delivery settings of member
+	DeliverySettings string `json:"delivery_settings,omitempty"`
+
 	// Email: Email of member (Read-only)
 	Email string `json:"email,omitempty"`
 
@@ -1978,7 +1981,7 @@
 	// server.
 	googleapi.ServerResponse `json:"-"`
 
-	// ForceSendFields is a list of field names (e.g. "Email") to
+	// ForceSendFields is a list of field names (e.g. "DeliverySettings") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -1986,12 +1989,13 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "Email") to include in API
-	// requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
+	// NullFields is a list of field names (e.g. "DeliverySettings") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
 	NullFields []string `json:"-"`
 }
 
@@ -3251,7 +3255,7 @@
 	// Aliases: List of aliases (Read-only)
 	Aliases []string `json:"aliases,omitempty"`
 
-	// Archived: Indicates if user is archived
+	// Archived: Indicates if user is archived.
 	Archived bool `json:"archived,omitempty"`
 
 	// ChangePasswordAtNextLogin: Boolean indicating if the user should
@@ -3349,7 +3353,7 @@
 
 	SshPublicKeys interface{} `json:"sshPublicKeys,omitempty"`
 
-	// Suspended: Indicates if user is suspended
+	// Suspended: Indicates if user is suspended.
 	Suspended bool `json:"suspended,omitempty"`
 
 	// SuspensionReason: Suspension reason if user is suspended (Read-only)
diff --git a/androidenterprise/v1/androidenterprise-api.json b/androidenterprise/v1/androidenterprise-api.json
index 5fcd786..2738c4c 100644
--- a/androidenterprise/v1/androidenterprise-api.json
+++ b/androidenterprise/v1/androidenterprise-api.json
@@ -15,7 +15,7 @@
   "description": "Manages the deployment of apps to Android for Work users.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/android/work/play/emm-api",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/roOgUwR1ccx3Sqc93zbrjsOcnYQ\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/vCaS2ioKmnec_iMjVAeARXNdtks\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -2758,6 +2758,7 @@
       }
     }
   },
+  "revision": "20180913",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Administrator": {
@@ -2806,6 +2807,62 @@
             "type": "string"
           },
           "type": "array"
+        },
+        "playSearch": {
+          "$ref": "AdministratorWebTokenSpecPlaySearch",
+          "description": "Options for displaying the Play Search page."
+        },
+        "privateApps": {
+          "$ref": "AdministratorWebTokenSpecPrivateApps",
+          "description": "Options for displaying the Private Apps page."
+        },
+        "storeBuilder": {
+          "$ref": "AdministratorWebTokenSpecStoreBuilder",
+          "description": "Options for displaying the Store Builder page."
+        },
+        "webApps": {
+          "$ref": "AdministratorWebTokenSpecWebApps",
+          "description": "Options for displaying the Web Apps page."
+        }
+      },
+      "type": "object"
+    },
+    "AdministratorWebTokenSpecPlaySearch": {
+      "id": "AdministratorWebTokenSpecPlaySearch",
+      "properties": {
+        "enabled": {
+          "description": "Whether the Play Search page is displayed. Default is true.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "AdministratorWebTokenSpecPrivateApps": {
+      "id": "AdministratorWebTokenSpecPrivateApps",
+      "properties": {
+        "enabled": {
+          "description": "Whether the Private Apps page is displayed. Default is true.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "AdministratorWebTokenSpecStoreBuilder": {
+      "id": "AdministratorWebTokenSpecStoreBuilder",
+      "properties": {
+        "enabled": {
+          "description": "Whether the Store Builder is be displayed. Default is true.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "AdministratorWebTokenSpecWebApps": {
+      "id": "AdministratorWebTokenSpecWebApps",
+      "properties": {
+        "enabled": {
+          "description": "Whether the Web Apps page is displayed. Default is true.",
+          "type": "boolean"
         }
       },
       "type": "object"
@@ -4245,7 +4302,7 @@
           "type": "string"
         },
         "link": {
-          "description": "Ordered list of pages a user should be able to reach from this page. The pages must exist, must not be this page, and once a link is created the page linked to cannot be deleted until all links to it are removed. It is recommended that the basic pages are created first, before adding the links between pages.\n\nNo attempt is made to verify that all pages are reachable from the homepage.",
+          "description": "Ordered list of pages a user should be able to reach from this page. The list can't include this page. It is recommended that the basic pages are created first, before adding the links between pages.\n\nThe API doesn't verify that the pages exist or the pages are reachable.",
           "items": {
             "type": "string"
           },
diff --git a/androidenterprise/v1/androidenterprise-gen.go b/androidenterprise/v1/androidenterprise-gen.go
index f1f6a4f..3290b34 100644
--- a/androidenterprise/v1/androidenterprise-gen.go
+++ b/androidenterprise/v1/androidenterprise-gen.go
@@ -339,6 +339,18 @@
 	// "approve" mode.
 	Permission []string `json:"permission,omitempty"`
 
+	// PlaySearch: Options for displaying the Play Search page.
+	PlaySearch *AdministratorWebTokenSpecPlaySearch `json:"playSearch,omitempty"`
+
+	// PrivateApps: Options for displaying the Private Apps page.
+	PrivateApps *AdministratorWebTokenSpecPrivateApps `json:"privateApps,omitempty"`
+
+	// StoreBuilder: Options for displaying the Store Builder page.
+	StoreBuilder *AdministratorWebTokenSpecStoreBuilder `json:"storeBuilder,omitempty"`
+
+	// WebApps: Options for displaying the Web Apps page.
+	WebApps *AdministratorWebTokenSpecWebApps `json:"webApps,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Kind") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -362,6 +374,114 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type AdministratorWebTokenSpecPlaySearch struct {
+	// Enabled: Whether the Play Search page is displayed. Default is true.
+	Enabled bool `json:"enabled,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Enabled") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Enabled") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AdministratorWebTokenSpecPlaySearch) MarshalJSON() ([]byte, error) {
+	type NoMethod AdministratorWebTokenSpecPlaySearch
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type AdministratorWebTokenSpecPrivateApps struct {
+	// Enabled: Whether the Private Apps page is displayed. Default is true.
+	Enabled bool `json:"enabled,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Enabled") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Enabled") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AdministratorWebTokenSpecPrivateApps) MarshalJSON() ([]byte, error) {
+	type NoMethod AdministratorWebTokenSpecPrivateApps
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type AdministratorWebTokenSpecStoreBuilder struct {
+	// Enabled: Whether the Store Builder is be displayed. Default is true.
+	Enabled bool `json:"enabled,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Enabled") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Enabled") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AdministratorWebTokenSpecStoreBuilder) MarshalJSON() ([]byte, error) {
+	type NoMethod AdministratorWebTokenSpecStoreBuilder
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type AdministratorWebTokenSpecWebApps struct {
+	// Enabled: Whether the Web Apps page is displayed. Default is true.
+	Enabled bool `json:"enabled,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Enabled") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Enabled") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AdministratorWebTokenSpecWebApps) MarshalJSON() ([]byte, error) {
+	type NoMethod AdministratorWebTokenSpecWebApps
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // AndroidDevicePolicyConfig: Deprecated and unused.
 type AndroidDevicePolicyConfig struct {
 	// Kind: Identifies what kind of resource this is. Value: the fixed
@@ -3124,13 +3244,12 @@
 	Kind string `json:"kind,omitempty"`
 
 	// Link: Ordered list of pages a user should be able to reach from this
-	// page. The pages must exist, must not be this page, and once a link is
-	// created the page linked to cannot be deleted until all links to it
-	// are removed. It is recommended that the basic pages are created
-	// first, before adding the links between pages.
+	// page. The list can't include this page. It is recommended that the
+	// basic pages are created first, before adding the links between
+	// pages.
 	//
-	// No attempt is made to verify that all pages are reachable from the
-	// homepage.
+	// The API doesn't verify that the pages exist or the pages are
+	// reachable.
 	Link []string `json:"link,omitempty"`
 
 	// Name: Ordered list of localized strings giving the name of this page.
diff --git a/api-list.json b/api-list.json
index 9fcbf20..7378e77 100644
--- a/api-list.json
+++ b/api-list.json
@@ -97,54 +97,6 @@
   },
   {
    "kind": "discovery#directoryItem",
-   "id": "adexchangeseller:v1",
-   "name": "adexchangeseller",
-   "version": "v1",
-   "title": "Ad Exchange Seller API",
-   "description": "Accesses the inventory of Ad Exchange seller users and generates reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v1/rest",
-   "discoveryLink": "./apis/adexchangeseller/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/seller-rest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangeseller:v1.1",
-   "name": "adexchangeseller",
-   "version": "v1.1",
-   "title": "Ad Exchange Seller API",
-   "description": "Accesses the inventory of Ad Exchange seller users and generates reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v1.1/rest",
-   "discoveryLink": "./apis/adexchangeseller/v1.1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/seller-rest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangeseller:v2.0",
-   "name": "adexchangeseller",
-   "version": "v2.0",
-   "title": "Ad Exchange Seller API",
-   "description": "Accesses the inventory of Ad Exchange seller users and generates reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v2.0/rest",
-   "discoveryLink": "./apis/adexchangeseller/v2.0/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/seller-rest/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
    "id": "adexperiencereport:v1",
    "name": "adexperiencereport",
    "version": "v1",
@@ -1548,6 +1500,21 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "file:v1beta1",
+   "name": "file",
+   "version": "v1beta1",
+   "title": "Cloud Filestore API",
+   "description": "The Cloud Filestore API is used for creating and managing cloud file servers.",
+   "discoveryRestUrl": "https://file.googleapis.com/$discovery/rest?version=v1beta1",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/filestore/",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "firebasedynamiclinks:v1",
    "name": "firebasedynamiclinks",
    "version": "v1",
@@ -2773,7 +2740,7 @@
    "name": "sqladmin",
    "version": "v1beta4",
    "title": "Cloud SQL Admin API",
-   "description": "Cloud SQL provides the Cloud SQL Admin API, a REST API for administering your instances programmatically.",
+   "description": "Creates and manages Cloud SQL instances, which provide fully managed MySQL or PostgreSQL databases.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/sqladmin/v1beta4/rest",
    "discoveryLink": "./apis/sqladmin/v1beta4/rest",
    "icons": {
diff --git a/appengine/v1/appengine-api.json b/appengine/v1/appengine-api.json
index 9236785..4546a05 100644
--- a/appengine/v1/appengine-api.json
+++ b/appengine/v1/appengine-api.json
@@ -1115,7 +1115,7 @@
                   "type": "string"
                 },
                 "migrateTraffic": {
-                  "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions 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).",
+                  "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions 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).",
                   "location": "query",
                   "type": "boolean"
                 },
@@ -1572,7 +1572,7 @@
       }
     }
   },
-  "revision": "20180831",
+  "revision": "20180910",
   "rootUrl": "https://appengine.googleapis.com/",
   "schemas": {
     "ApiConfigHandler": {
@@ -3414,7 +3414,7 @@
           "type": "string"
         },
         "defaultExpiration": {
-          "description": "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.",
+          "description": "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.",
           "format": "google-duration",
           "type": "string"
         },
diff --git a/appengine/v1/appengine-gen.go b/appengine/v1/appengine-gen.go
index d130656..c0dfd3e 100644
--- a/appengine/v1/appengine-gen.go
+++ b/appengine/v1/appengine-gen.go
@@ -3398,7 +3398,7 @@
 	// proxies and browsers. Only applicable if the corresponding
 	// StaticFilesHandler
 	// (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/a
-	// pps.services.versions#staticfileshandler) does not specify its own
+	// pps.services.versions#StaticFilesHandler) does not specify its own
 	// expiration time.Only returned in GET requests if view=FULL is set.
 	DefaultExpiration string `json:"defaultExpiration,omitempty"`
 
@@ -8158,11 +8158,11 @@
 // traffic migration, the target versions must be located within
 // instances that are configured for both warmup requests
 // (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/a
-// pps.services.versions#inboundservicetype) and automatic scaling
+// pps.services.versions#InboundServiceType) and automatic scaling
 // (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/a
-// pps.services.versions#automaticscaling). You must specify the shardBy
+// pps.services.versions#AutomaticScaling). You must specify the shardBy
 // (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/a
-// pps.services#shardby) field in the Service resource. Gradual traffic
+// pps.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
@@ -8283,7 +8283,7 @@
 	//       "type": "string"
 	//     },
 	//     "migrateTraffic": {
-	//       "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions 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).",
+	//       "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions 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).",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     },
diff --git a/appengine/v1beta/appengine-api.json b/appengine/v1beta/appengine-api.json
index 799d24b..321bcd0 100644
--- a/appengine/v1beta/appengine-api.json
+++ b/appengine/v1beta/appengine-api.json
@@ -1115,7 +1115,7 @@
                   "type": "string"
                 },
                 "migrateTraffic": {
-                  "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/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).",
+                  "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#InboundServiceType) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#AutomaticScaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/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).",
                   "location": "query",
                   "type": "boolean"
                 },
@@ -1572,7 +1572,7 @@
       }
     }
   },
-  "revision": "20180831",
+  "revision": "20180910",
   "rootUrl": "https://appengine.googleapis.com/",
   "schemas": {
     "ApiConfigHandler": {
@@ -3495,7 +3495,7 @@
           "type": "string"
         },
         "defaultExpiration": {
-          "description": "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/v1beta/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.",
+          "description": "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/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.",
           "format": "google-duration",
           "type": "string"
         },
diff --git a/appengine/v1beta/appengine-gen.go b/appengine/v1beta/appengine-gen.go
index 291889b..5206ed1 100644
--- a/appengine/v1beta/appengine-gen.go
+++ b/appengine/v1beta/appengine-gen.go
@@ -3544,7 +3544,7 @@
 	// proxies and browsers. Only applicable if the corresponding
 	// StaticFilesHandler
 	// (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1be
-	// ta/apps.services.versions#staticfileshandler) does not specify its
+	// ta/apps.services.versions#StaticFilesHandler) does not specify its
 	// own expiration time.Only returned in GET requests if view=FULL is
 	// set.
 	DefaultExpiration string `json:"defaultExpiration,omitempty"`
@@ -8337,12 +8337,12 @@
 // traffic migration, the target versions must be located within
 // instances that are configured for both warmup requests
 // (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1be
-// ta/apps.services.versions#inboundservicetype) and automatic scaling
+// ta/apps.services.versions#InboundServiceType) and automatic scaling
 // (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1be
-// ta/apps.services.versions#automaticscaling). You must specify the
+// ta/apps.services.versions#AutomaticScaling). You must specify the
 // shardBy
 // (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1be
-// ta/apps.services#shardby) field in the Service resource. Gradual
+// ta/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
@@ -8463,7 +8463,7 @@
 	//       "type": "string"
 	//     },
 	//     "migrateTraffic": {
-	//       "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/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).",
+	//       "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#InboundServiceType) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#AutomaticScaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/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).",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     },
diff --git a/classroom/v1/classroom-api.json b/classroom/v1/classroom-api.json
index d9eca83..9518925 100644
--- a/classroom/v1/classroom-api.json
+++ b/classroom/v1/classroom-api.json
@@ -1975,7 +1975,7 @@
       }
     }
   },
-  "revision": "20180807",
+  "revision": "20180911",
   "rootUrl": "https://classroom.googleapis.com/",
   "schemas": {
     "Announcement": {
@@ -2437,7 +2437,7 @@
       "type": "object"
     },
     "Date": {
-      "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+      "description": "Represents a whole calendar date, for example date of birth. The time of day\nand time zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day can be 0 to\nrepresent a year and month where the day is not significant, for example\ncredit card expiration date. The year can be 0 to represent a month and day\nindependent of year, for example anniversary date. Related types are\ngoogle.type.TimeOfDay and `google.protobuf.Timestamp`.",
       "id": "Date",
       "properties": {
         "day": {
diff --git a/classroom/v1/classroom-gen.go b/classroom/v1/classroom-gen.go
index 10ea189..fbd3a47 100644
--- a/classroom/v1/classroom-gen.go
+++ b/classroom/v1/classroom-gen.go
@@ -1152,19 +1152,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Date: Represents a whole calendar date, e.g. date of birth. The time
-// of day and
-// time zone are either specified elsewhere or are not significant. The
-// date
-// is relative to the Proleptic Gregorian Calendar. The day may be 0
+// Date: Represents a whole calendar date, for example date of birth.
+// The time of day
+// and time zone are either specified elsewhere or are not significant.
+// The date
+// is relative to the Proleptic Gregorian Calendar. The day can be 0
 // to
-// represent a year and month where the day is not significant, e.g.
-// credit card
-// expiration date. The year may be 0 to represent a month and day
-// independent
-// of year, e.g. anniversary date. Related types are
-// google.type.TimeOfDay
-// and `google.protobuf.Timestamp`.
+// represent a year and month where the day is not significant, for
+// example
+// credit card expiration date. The year can be 0 to represent a month
+// and day
+// independent of year, for example anniversary date. Related types
+// are
+// google.type.TimeOfDay and `google.protobuf.Timestamp`.
 type Date struct {
 	// Day: Day of month. Must be from 1 to 31 and valid for the year and
 	// month, or 0
diff --git a/cloudbuild/v1/cloudbuild-api.json b/cloudbuild/v1/cloudbuild-api.json
index 70a66f4..b242974 100644
--- a/cloudbuild/v1/cloudbuild-api.json
+++ b/cloudbuild/v1/cloudbuild-api.json
@@ -562,7 +562,7 @@
       }
     }
   },
-  "revision": "20180828",
+  "revision": "20180913",
   "rootUrl": "https://cloudbuild.googleapis.com/",
   "schemas": {
     "ArtifactObjects": {
@@ -794,6 +794,20 @@
           ],
           "type": "string"
         },
+        "logging": {
+          "description": "Option to specify the logging mode, which determines where the logs are stored.",
+          "enum": [
+            "LOGGING_UNSPECIFIED",
+            "LEGACY",
+            "GCS_ONLY"
+          ],
+          "enumDescriptions": [
+            "The service determines the logging mode. The default is `LEGACY`",
+            "Stackdriver logging and Cloud Storage logging are enabled.",
+            "Only Cloud Storage logging is enabled."
+          ],
+          "type": "string"
+        },
         "machineType": {
           "description": "Compute Engine machine type on which to run the build.",
           "enum": [
diff --git a/cloudbuild/v1/cloudbuild-gen.go b/cloudbuild/v1/cloudbuild-gen.go
index 5fe673a..376cf40 100644
--- a/cloudbuild/v1/cloudbuild-gen.go
+++ b/cloudbuild/v1/cloudbuild-gen.go
@@ -492,6 +492,17 @@
 	// written when the build is completed.
 	LogStreamingOption string `json:"logStreamingOption,omitempty"`
 
+	// Logging: Option to specify the logging mode, which determines where
+	// the logs are stored.
+	//
+	// Possible values:
+	//   "LOGGING_UNSPECIFIED" - The service determines the logging mode.
+	// The default is `LEGACY`
+	//   "LEGACY" - Stackdriver logging and Cloud Storage logging are
+	// enabled.
+	//   "GCS_ONLY" - Only Cloud Storage logging is enabled.
+	Logging string `json:"logging,omitempty"`
+
 	// MachineType: Compute Engine machine type on which to run the build.
 	//
 	// Possible values:
diff --git a/cloudtrace/v1/cloudtrace-api.json b/cloudtrace/v1/cloudtrace-api.json
index 889d24d..9d069e5 100644
--- a/cloudtrace/v1/cloudtrace-api.json
+++ b/cloudtrace/v1/cloudtrace-api.json
@@ -250,7 +250,7 @@
       }
     }
   },
-  "revision": "20180820",
+  "revision": "20180910",
   "rootUrl": "https://cloudtrace.googleapis.com/",
   "schemas": {
     "Empty": {
@@ -293,7 +293,7 @@
           "type": "array"
         },
         "traceId": {
-          "description": "Globally unique identifier for the trace. This identifier is a 128-bit\nnumeric value formatted as a 32-byte hex string.",
+          "description": "Globally unique identifier for the trace. This identifier is a 128-bit\nnumeric value formatted as a 32-byte hex string. For example,\n`382d4f4c6b7bb2f4a972559d9085001d`.",
           "type": "string"
         }
       },
@@ -339,7 +339,7 @@
           "type": "string"
         },
         "spanId": {
-          "description": "Identifier for the span. Must be a 64-bit integer other than 0 and\nunique within a trace.",
+          "description": "Identifier for the span. Must be a 64-bit integer other than 0 and\nunique within a trace. For example, `2205310701640571284`.",
           "format": "uint64",
           "type": "string"
         },
diff --git a/cloudtrace/v1/cloudtrace-gen.go b/cloudtrace/v1/cloudtrace-gen.go
index 602c1dd..4770722 100644
--- a/cloudtrace/v1/cloudtrace-gen.go
+++ b/cloudtrace/v1/cloudtrace-gen.go
@@ -174,7 +174,9 @@
 
 	// TraceId: Globally unique identifier for the trace. This identifier is
 	// a 128-bit
-	// numeric value formatted as a 32-byte hex string.
+	// numeric value formatted as a 32-byte hex string. For
+	// example,
+	// `382d4f4c6b7bb2f4a972559d9085001d`.
 	TraceId string `json:"traceId,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -291,7 +293,7 @@
 
 	// SpanId: Identifier for the span. Must be a 64-bit integer other than
 	// 0 and
-	// unique within a trace.
+	// unique within a trace. For example, `2205310701640571284`.
 	SpanId uint64 `json:"spanId,omitempty,string"`
 
 	// StartTime: Start time of the span in nanoseconds from the UNIX epoch.
diff --git a/container/v1/container-api.json b/container/v1/container-api.json
index 471ddc4..480c0d7 100644
--- a/container/v1/container-api.json
+++ b/container/v1/container-api.json
@@ -2361,7 +2361,7 @@
       }
     }
   },
-  "revision": "20180813",
+  "revision": "20180824",
   "rootUrl": "https://container.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -3110,7 +3110,7 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "The metadata key/value pairs assigned to instances in the cluster.\n\nKeys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes\nin length. These are reflected as part of a URL in the metadata server.\nAdditionally, to avoid ambiguity, keys must not conflict with any other\nmetadata keys for the project or be one of the reserved keys:\n \"cluster-location\"\n \"cluster-name\"\n \"cluster-uid\"\n \"configure-sh\"\n \"gci-update-strategy\"\n \"gci-ensure-gke-docker\"\n \"instance-template\"\n \"kube-env\"\n \"startup-script\"\n \"user-data\"\n\nValues are free-form strings, and only have meaning as interpreted by\nthe image running in the instance. The only restriction placed on them is\nthat each value's size must be less than or equal to 32 KB.\n\nThe total size of all keys and values must be less than 512 KB.",
+          "description": "The metadata key/value pairs assigned to instances in the cluster.\n\nKeys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes\nin length. These are reflected as part of a URL in the metadata server.\nAdditionally, to avoid ambiguity, keys must not conflict with any other\nmetadata keys for the project or be one of the reserved keys:\n \"cluster-location\"\n \"cluster-name\"\n \"cluster-uid\"\n \"configure-sh\"\n \"enable-os-login\"\n \"gci-update-strategy\"\n \"gci-ensure-gke-docker\"\n \"instance-template\"\n \"kube-env\"\n \"startup-script\"\n \"user-data\"\n\nValues are free-form strings, and only have meaning as interpreted by\nthe image running in the instance. The only restriction placed on them is\nthat each value's size must be less than or equal to 32 KB.\n\nThe total size of all keys and values must be less than 512 KB.",
           "type": "object"
         },
         "minCpuPlatform": {
diff --git a/container/v1/container-gen.go b/container/v1/container-gen.go
index 7243a82..91c4fab 100644
--- a/container/v1/container-gen.go
+++ b/container/v1/container-gen.go
@@ -1806,6 +1806,7 @@
 	//  "cluster-name"
 	//  "cluster-uid"
 	//  "configure-sh"
+	//  "enable-os-login"
 	//  "gci-update-strategy"
 	//  "gci-ensure-gke-docker"
 	//  "instance-template"
diff --git a/dataproc/v1/dataproc-api.json b/dataproc/v1/dataproc-api.json
index 84035c8..3280663 100644
--- a/dataproc/v1/dataproc-api.json
+++ b/dataproc/v1/dataproc-api.json
@@ -110,6 +110,96 @@
           "resources": {
             "workflowTemplates": {
               "methods": {
+                "create": {
+                  "description": "Creates new workflow template.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates",
+                  "httpMethod": "POST",
+                  "id": "dataproc.projects.locations.workflowTemplates.create",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "Required. The \"resource name\" of the region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+parent}/workflowTemplates",
+                  "request": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "response": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "delete": {
+                  "description": "Deletes a workflow template. It does not cancel in-progress workflows.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}",
+                  "httpMethod": "DELETE",
+                  "id": "dataproc.projects.locations.workflowTemplates.delete",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/workflowTemplates/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "version": {
+                      "description": "Optional. The version of workflow template to delete. If specified, will only delete the template if the current server version matches specified version.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    }
+                  },
+                  "path": "v1/{+name}",
+                  "response": {
+                    "$ref": "Empty"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "get": {
+                  "description": "Retrieves the latest workflow template.Can retrieve previously instantiated template by specifying optional version parameter.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}",
+                  "httpMethod": "GET",
+                  "id": "dataproc.projects.locations.workflowTemplates.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/workflowTemplates/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "version": {
+                      "description": "Optional. The version of workflow template to retrieve. Only previously instatiated versions can be retrieved.If unspecified, retrieves the current version.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    }
+                  },
+                  "path": "v1/{+name}",
+                  "response": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
                 "getIamPolicy": {
                   "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
                   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}:getIamPolicy",
@@ -138,6 +228,103 @@
                     "https://www.googleapis.com/auth/cloud-platform"
                   ]
                 },
+                "instantiate": {
+                  "description": "Instantiates a template and begins execution.The returned Operation can be used to track execution of workflow by polling operations.get. The Operation will complete when entire workflow is finished.The running workflow can be aborted via operations.cancel. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted.The Operation.metadata will be WorkflowMetadata.On successful completion, Operation.response will be Empty.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}:instantiate",
+                  "httpMethod": "POST",
+                  "id": "dataproc.projects.locations.workflowTemplates.instantiate",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/workflowTemplates/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+name}:instantiate",
+                  "request": {
+                    "$ref": "InstantiateWorkflowTemplateRequest"
+                  },
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "instantiateInline": {
+                  "description": "Instantiates a template and begins execution.This method is equivalent to executing the sequence CreateWorkflowTemplate, InstantiateWorkflowTemplate, DeleteWorkflowTemplate.The returned Operation can be used to track execution of workflow by polling operations.get. The Operation will complete when entire workflow is finished.The running workflow can be aborted via operations.cancel. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted.The Operation.metadata will be WorkflowMetadata.On successful completion, Operation.response will be Empty.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates:instantiateInline",
+                  "httpMethod": "POST",
+                  "id": "dataproc.projects.locations.workflowTemplates.instantiateInline",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "Required. The \"resource name\" of the workflow template region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "requestId": {
+                      "description": "Optional. A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The tag must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+parent}/workflowTemplates:instantiateInline",
+                  "request": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists workflows that match the specified filter in the request.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates",
+                  "httpMethod": "GET",
+                  "id": "dataproc.projects.locations.workflowTemplates.list",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "pageSize": {
+                      "description": "Optional. The maximum number of results to return in each response.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "Optional. The page token, returned by a previous call, to request the next page of results.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "parent": {
+                      "description": "Required. The \"resource name\" of the region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+parent}/workflowTemplates",
+                  "response": {
+                    "$ref": "ListWorkflowTemplatesResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
                 "setIamPolicy": {
                   "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
                   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}:setIamPolicy",
@@ -193,6 +380,34 @@
                   "scopes": [
                     "https://www.googleapis.com/auth/cloud-platform"
                   ]
+                },
+                "update": {
+                  "description": "Updates (replaces) workflow template. The updated template must contain version that matches the current server version.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}",
+                  "httpMethod": "PUT",
+                  "id": "dataproc.projects.locations.workflowTemplates.update",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Output only. The \"resource name\" of the template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/workflowTemplates/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+name}",
+                  "request": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "response": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
                 }
               }
             }
@@ -1113,6 +1328,96 @@
             },
             "workflowTemplates": {
               "methods": {
+                "create": {
+                  "description": "Creates new workflow template.",
+                  "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates",
+                  "httpMethod": "POST",
+                  "id": "dataproc.projects.regions.workflowTemplates.create",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "Required. The \"resource name\" of the region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/regions/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+parent}/workflowTemplates",
+                  "request": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "response": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "delete": {
+                  "description": "Deletes a workflow template. It does not cancel in-progress workflows.",
+                  "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}",
+                  "httpMethod": "DELETE",
+                  "id": "dataproc.projects.regions.workflowTemplates.delete",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/regions/[^/]+/workflowTemplates/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "version": {
+                      "description": "Optional. The version of workflow template to delete. If specified, will only delete the template if the current server version matches specified version.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    }
+                  },
+                  "path": "v1/{+name}",
+                  "response": {
+                    "$ref": "Empty"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "get": {
+                  "description": "Retrieves the latest workflow template.Can retrieve previously instantiated template by specifying optional version parameter.",
+                  "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}",
+                  "httpMethod": "GET",
+                  "id": "dataproc.projects.regions.workflowTemplates.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/regions/[^/]+/workflowTemplates/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "version": {
+                      "description": "Optional. The version of workflow template to retrieve. Only previously instatiated versions can be retrieved.If unspecified, retrieves the current version.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    }
+                  },
+                  "path": "v1/{+name}",
+                  "response": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
                 "getIamPolicy": {
                   "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
                   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}:getIamPolicy",
@@ -1141,6 +1446,103 @@
                     "https://www.googleapis.com/auth/cloud-platform"
                   ]
                 },
+                "instantiate": {
+                  "description": "Instantiates a template and begins execution.The returned Operation can be used to track execution of workflow by polling operations.get. The Operation will complete when entire workflow is finished.The running workflow can be aborted via operations.cancel. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted.The Operation.metadata will be WorkflowMetadata.On successful completion, Operation.response will be Empty.",
+                  "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}:instantiate",
+                  "httpMethod": "POST",
+                  "id": "dataproc.projects.regions.workflowTemplates.instantiate",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/regions/[^/]+/workflowTemplates/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+name}:instantiate",
+                  "request": {
+                    "$ref": "InstantiateWorkflowTemplateRequest"
+                  },
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "instantiateInline": {
+                  "description": "Instantiates a template and begins execution.This method is equivalent to executing the sequence CreateWorkflowTemplate, InstantiateWorkflowTemplate, DeleteWorkflowTemplate.The returned Operation can be used to track execution of workflow by polling operations.get. The Operation will complete when entire workflow is finished.The running workflow can be aborted via operations.cancel. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted.The Operation.metadata will be WorkflowMetadata.On successful completion, Operation.response will be Empty.",
+                  "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates:instantiateInline",
+                  "httpMethod": "POST",
+                  "id": "dataproc.projects.regions.workflowTemplates.instantiateInline",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "Required. The \"resource name\" of the workflow template region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/regions/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "requestId": {
+                      "description": "Optional. A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The tag must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+parent}/workflowTemplates:instantiateInline",
+                  "request": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists workflows that match the specified filter in the request.",
+                  "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates",
+                  "httpMethod": "GET",
+                  "id": "dataproc.projects.regions.workflowTemplates.list",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "pageSize": {
+                      "description": "Optional. The maximum number of results to return in each response.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "Optional. The page token, returned by a previous call, to request the next page of results.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "parent": {
+                      "description": "Required. The \"resource name\" of the region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/regions/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+parent}/workflowTemplates",
+                  "response": {
+                    "$ref": "ListWorkflowTemplatesResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
                 "setIamPolicy": {
                   "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
                   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}:setIamPolicy",
@@ -1196,6 +1598,34 @@
                   "scopes": [
                     "https://www.googleapis.com/auth/cloud-platform"
                   ]
+                },
+                "update": {
+                  "description": "Updates (replaces) workflow template. The updated template must contain version that matches the current server version.",
+                  "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}",
+                  "httpMethod": "PUT",
+                  "id": "dataproc.projects.regions.workflowTemplates.update",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Output only. The \"resource name\" of the template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/regions/[^/]+/workflowTemplates/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+name}",
+                  "request": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "response": {
+                    "$ref": "WorkflowTemplate"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
                 }
               }
             }
@@ -1204,7 +1634,7 @@
       }
     }
   },
-  "revision": "20180824",
+  "revision": "20180910",
   "rootUrl": "https://dataproc.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -1464,6 +1894,24 @@
       },
       "type": "object"
     },
+    "ClusterSelector": {
+      "description": "A selector that chooses target cluster for jobs based on metadata.",
+      "id": "ClusterSelector",
+      "properties": {
+        "clusterLabels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Required. The cluster labels. Cluster must have all labels to match.",
+          "type": "object"
+        },
+        "zone": {
+          "description": "Optional. The zone where workflow process executes. This parameter does not affect the selection of the cluster.If unspecified, the zone of the first cluster matching the selector is used.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "ClusterStatus": {
       "description": "The status of a cluster and its instances.",
       "id": "ClusterStatus",
@@ -1786,6 +2234,29 @@
       },
       "type": "object"
     },
+    "InstantiateWorkflowTemplateRequest": {
+      "description": "A request to instantiate a workflow template.",
+      "id": "InstantiateWorkflowTemplateRequest",
+      "properties": {
+        "parameters": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Optional. Map from parameter names to values that should be used for those parameters.",
+          "type": "object"
+        },
+        "requestId": {
+          "description": "Optional. A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The tag must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
+          "type": "string"
+        },
+        "version": {
+          "description": "Optional. The version of workflow template to instantiate. If specified, the workflow will be instantiated only if the current version of the workflow template has the supplied version.This option cannot be used to instantiate a previous version of workflow template.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "Job": {
       "description": "A Cloud Dataproc job resource.",
       "id": "Job",
@@ -2018,6 +2489,24 @@
       },
       "type": "object"
     },
+    "ListWorkflowTemplatesResponse": {
+      "description": "A response to a request to list workflow templates in a project.",
+      "id": "ListWorkflowTemplatesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "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 \u003ccode\u003eListWorkflowTemplatesRequest\u003c/code\u003e.",
+          "type": "string"
+        },
+        "templates": {
+          "description": "Output only. WorkflowTemplates list.",
+          "items": {
+            "$ref": "WorkflowTemplate"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "LoggingConfig": {
       "description": "The runtime logging config of the job.",
       "id": "LoggingConfig",
@@ -2043,6 +2532,28 @@
       },
       "type": "object"
     },
+    "ManagedCluster": {
+      "description": "Cluster that is managed by the workflow.",
+      "id": "ManagedCluster",
+      "properties": {
+        "clusterName": {
+          "description": "Required. The cluster name prefix. A unique cluster name will be formed by appending a random suffix.The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters.",
+          "type": "string"
+        },
+        "config": {
+          "$ref": "ClusterConfig",
+          "description": "Required. The cluster configuration."
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "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 32 labels can be associated with a given cluster.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "ManagedGroupConfig": {
       "description": "Specifies the resources used to actively manage an instance group.",
       "id": "ManagedGroupConfig",
@@ -2109,6 +2620,74 @@
       },
       "type": "object"
     },
+    "OrderedJob": {
+      "description": "A job executed by the workflow.",
+      "id": "OrderedJob",
+      "properties": {
+        "hadoopJob": {
+          "$ref": "HadoopJob",
+          "description": "Job is a Hadoop job."
+        },
+        "hiveJob": {
+          "$ref": "HiveJob",
+          "description": "Job is a Hive job."
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "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 32 labels can be associated with a given job.",
+          "type": "object"
+        },
+        "pigJob": {
+          "$ref": "PigJob",
+          "description": "Job is a Pig job."
+        },
+        "prerequisiteStepIds": {
+          "description": "Optional. The optional list of prerequisite job step_ids. If not specified, the job will start at the beginning of workflow.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "pysparkJob": {
+          "$ref": "PySparkJob",
+          "description": "Job is a Pyspark job."
+        },
+        "scheduling": {
+          "$ref": "JobScheduling",
+          "description": "Optional. Job scheduling configuration."
+        },
+        "sparkJob": {
+          "$ref": "SparkJob",
+          "description": "Job is a Spark job."
+        },
+        "sparkSqlJob": {
+          "$ref": "SparkSqlJob",
+          "description": "Job is a SparkSql job."
+        },
+        "stepId": {
+          "description": "Required. The step id. The id must be unique among all jobs within the template.The step id is used as prefix for job id, as job goog-dataproc-workflow-step-id label, and in prerequisiteStepIds field from other steps.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ParameterValidation": {
+      "description": "Configuration for parameter validation.",
+      "id": "ParameterValidation",
+      "properties": {
+        "regex": {
+          "$ref": "RegexValidation",
+          "description": "Validation based on regular expressions."
+        },
+        "values": {
+          "$ref": "ValueValidation",
+          "description": "Validation based on a list of allowed values."
+        }
+      },
+      "type": "object"
+    },
     "PigJob": {
       "description": "A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.",
       "id": "PigJob",
@@ -2248,6 +2827,20 @@
       },
       "type": "object"
     },
+    "RegexValidation": {
+      "description": "Validation based on regular expressions.",
+      "id": "RegexValidation",
+      "properties": {
+        "regexes": {
+          "description": "Required. RE2 regular expressions used to validate the parameter's value. The value must match the regex in its entirety (substring matches are not sufficient).",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "SetIamPolicyRequest": {
       "description": "Request message for SetIamPolicy method.",
       "id": "SetIamPolicyRequest",
@@ -2413,6 +3006,32 @@
       },
       "type": "object"
     },
+    "TemplateParameter": {
+      "description": "A configurable parameter that replaces one or more fields in the template. Parameterizable fields: - Labels - File uris - Job properties - Job arguments - Script variables - Main class (in HadoopJob and SparkJob) - Zone (in ClusterSelector)",
+      "id": "TemplateParameter",
+      "properties": {
+        "description": {
+          "description": "Optional. Brief description of the parameter. Must not exceed 1024 characters.",
+          "type": "string"
+        },
+        "fields": {
+          "description": "Required. Paths to all fields that the parameter replaces. A field is allowed to appear in at most one parameter's list of field paths.A field path is similar in syntax to a google.protobuf.FieldMask. For example, a field path that references the zone field of a workflow template's cluster selector would be specified as \u003ccode\u003eplacement.clusterSelector.zone\u003c/code\u003e.Also, field paths can reference fields using the following syntax:\nValues in maps can be referenced by key. Examples\u003cbr\u003e\nlabels'key'\nplacement.clusterSelector.clusterLabels'key'\nplacement.managedCluster.labels'key'\nplacement.clusterSelector.clusterLabels'key'\njobsstep-id.labels'key'\nJobs in the jobs list can be referenced by step-id. Examples:\u003cbr\u003e\njobsstep-id.hadoopJob.mainJarFileUri\njobsstep-id.hiveJob.queryFileUri\njobsstep-id.pySparkJob.mainPythonFileUri\njobsstep-id.hadoopJob.jarFileUris0\njobsstep-id.hadoopJob.archiveUris0\njobsstep-id.hadoopJob.fileUris0\njobsstep-id.pySparkJob.pythonFileUris0\nItems in repeated fields can be referenced by a zero-based index. Example:\u003cbr\u003e\njobsstep-id.sparkJob.args0\nOther examples:\njobsstep-id.hadoopJob.properties'key'\njobsstep-id.hadoopJob.args0\njobsstep-id.hiveJob.scriptVariables'key'\njobsstep-id.hadoopJob.mainJarFileUri\nplacement.clusterSelector.zoneIt may not be possible to parameterize maps and repeated fields in their entirety since only individual map values and individual items in repeated fields can be referenced. For example, the following field paths are invalid:\nplacement.clusterSelector.clusterLabels\njobsstep-id.sparkJob.args",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "name": {
+          "description": "Required. Parameter name. The parameter name is used as the key, and paired with the parameter value, which are passed to the template when the template is instantiated. The name must contain only capital letters (A-Z), numbers (0-9), and underscores (_), and must not start with a number. The maximum length is 40 characters.",
+          "type": "string"
+        },
+        "validation": {
+          "$ref": "ParameterValidation",
+          "description": "Optional. Validation rules to be applied to this parameter's value."
+        }
+      },
+      "type": "object"
+    },
     "TestIamPermissionsRequest": {
       "description": "Request message for TestIamPermissions method.",
       "id": "TestIamPermissionsRequest",
@@ -2441,6 +3060,20 @@
       },
       "type": "object"
     },
+    "ValueValidation": {
+      "description": "Validation based on a list of allowed values.",
+      "id": "ValueValidation",
+      "properties": {
+        "values": {
+          "description": "Required. List of allowed values for the parameter.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "WorkflowGraph": {
       "description": "The workflow graph.",
       "id": "WorkflowGraph",
@@ -2556,6 +3189,76 @@
       },
       "type": "object"
     },
+    "WorkflowTemplate": {
+      "description": "A Cloud Dataproc workflow template resource.",
+      "id": "WorkflowTemplate",
+      "properties": {
+        "createTime": {
+          "description": "Output only. The time template was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "id": {
+          "description": "Required. The template id.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters.",
+          "type": "string"
+        },
+        "jobs": {
+          "description": "Required. The Directed Acyclic Graph of Jobs to submit.",
+          "items": {
+            "$ref": "OrderedJob"
+          },
+          "type": "array"
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Optional. The labels to associate with this template. These labels will be propagated to all jobs and clusters created by the workflow instance.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 template.",
+          "type": "object"
+        },
+        "name": {
+          "description": "Output only. The \"resource name\" of the template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+          "type": "string"
+        },
+        "parameters": {
+          "description": "Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated.",
+          "items": {
+            "$ref": "TemplateParameter"
+          },
+          "type": "array"
+        },
+        "placement": {
+          "$ref": "WorkflowTemplatePlacement",
+          "description": "Required. WorkflowTemplate scheduling information."
+        },
+        "updateTime": {
+          "description": "Output only. The time template was last updated.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "version": {
+          "description": "Optional. Used to perform a consistent read-modify-write.This field should be left blank for a CreateWorkflowTemplate request. It is required for an UpdateWorkflowTemplate request, and must match the current server version. A typical update template flow would fetch the current template with a GetWorkflowTemplate request, which will return the current template with the version field filled in with the current server version. The user updates other fields in the template, then returns it as part of the UpdateWorkflowTemplate request.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "WorkflowTemplatePlacement": {
+      "description": "Specifies workflow execution target.Either managed_cluster or cluster_selector is required.",
+      "id": "WorkflowTemplatePlacement",
+      "properties": {
+        "clusterSelector": {
+          "$ref": "ClusterSelector",
+          "description": "Optional. A selector that chooses target cluster for jobs based on metadata.The selector is evaluated at the time each job is submitted."
+        },
+        "managedCluster": {
+          "$ref": "ManagedCluster",
+          "description": "Optional. A cluster that is managed by the workflow."
+        }
+      },
+      "type": "object"
+    },
     "YarnApplication": {
       "description": "A YARN application created by a job. Application information is a subset of \u003ccode\u003eorg.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto\u003c/code\u003e.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
       "id": "YarnApplication",
diff --git a/dataproc/v1/dataproc-gen.go b/dataproc/v1/dataproc-gen.go
index 07f8723..4452caa 100644
--- a/dataproc/v1/dataproc-gen.go
+++ b/dataproc/v1/dataproc-gen.go
@@ -572,6 +572,42 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ClusterSelector: A selector that chooses target cluster for jobs
+// based on metadata.
+type ClusterSelector struct {
+	// ClusterLabels: Required. The cluster labels. Cluster must have all
+	// labels to match.
+	ClusterLabels map[string]string `json:"clusterLabels,omitempty"`
+
+	// Zone: Optional. The zone where workflow process executes. This
+	// parameter does not affect the selection of the cluster.If
+	// unspecified, the zone of the first cluster matching the selector is
+	// used.
+	Zone string `json:"zone,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ClusterLabels") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ClusterLabels") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ClusterSelector) MarshalJSON() ([]byte, error) {
+	type NoMethod ClusterSelector
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // ClusterStatus: The status of a cluster and its instances.
 type ClusterStatus struct {
 	// Detail: Output only. Optional details of cluster's state.
@@ -1116,6 +1152,52 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// InstantiateWorkflowTemplateRequest: A request to instantiate a
+// workflow template.
+type InstantiateWorkflowTemplateRequest struct {
+	// Parameters: Optional. Map from parameter names to values that should
+	// be used for those parameters.
+	Parameters map[string]string `json:"parameters,omitempty"`
+
+	// RequestId: Optional. A tag that prevents multiple concurrent workflow
+	// instances with the same tag from running. This mitigates risk of
+	// concurrent instances started due to retries.It is recommended to
+	// always set this value to a UUID
+	// (https://en.wikipedia.org/wiki/Universally_unique_identifier).The tag
+	// must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),
+	// and hyphens (-). The maximum length is 40 characters.
+	RequestId string `json:"requestId,omitempty"`
+
+	// Version: Optional. The version of workflow template to instantiate.
+	// If specified, the workflow will be instantiated only if the current
+	// version of the workflow template has the supplied version.This option
+	// cannot be used to instantiate a previous version of workflow
+	// template.
+	Version int64 `json:"version,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parameters") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Parameters") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *InstantiateWorkflowTemplateRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod InstantiateWorkflowTemplateRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Job: A Cloud Dataproc job resource.
 type Job struct {
 	// DriverControlFilesUri: Output only. If present, the location of
@@ -1494,6 +1576,45 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ListWorkflowTemplatesResponse: A response to a request to list
+// workflow templates in a project.
+type ListWorkflowTemplatesResponse struct {
+	// NextPageToken: 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
+	// <code>ListWorkflowTemplatesRequest</code>.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Templates: Output only. WorkflowTemplates list.
+	Templates []*WorkflowTemplate `json:"templates,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListWorkflowTemplatesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListWorkflowTemplatesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // LoggingConfig: The runtime logging config of the job.
 type LoggingConfig struct {
 	// DriverLogLevels: The per-package log levels for the driver. This may
@@ -1525,6 +1646,49 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ManagedCluster: Cluster that is managed by the workflow.
+type ManagedCluster struct {
+	// ClusterName: Required. The cluster name prefix. A unique cluster name
+	// will be formed by appending a random suffix.The name must contain
+	// only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must
+	// begin with a letter. Cannot begin or end with hyphen. Must consist of
+	// between 2 and 35 characters.
+	ClusterName string `json:"clusterName,omitempty"`
+
+	// Config: Required. The cluster configuration.
+	Config *ClusterConfig `json:"config,omitempty"`
+
+	// 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 32 labels can be associated with a given cluster.
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ClusterName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ClusterName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ManagedCluster) MarshalJSON() ([]byte, error) {
+	type NoMethod ManagedCluster
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // ManagedGroupConfig: Specifies the resources used to actively manage
 // an instance group.
 type ManagedGroupConfig struct {
@@ -1659,6 +1823,105 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// OrderedJob: A job executed by the workflow.
+type OrderedJob struct {
+	// HadoopJob: Job is a Hadoop job.
+	HadoopJob *HadoopJob `json:"hadoopJob,omitempty"`
+
+	// HiveJob: Job is a Hive job.
+	HiveJob *HiveJob `json:"hiveJob,omitempty"`
+
+	// 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 32 labels
+	// can be associated with a given job.
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// PigJob: Job is a Pig job.
+	PigJob *PigJob `json:"pigJob,omitempty"`
+
+	// PrerequisiteStepIds: Optional. The optional list of prerequisite job
+	// step_ids. If not specified, the job will start at the beginning of
+	// workflow.
+	PrerequisiteStepIds []string `json:"prerequisiteStepIds,omitempty"`
+
+	// PysparkJob: Job is a Pyspark job.
+	PysparkJob *PySparkJob `json:"pysparkJob,omitempty"`
+
+	// Scheduling: Optional. Job scheduling configuration.
+	Scheduling *JobScheduling `json:"scheduling,omitempty"`
+
+	// SparkJob: Job is a Spark job.
+	SparkJob *SparkJob `json:"sparkJob,omitempty"`
+
+	// SparkSqlJob: Job is a SparkSql job.
+	SparkSqlJob *SparkSqlJob `json:"sparkSqlJob,omitempty"`
+
+	// StepId: Required. The step id. The id must be unique among all jobs
+	// within the template.The step id is used as prefix for job id, as job
+	// goog-dataproc-workflow-step-id label, and in prerequisiteStepIds
+	// field from other steps.The id must contain only letters (a-z, A-Z),
+	// numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end
+	// with underscore or hyphen. Must consist of between 3 and 50
+	// characters.
+	StepId string `json:"stepId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HadoopJob") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HadoopJob") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *OrderedJob) MarshalJSON() ([]byte, error) {
+	type NoMethod OrderedJob
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ParameterValidation: Configuration for parameter validation.
+type ParameterValidation struct {
+	// Regex: Validation based on regular expressions.
+	Regex *RegexValidation `json:"regex,omitempty"`
+
+	// Values: Validation based on a list of allowed values.
+	Values *ValueValidation `json:"values,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Regex") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Regex") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ParameterValidation) MarshalJSON() ([]byte, error) {
+	type NoMethod ParameterValidation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // PigJob: A Cloud Dataproc job for running Apache Pig
 // (https://pig.apache.org/) queries on YARN.
 type PigJob struct {
@@ -1903,6 +2166,36 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// RegexValidation: Validation based on regular expressions.
+type RegexValidation struct {
+	// Regexes: Required. RE2 regular expressions used to validate the
+	// parameter's value. The value must match the regex in its entirety
+	// (substring matches are not sufficient).
+	Regexes []string `json:"regexes,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Regexes") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Regexes") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RegexValidation) MarshalJSON() ([]byte, error) {
+	type NoMethod RegexValidation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // SetIamPolicyRequest: Request message for SetIamPolicy method.
 type SetIamPolicyRequest struct {
 	// Policy: REQUIRED: The complete policy to be applied to the resource.
@@ -2206,6 +2499,98 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// TemplateParameter: A configurable parameter that replaces one or more
+// fields in the template. Parameterizable fields: - Labels - File uris
+// - Job properties - Job arguments - Script variables - Main class (in
+// HadoopJob and SparkJob) - Zone (in ClusterSelector)
+type TemplateParameter struct {
+	// Description: Optional. Brief description of the parameter. Must not
+	// exceed 1024 characters.
+	Description string `json:"description,omitempty"`
+
+	// Fields: Required. Paths to all fields that the parameter replaces. A
+	// field is allowed to appear in at most one parameter's list of field
+	// paths.A field path is similar in syntax to a
+	// google.protobuf.FieldMask. For example, a field path that references
+	// the zone field of a workflow template's cluster selector would be
+	// specified as <code>placement.clusterSelector.zone</code>.Also, field
+	// paths can reference fields using the following syntax:
+	// Values in maps can be referenced by key.
+	// Examples<br>
+	// labels'key'
+	// placement.clusterSelector.clusterLabels'key'
+	//
+	// placement.managedCluster.labels'key'
+	// placement.clusterSelector.cluster
+	// Labels'key'
+	// jobsstep-id.labels'key'
+	// Jobs in the jobs list can be referenced by step-id.
+	// Examples:<br>
+	// jobsstep-id.hadoopJob.mainJarFileUri
+	// jobsstep-id.hiveJob
+	// .queryFileUri
+	// jobsstep-id.pySparkJob.mainPythonFileUri
+	// jobsstep-id.had
+	// oopJob.jarFileUris0
+	// jobsstep-id.hadoopJob.archiveUris0
+	// jobsstep-id.had
+	// oopJob.fileUris0
+	// jobsstep-id.pySparkJob.pythonFileUris0
+	// Items in repeated fields can be referenced by a zero-based index.
+	// Example:<br>
+	// jobsstep-id.sparkJob.args0
+	// Other
+	// examples:
+	// jobsstep-id.hadoopJob.properties'key'
+	// jobsstep-id.hadoopJob.
+	// args0
+	// jobsstep-id.hiveJob.scriptVariables'key'
+	// jobsstep-id.hadoopJob.m
+	// ainJarFileUri
+	// placement.clusterSelector.zoneIt may not be possible to parameterize
+	// maps and repeated fields in their entirety since only individual map
+	// values and individual items in repeated fields can be referenced. For
+	// example, the following field paths are
+	// invalid:
+	// placement.clusterSelector.clusterLabels
+	// jobsstep-id.sparkJob.
+	// args
+	Fields []string `json:"fields,omitempty"`
+
+	// Name: Required. Parameter name. The parameter name is used as the
+	// key, and paired with the parameter value, which are passed to the
+	// template when the template is instantiated. The name must contain
+	// only capital letters (A-Z), numbers (0-9), and underscores (_), and
+	// must not start with a number. The maximum length is 40 characters.
+	Name string `json:"name,omitempty"`
+
+	// Validation: Optional. Validation rules to be applied to this
+	// parameter's value.
+	Validation *ParameterValidation `json:"validation,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Description") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Description") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TemplateParameter) MarshalJSON() ([]byte, error) {
+	type NoMethod TemplateParameter
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // TestIamPermissionsRequest: Request message for TestIamPermissions
 // method.
 type TestIamPermissionsRequest struct {
@@ -2272,6 +2657,34 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ValueValidation: Validation based on a list of allowed values.
+type ValueValidation struct {
+	// Values: Required. List of allowed values for the parameter.
+	Values []string `json:"values,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Values") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Values") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ValueValidation) MarshalJSON() ([]byte, error) {
+	type NoMethod ValueValidation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // WorkflowGraph: The workflow graph.
 type WorkflowGraph struct {
 	// Nodes: Output only. The workflow nodes.
@@ -2407,6 +2820,119 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// WorkflowTemplate: A Cloud Dataproc workflow template resource.
+type WorkflowTemplate struct {
+	// CreateTime: Output only. The time template was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Id: Required. The template id.The id must contain only letters (a-z,
+	// A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin
+	// or end with underscore or hyphen. Must consist of between 3 and 50
+	// characters.
+	Id string `json:"id,omitempty"`
+
+	// Jobs: Required. The Directed Acyclic Graph of Jobs to submit.
+	Jobs []*OrderedJob `json:"jobs,omitempty"`
+
+	// Labels: Optional. The labels to associate with this template. These
+	// labels will be propagated to all jobs and clusters created by the
+	// workflow instance.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 template.
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// Name: Output only. The "resource name" of the template, as described
+	// in https://cloud.google.com/apis/design/resource_names of the form
+	// projects/{project_id}/regions/{region}/workflowTemplates/{template_id}
+	Name string `json:"name,omitempty"`
+
+	// Parameters: Optional. Template parameters whose values are
+	// substituted into the template. Values for parameters must be provided
+	// when the template is instantiated.
+	Parameters []*TemplateParameter `json:"parameters,omitempty"`
+
+	// Placement: Required. WorkflowTemplate scheduling information.
+	Placement *WorkflowTemplatePlacement `json:"placement,omitempty"`
+
+	// UpdateTime: Output only. The time template was last updated.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// Version: Optional. Used to perform a consistent
+	// read-modify-write.This field should be left blank for a
+	// CreateWorkflowTemplate request. It is required for an
+	// UpdateWorkflowTemplate request, and must match the current server
+	// version. A typical update template flow would fetch the current
+	// template with a GetWorkflowTemplate request, which will return the
+	// current template with the version field filled in with the current
+	// server version. The user updates other fields in the template, then
+	// returns it as part of the UpdateWorkflowTemplate request.
+	Version int64 `json:"version,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CreateTime") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *WorkflowTemplate) MarshalJSON() ([]byte, error) {
+	type NoMethod WorkflowTemplate
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// WorkflowTemplatePlacement: Specifies workflow execution target.Either
+// managed_cluster or cluster_selector is required.
+type WorkflowTemplatePlacement struct {
+	// ClusterSelector: Optional. A selector that chooses target cluster for
+	// jobs based on metadata.The selector is evaluated at the time each job
+	// is submitted.
+	ClusterSelector *ClusterSelector `json:"clusterSelector,omitempty"`
+
+	// ManagedCluster: Optional. A cluster that is managed by the workflow.
+	ManagedCluster *ManagedCluster `json:"managedCluster,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ClusterSelector") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ClusterSelector") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *WorkflowTemplatePlacement) MarshalJSON() ([]byte, error) {
+	type NoMethod WorkflowTemplatePlacement
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // YarnApplication: A YARN application created by a job. Application
 // information is a subset of
 // <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</
@@ -2477,6 +3003,438 @@
 	return nil
 }
 
+// method id "dataproc.projects.locations.workflowTemplates.create":
+
+type ProjectsLocationsWorkflowTemplatesCreateCall struct {
+	s                *Service
+	parent           string
+	workflowtemplate *WorkflowTemplate
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// Create: Creates new workflow template.
+func (r *ProjectsLocationsWorkflowTemplatesService) Create(parent string, workflowtemplate *WorkflowTemplate) *ProjectsLocationsWorkflowTemplatesCreateCall {
+	c := &ProjectsLocationsWorkflowTemplatesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.workflowtemplate = workflowtemplate
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsWorkflowTemplatesCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsWorkflowTemplatesCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsWorkflowTemplatesCreateCall) Context(ctx context.Context) *ProjectsLocationsWorkflowTemplatesCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsWorkflowTemplatesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsWorkflowTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.workflowtemplate)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/workflowTemplates")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.locations.workflowTemplates.create" call.
+// Exactly one of *WorkflowTemplate or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *WorkflowTemplate.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsLocationsWorkflowTemplatesCreateCall) Do(opts ...googleapi.CallOption) (*WorkflowTemplate, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WorkflowTemplate{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates new workflow template.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates",
+	//   "httpMethod": "POST",
+	//   "id": "dataproc.projects.locations.workflowTemplates.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Required. The \"resource name\" of the region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/workflowTemplates",
+	//   "request": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "response": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "dataproc.projects.locations.workflowTemplates.delete":
+
+type ProjectsLocationsWorkflowTemplatesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes a workflow template. It does not cancel in-progress
+// workflows.
+func (r *ProjectsLocationsWorkflowTemplatesService) Delete(name string) *ProjectsLocationsWorkflowTemplatesDeleteCall {
+	c := &ProjectsLocationsWorkflowTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Version sets the optional parameter "version": The version of
+// workflow template to delete. If specified, will only delete the
+// template if the current server version matches specified version.
+func (c *ProjectsLocationsWorkflowTemplatesDeleteCall) Version(version int64) *ProjectsLocationsWorkflowTemplatesDeleteCall {
+	c.urlParams_.Set("version", fmt.Sprint(version))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsWorkflowTemplatesDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsWorkflowTemplatesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsWorkflowTemplatesDeleteCall) Context(ctx context.Context) *ProjectsLocationsWorkflowTemplatesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsWorkflowTemplatesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsWorkflowTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.locations.workflowTemplates.delete" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsLocationsWorkflowTemplatesDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes a workflow template. It does not cancel in-progress workflows.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "dataproc.projects.locations.workflowTemplates.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/workflowTemplates/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "version": {
+	//       "description": "Optional. The version of workflow template to delete. If specified, will only delete the template if the current server version matches specified version.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "dataproc.projects.locations.workflowTemplates.get":
+
+type ProjectsLocationsWorkflowTemplatesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Retrieves the latest workflow template.Can retrieve previously
+// instantiated template by specifying optional version parameter.
+func (r *ProjectsLocationsWorkflowTemplatesService) Get(name string) *ProjectsLocationsWorkflowTemplatesGetCall {
+	c := &ProjectsLocationsWorkflowTemplatesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Version sets the optional parameter "version": The version of
+// workflow template to retrieve. Only previously instatiated versions
+// can be retrieved.If unspecified, retrieves the current version.
+func (c *ProjectsLocationsWorkflowTemplatesGetCall) Version(version int64) *ProjectsLocationsWorkflowTemplatesGetCall {
+	c.urlParams_.Set("version", fmt.Sprint(version))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsWorkflowTemplatesGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsWorkflowTemplatesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsWorkflowTemplatesGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsWorkflowTemplatesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsWorkflowTemplatesGetCall) Context(ctx context.Context) *ProjectsLocationsWorkflowTemplatesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsWorkflowTemplatesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsWorkflowTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.locations.workflowTemplates.get" call.
+// Exactly one of *WorkflowTemplate or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *WorkflowTemplate.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsLocationsWorkflowTemplatesGetCall) Do(opts ...googleapi.CallOption) (*WorkflowTemplate, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WorkflowTemplate{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the latest workflow template.Can retrieve previously instantiated template by specifying optional version parameter.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}",
+	//   "httpMethod": "GET",
+	//   "id": "dataproc.projects.locations.workflowTemplates.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/workflowTemplates/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "version": {
+	//       "description": "Optional. The version of workflow template to retrieve. Only previously instatiated versions can be retrieved.If unspecified, retrieves the current version.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
 // method id "dataproc.projects.locations.workflowTemplates.getIamPolicy":
 
 type ProjectsLocationsWorkflowTemplatesGetIamPolicyCall struct {
@@ -2615,6 +3573,497 @@
 
 }
 
+// method id "dataproc.projects.locations.workflowTemplates.instantiate":
+
+type ProjectsLocationsWorkflowTemplatesInstantiateCall struct {
+	s                                  *Service
+	name                               string
+	instantiateworkflowtemplaterequest *InstantiateWorkflowTemplateRequest
+	urlParams_                         gensupport.URLParams
+	ctx_                               context.Context
+	header_                            http.Header
+}
+
+// Instantiate: Instantiates a template and begins execution.The
+// returned Operation can be used to track execution of workflow by
+// polling operations.get. The Operation will complete when entire
+// workflow is finished.The running workflow can be aborted via
+// operations.cancel. This will cause any inflight jobs to be cancelled
+// and workflow-owned clusters to be deleted.The Operation.metadata will
+// be WorkflowMetadata.On successful completion, Operation.response will
+// be Empty.
+func (r *ProjectsLocationsWorkflowTemplatesService) Instantiate(name string, instantiateworkflowtemplaterequest *InstantiateWorkflowTemplateRequest) *ProjectsLocationsWorkflowTemplatesInstantiateCall {
+	c := &ProjectsLocationsWorkflowTemplatesInstantiateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.instantiateworkflowtemplaterequest = instantiateworkflowtemplaterequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateCall) Fields(s ...googleapi.Field) *ProjectsLocationsWorkflowTemplatesInstantiateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateCall) Context(ctx context.Context) *ProjectsLocationsWorkflowTemplatesInstantiateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.instantiateworkflowtemplaterequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:instantiate")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.locations.workflowTemplates.instantiate" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Instantiates a template and begins execution.The returned Operation can be used to track execution of workflow by polling operations.get. The Operation will complete when entire workflow is finished.The running workflow can be aborted via operations.cancel. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted.The Operation.metadata will be WorkflowMetadata.On successful completion, Operation.response will be Empty.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}:instantiate",
+	//   "httpMethod": "POST",
+	//   "id": "dataproc.projects.locations.workflowTemplates.instantiate",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/workflowTemplates/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:instantiate",
+	//   "request": {
+	//     "$ref": "InstantiateWorkflowTemplateRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "dataproc.projects.locations.workflowTemplates.instantiateInline":
+
+type ProjectsLocationsWorkflowTemplatesInstantiateInlineCall struct {
+	s                *Service
+	parent           string
+	workflowtemplate *WorkflowTemplate
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// InstantiateInline: Instantiates a template and begins execution.This
+// method is equivalent to executing the sequence
+// CreateWorkflowTemplate, InstantiateWorkflowTemplate,
+// DeleteWorkflowTemplate.The returned Operation can be used to track
+// execution of workflow by polling operations.get. The Operation will
+// complete when entire workflow is finished.The running workflow can be
+// aborted via operations.cancel. This will cause any inflight jobs to
+// be cancelled and workflow-owned clusters to be deleted.The
+// Operation.metadata will be WorkflowMetadata.On successful completion,
+// Operation.response will be Empty.
+func (r *ProjectsLocationsWorkflowTemplatesService) InstantiateInline(parent string, workflowtemplate *WorkflowTemplate) *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall {
+	c := &ProjectsLocationsWorkflowTemplatesInstantiateInlineCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.workflowtemplate = workflowtemplate
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": A tag that
+// prevents multiple concurrent workflow instances with the same tag
+// from running. This mitigates risk of concurrent instances started due
+// to retries.It is recommended to always set this value to a UUID
+// (https://en.wikipedia.org/wiki/Universally_unique_identifier).The tag
+// must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),
+// and hyphens (-). The maximum length is 40 characters.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall) RequestId(requestId string) *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall) Fields(s ...googleapi.Field) *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall) Context(ctx context.Context) *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.workflowtemplate)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/workflowTemplates:instantiateInline")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.locations.workflowTemplates.instantiateInline" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsWorkflowTemplatesInstantiateInlineCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Instantiates a template and begins execution.This method is equivalent to executing the sequence CreateWorkflowTemplate, InstantiateWorkflowTemplate, DeleteWorkflowTemplate.The returned Operation can be used to track execution of workflow by polling operations.get. The Operation will complete when entire workflow is finished.The running workflow can be aborted via operations.cancel. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted.The Operation.metadata will be WorkflowMetadata.On successful completion, Operation.response will be Empty.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates:instantiateInline",
+	//   "httpMethod": "POST",
+	//   "id": "dataproc.projects.locations.workflowTemplates.instantiateInline",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Required. The \"resource name\" of the workflow template region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "Optional. A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The tag must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/workflowTemplates:instantiateInline",
+	//   "request": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "dataproc.projects.locations.workflowTemplates.list":
+
+type ProjectsLocationsWorkflowTemplatesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists workflows that match the specified filter in the request.
+func (r *ProjectsLocationsWorkflowTemplatesService) List(parent string) *ProjectsLocationsWorkflowTemplatesListCall {
+	c := &ProjectsLocationsWorkflowTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of results to return in each response.
+func (c *ProjectsLocationsWorkflowTemplatesListCall) PageSize(pageSize int64) *ProjectsLocationsWorkflowTemplatesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The page token,
+// returned by a previous call, to request the next page of results.
+func (c *ProjectsLocationsWorkflowTemplatesListCall) PageToken(pageToken string) *ProjectsLocationsWorkflowTemplatesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsWorkflowTemplatesListCall) Fields(s ...googleapi.Field) *ProjectsLocationsWorkflowTemplatesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsWorkflowTemplatesListCall) IfNoneMatch(entityTag string) *ProjectsLocationsWorkflowTemplatesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsWorkflowTemplatesListCall) Context(ctx context.Context) *ProjectsLocationsWorkflowTemplatesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsWorkflowTemplatesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsWorkflowTemplatesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/workflowTemplates")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.locations.workflowTemplates.list" call.
+// Exactly one of *ListWorkflowTemplatesResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *ListWorkflowTemplatesResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsLocationsWorkflowTemplatesListCall) Do(opts ...googleapi.CallOption) (*ListWorkflowTemplatesResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListWorkflowTemplatesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists workflows that match the specified filter in the request.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates",
+	//   "httpMethod": "GET",
+	//   "id": "dataproc.projects.locations.workflowTemplates.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "Optional. The maximum number of results to return in each response.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Optional. The page token, returned by a previous call, to request the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "Required. The \"resource name\" of the region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/workflowTemplates",
+	//   "response": {
+	//     "$ref": "ListWorkflowTemplatesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsLocationsWorkflowTemplatesListCall) Pages(ctx context.Context, f func(*ListWorkflowTemplatesResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "dataproc.projects.locations.workflowTemplates.setIamPolicy":
 
 type ProjectsLocationsWorkflowTemplatesSetIamPolicyCall struct {
@@ -2893,6 +4342,143 @@
 
 }
 
+// method id "dataproc.projects.locations.workflowTemplates.update":
+
+type ProjectsLocationsWorkflowTemplatesUpdateCall struct {
+	s                *Service
+	name             string
+	workflowtemplate *WorkflowTemplate
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// Update: Updates (replaces) workflow template. The updated template
+// must contain version that matches the current server version.
+func (r *ProjectsLocationsWorkflowTemplatesService) Update(name string, workflowtemplate *WorkflowTemplate) *ProjectsLocationsWorkflowTemplatesUpdateCall {
+	c := &ProjectsLocationsWorkflowTemplatesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.workflowtemplate = workflowtemplate
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsWorkflowTemplatesUpdateCall) Fields(s ...googleapi.Field) *ProjectsLocationsWorkflowTemplatesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsWorkflowTemplatesUpdateCall) Context(ctx context.Context) *ProjectsLocationsWorkflowTemplatesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsWorkflowTemplatesUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsWorkflowTemplatesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.workflowtemplate)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.locations.workflowTemplates.update" call.
+// Exactly one of *WorkflowTemplate or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *WorkflowTemplate.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsLocationsWorkflowTemplatesUpdateCall) Do(opts ...googleapi.CallOption) (*WorkflowTemplate, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WorkflowTemplate{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates (replaces) workflow template. The updated template must contain version that matches the current server version.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workflowTemplates/{workflowTemplatesId}",
+	//   "httpMethod": "PUT",
+	//   "id": "dataproc.projects.locations.workflowTemplates.update",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Output only. The \"resource name\" of the template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/workflowTemplates/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "request": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "response": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
 // method id "dataproc.projects.regions.clusters.create":
 
 type ProjectsRegionsClustersCreateCall struct {
@@ -6896,6 +8482,438 @@
 
 }
 
+// method id "dataproc.projects.regions.workflowTemplates.create":
+
+type ProjectsRegionsWorkflowTemplatesCreateCall struct {
+	s                *Service
+	parent           string
+	workflowtemplate *WorkflowTemplate
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// Create: Creates new workflow template.
+func (r *ProjectsRegionsWorkflowTemplatesService) Create(parent string, workflowtemplate *WorkflowTemplate) *ProjectsRegionsWorkflowTemplatesCreateCall {
+	c := &ProjectsRegionsWorkflowTemplatesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.workflowtemplate = workflowtemplate
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsRegionsWorkflowTemplatesCreateCall) Fields(s ...googleapi.Field) *ProjectsRegionsWorkflowTemplatesCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsRegionsWorkflowTemplatesCreateCall) Context(ctx context.Context) *ProjectsRegionsWorkflowTemplatesCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsRegionsWorkflowTemplatesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsRegionsWorkflowTemplatesCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.workflowtemplate)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/workflowTemplates")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.regions.workflowTemplates.create" call.
+// Exactly one of *WorkflowTemplate or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *WorkflowTemplate.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsRegionsWorkflowTemplatesCreateCall) Do(opts ...googleapi.CallOption) (*WorkflowTemplate, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WorkflowTemplate{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates new workflow template.",
+	//   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates",
+	//   "httpMethod": "POST",
+	//   "id": "dataproc.projects.regions.workflowTemplates.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Required. The \"resource name\" of the region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/regions/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/workflowTemplates",
+	//   "request": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "response": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "dataproc.projects.regions.workflowTemplates.delete":
+
+type ProjectsRegionsWorkflowTemplatesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes a workflow template. It does not cancel in-progress
+// workflows.
+func (r *ProjectsRegionsWorkflowTemplatesService) Delete(name string) *ProjectsRegionsWorkflowTemplatesDeleteCall {
+	c := &ProjectsRegionsWorkflowTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Version sets the optional parameter "version": The version of
+// workflow template to delete. If specified, will only delete the
+// template if the current server version matches specified version.
+func (c *ProjectsRegionsWorkflowTemplatesDeleteCall) Version(version int64) *ProjectsRegionsWorkflowTemplatesDeleteCall {
+	c.urlParams_.Set("version", fmt.Sprint(version))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsRegionsWorkflowTemplatesDeleteCall) Fields(s ...googleapi.Field) *ProjectsRegionsWorkflowTemplatesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsRegionsWorkflowTemplatesDeleteCall) Context(ctx context.Context) *ProjectsRegionsWorkflowTemplatesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsRegionsWorkflowTemplatesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsRegionsWorkflowTemplatesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.regions.workflowTemplates.delete" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsRegionsWorkflowTemplatesDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes a workflow template. It does not cancel in-progress workflows.",
+	//   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "dataproc.projects.regions.workflowTemplates.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/regions/[^/]+/workflowTemplates/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "version": {
+	//       "description": "Optional. The version of workflow template to delete. If specified, will only delete the template if the current server version matches specified version.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "dataproc.projects.regions.workflowTemplates.get":
+
+type ProjectsRegionsWorkflowTemplatesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Retrieves the latest workflow template.Can retrieve previously
+// instantiated template by specifying optional version parameter.
+func (r *ProjectsRegionsWorkflowTemplatesService) Get(name string) *ProjectsRegionsWorkflowTemplatesGetCall {
+	c := &ProjectsRegionsWorkflowTemplatesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Version sets the optional parameter "version": The version of
+// workflow template to retrieve. Only previously instatiated versions
+// can be retrieved.If unspecified, retrieves the current version.
+func (c *ProjectsRegionsWorkflowTemplatesGetCall) Version(version int64) *ProjectsRegionsWorkflowTemplatesGetCall {
+	c.urlParams_.Set("version", fmt.Sprint(version))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsRegionsWorkflowTemplatesGetCall) Fields(s ...googleapi.Field) *ProjectsRegionsWorkflowTemplatesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsRegionsWorkflowTemplatesGetCall) IfNoneMatch(entityTag string) *ProjectsRegionsWorkflowTemplatesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsRegionsWorkflowTemplatesGetCall) Context(ctx context.Context) *ProjectsRegionsWorkflowTemplatesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsRegionsWorkflowTemplatesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsRegionsWorkflowTemplatesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.regions.workflowTemplates.get" call.
+// Exactly one of *WorkflowTemplate or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *WorkflowTemplate.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsRegionsWorkflowTemplatesGetCall) Do(opts ...googleapi.CallOption) (*WorkflowTemplate, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WorkflowTemplate{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the latest workflow template.Can retrieve previously instantiated template by specifying optional version parameter.",
+	//   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}",
+	//   "httpMethod": "GET",
+	//   "id": "dataproc.projects.regions.workflowTemplates.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/regions/[^/]+/workflowTemplates/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "version": {
+	//       "description": "Optional. The version of workflow template to retrieve. Only previously instatiated versions can be retrieved.If unspecified, retrieves the current version.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
 // method id "dataproc.projects.regions.workflowTemplates.getIamPolicy":
 
 type ProjectsRegionsWorkflowTemplatesGetIamPolicyCall struct {
@@ -7034,6 +9052,497 @@
 
 }
 
+// method id "dataproc.projects.regions.workflowTemplates.instantiate":
+
+type ProjectsRegionsWorkflowTemplatesInstantiateCall struct {
+	s                                  *Service
+	name                               string
+	instantiateworkflowtemplaterequest *InstantiateWorkflowTemplateRequest
+	urlParams_                         gensupport.URLParams
+	ctx_                               context.Context
+	header_                            http.Header
+}
+
+// Instantiate: Instantiates a template and begins execution.The
+// returned Operation can be used to track execution of workflow by
+// polling operations.get. The Operation will complete when entire
+// workflow is finished.The running workflow can be aborted via
+// operations.cancel. This will cause any inflight jobs to be cancelled
+// and workflow-owned clusters to be deleted.The Operation.metadata will
+// be WorkflowMetadata.On successful completion, Operation.response will
+// be Empty.
+func (r *ProjectsRegionsWorkflowTemplatesService) Instantiate(name string, instantiateworkflowtemplaterequest *InstantiateWorkflowTemplateRequest) *ProjectsRegionsWorkflowTemplatesInstantiateCall {
+	c := &ProjectsRegionsWorkflowTemplatesInstantiateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.instantiateworkflowtemplaterequest = instantiateworkflowtemplaterequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateCall) Fields(s ...googleapi.Field) *ProjectsRegionsWorkflowTemplatesInstantiateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateCall) Context(ctx context.Context) *ProjectsRegionsWorkflowTemplatesInstantiateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.instantiateworkflowtemplaterequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:instantiate")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.regions.workflowTemplates.instantiate" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Instantiates a template and begins execution.The returned Operation can be used to track execution of workflow by polling operations.get. The Operation will complete when entire workflow is finished.The running workflow can be aborted via operations.cancel. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted.The Operation.metadata will be WorkflowMetadata.On successful completion, Operation.response will be Empty.",
+	//   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}:instantiate",
+	//   "httpMethod": "POST",
+	//   "id": "dataproc.projects.regions.workflowTemplates.instantiate",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required. The \"resource name\" of the workflow template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/regions/[^/]+/workflowTemplates/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:instantiate",
+	//   "request": {
+	//     "$ref": "InstantiateWorkflowTemplateRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "dataproc.projects.regions.workflowTemplates.instantiateInline":
+
+type ProjectsRegionsWorkflowTemplatesInstantiateInlineCall struct {
+	s                *Service
+	parent           string
+	workflowtemplate *WorkflowTemplate
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// InstantiateInline: Instantiates a template and begins execution.This
+// method is equivalent to executing the sequence
+// CreateWorkflowTemplate, InstantiateWorkflowTemplate,
+// DeleteWorkflowTemplate.The returned Operation can be used to track
+// execution of workflow by polling operations.get. The Operation will
+// complete when entire workflow is finished.The running workflow can be
+// aborted via operations.cancel. This will cause any inflight jobs to
+// be cancelled and workflow-owned clusters to be deleted.The
+// Operation.metadata will be WorkflowMetadata.On successful completion,
+// Operation.response will be Empty.
+func (r *ProjectsRegionsWorkflowTemplatesService) InstantiateInline(parent string, workflowtemplate *WorkflowTemplate) *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall {
+	c := &ProjectsRegionsWorkflowTemplatesInstantiateInlineCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.workflowtemplate = workflowtemplate
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": A tag that
+// prevents multiple concurrent workflow instances with the same tag
+// from running. This mitigates risk of concurrent instances started due
+// to retries.It is recommended to always set this value to a UUID
+// (https://en.wikipedia.org/wiki/Universally_unique_identifier).The tag
+// must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),
+// and hyphens (-). The maximum length is 40 characters.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall) RequestId(requestId string) *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall) Fields(s ...googleapi.Field) *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall) Context(ctx context.Context) *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.workflowtemplate)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/workflowTemplates:instantiateInline")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.regions.workflowTemplates.instantiateInline" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsRegionsWorkflowTemplatesInstantiateInlineCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Instantiates a template and begins execution.This method is equivalent to executing the sequence CreateWorkflowTemplate, InstantiateWorkflowTemplate, DeleteWorkflowTemplate.The returned Operation can be used to track execution of workflow by polling operations.get. The Operation will complete when entire workflow is finished.The running workflow can be aborted via operations.cancel. This will cause any inflight jobs to be cancelled and workflow-owned clusters to be deleted.The Operation.metadata will be WorkflowMetadata.On successful completion, Operation.response will be Empty.",
+	//   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates:instantiateInline",
+	//   "httpMethod": "POST",
+	//   "id": "dataproc.projects.regions.workflowTemplates.instantiateInline",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Required. The \"resource name\" of the workflow template region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/regions/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "Optional. A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The tag must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/workflowTemplates:instantiateInline",
+	//   "request": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "dataproc.projects.regions.workflowTemplates.list":
+
+type ProjectsRegionsWorkflowTemplatesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists workflows that match the specified filter in the request.
+func (r *ProjectsRegionsWorkflowTemplatesService) List(parent string) *ProjectsRegionsWorkflowTemplatesListCall {
+	c := &ProjectsRegionsWorkflowTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of results to return in each response.
+func (c *ProjectsRegionsWorkflowTemplatesListCall) PageSize(pageSize int64) *ProjectsRegionsWorkflowTemplatesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The page token,
+// returned by a previous call, to request the next page of results.
+func (c *ProjectsRegionsWorkflowTemplatesListCall) PageToken(pageToken string) *ProjectsRegionsWorkflowTemplatesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsRegionsWorkflowTemplatesListCall) Fields(s ...googleapi.Field) *ProjectsRegionsWorkflowTemplatesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsRegionsWorkflowTemplatesListCall) IfNoneMatch(entityTag string) *ProjectsRegionsWorkflowTemplatesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsRegionsWorkflowTemplatesListCall) Context(ctx context.Context) *ProjectsRegionsWorkflowTemplatesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsRegionsWorkflowTemplatesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsRegionsWorkflowTemplatesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/workflowTemplates")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.regions.workflowTemplates.list" call.
+// Exactly one of *ListWorkflowTemplatesResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *ListWorkflowTemplatesResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsRegionsWorkflowTemplatesListCall) Do(opts ...googleapi.CallOption) (*ListWorkflowTemplatesResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListWorkflowTemplatesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists workflows that match the specified filter in the request.",
+	//   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates",
+	//   "httpMethod": "GET",
+	//   "id": "dataproc.projects.regions.workflowTemplates.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "Optional. The maximum number of results to return in each response.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Optional. The page token, returned by a previous call, to request the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "Required. The \"resource name\" of the region, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/regions/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/workflowTemplates",
+	//   "response": {
+	//     "$ref": "ListWorkflowTemplatesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsRegionsWorkflowTemplatesListCall) Pages(ctx context.Context, f func(*ListWorkflowTemplatesResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "dataproc.projects.regions.workflowTemplates.setIamPolicy":
 
 type ProjectsRegionsWorkflowTemplatesSetIamPolicyCall struct {
@@ -7311,3 +9820,140 @@
 	// }
 
 }
+
+// method id "dataproc.projects.regions.workflowTemplates.update":
+
+type ProjectsRegionsWorkflowTemplatesUpdateCall struct {
+	s                *Service
+	name             string
+	workflowtemplate *WorkflowTemplate
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// Update: Updates (replaces) workflow template. The updated template
+// must contain version that matches the current server version.
+func (r *ProjectsRegionsWorkflowTemplatesService) Update(name string, workflowtemplate *WorkflowTemplate) *ProjectsRegionsWorkflowTemplatesUpdateCall {
+	c := &ProjectsRegionsWorkflowTemplatesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.workflowtemplate = workflowtemplate
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsRegionsWorkflowTemplatesUpdateCall) Fields(s ...googleapi.Field) *ProjectsRegionsWorkflowTemplatesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsRegionsWorkflowTemplatesUpdateCall) Context(ctx context.Context) *ProjectsRegionsWorkflowTemplatesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsRegionsWorkflowTemplatesUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsRegionsWorkflowTemplatesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.workflowtemplate)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "dataproc.projects.regions.workflowTemplates.update" call.
+// Exactly one of *WorkflowTemplate or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *WorkflowTemplate.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsRegionsWorkflowTemplatesUpdateCall) Do(opts ...googleapi.CallOption) (*WorkflowTemplate, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &WorkflowTemplate{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates (replaces) workflow template. The updated template must contain version that matches the current server version.",
+	//   "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/workflowTemplates/{workflowTemplatesId}",
+	//   "httpMethod": "PUT",
+	//   "id": "dataproc.projects.regions.workflowTemplates.update",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Output only. The \"resource name\" of the template, as described in https://cloud.google.com/apis/design/resource_names of the form projects/{project_id}/regions/{region}/workflowTemplates/{template_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/regions/[^/]+/workflowTemplates/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "request": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "response": {
+	//     "$ref": "WorkflowTemplate"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/dlp/v2/dlp-api.json b/dlp/v2/dlp-api.json
index 41c77e2..71c569f 100644
--- a/dlp/v2/dlp-api.json
+++ b/dlp/v2/dlp-api.json
@@ -1471,7 +1471,7 @@
       }
     }
   },
-  "revision": "20180904",
+  "revision": "20180911",
   "rootUrl": "https://dlp.googleapis.com/",
   "schemas": {
     "GooglePrivacyDlpV2Action": {
@@ -4878,7 +4878,7 @@
       "type": "object"
     },
     "GoogleTypeDate": {
-      "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+      "description": "Represents a whole calendar date, for example date of birth. The time of day\nand time zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day can be 0 to\nrepresent a year and month where the day is not significant, for example\ncredit card expiration date. The year can be 0 to represent a month and day\nindependent of year, for example anniversary date. Related types are\ngoogle.type.TimeOfDay and `google.protobuf.Timestamp`.",
       "id": "GoogleTypeDate",
       "properties": {
         "day": {
diff --git a/dlp/v2/dlp-gen.go b/dlp/v2/dlp-gen.go
index be5a551..22ef436 100644
--- a/dlp/v2/dlp-gen.go
+++ b/dlp/v2/dlp-gen.go
@@ -7166,19 +7166,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// GoogleTypeDate: Represents a whole calendar date, e.g. date of birth.
-// The time of day and
-// time zone are either specified elsewhere or are not significant. The
-// date
-// is relative to the Proleptic Gregorian Calendar. The day may be 0
+// GoogleTypeDate: Represents a whole calendar date, for example date of
+// birth. The time of day
+// and time zone are either specified elsewhere or are not significant.
+// The date
+// is relative to the Proleptic Gregorian Calendar. The day can be 0
 // to
-// represent a year and month where the day is not significant, e.g.
-// credit card
-// expiration date. The year may be 0 to represent a month and day
-// independent
-// of year, e.g. anniversary date. Related types are
-// google.type.TimeOfDay
-// and `google.protobuf.Timestamp`.
+// represent a year and month where the day is not significant, for
+// example
+// credit card expiration date. The year can be 0 to represent a month
+// and day
+// independent of year, for example anniversary date. Related types
+// are
+// google.type.TimeOfDay and `google.protobuf.Timestamp`.
 type GoogleTypeDate struct {
 	// Day: Day of month. Must be from 1 to 31 and valid for the year and
 	// month, or 0
diff --git a/file/v1beta1/file-api.json b/file/v1beta1/file-api.json
new file mode 100644
index 0000000..d9c7cfb
--- /dev/null
+++ b/file/v1beta1/file-api.json
@@ -0,0 +1,1012 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://file.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Cloud Filestore",
+  "description": "The Cloud Filestore API is used for creating and managing cloud file servers.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/filestore/",
+  "fullyEncodeReservedExpansion": true,
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "id": "file:v1beta1",
+  "kind": "discovery#restDescription",
+  "name": "file",
+  "ownerDomain": "google.com",
+  "ownerName": "Google",
+  "parameters": {
+    "$.xgafv": {
+      "description": "V1 error format.",
+      "enum": [
+        "1",
+        "2"
+      ],
+      "enumDescriptions": [
+        "v1 error format",
+        "v2 error format"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "access_token": {
+      "description": "OAuth access token.",
+      "location": "query",
+      "type": "string"
+    },
+    "alt": {
+      "default": "json",
+      "description": "Data format for response.",
+      "enum": [
+        "json",
+        "media",
+        "proto"
+      ],
+      "enumDescriptions": [
+        "Responses with Content-Type of application/json",
+        "Media download with context-dependent Content-Type",
+        "Responses with Content-Type of application/x-protobuf"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "callback": {
+      "description": "JSONP",
+      "location": "query",
+      "type": "string"
+    },
+    "fields": {
+      "description": "Selector specifying which fields to include in a partial response.",
+      "location": "query",
+      "type": "string"
+    },
+    "key": {
+      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+      "location": "query",
+      "type": "string"
+    },
+    "oauth_token": {
+      "description": "OAuth 2.0 token for the current user.",
+      "location": "query",
+      "type": "string"
+    },
+    "prettyPrint": {
+      "default": "true",
+      "description": "Returns response with indentations and line breaks.",
+      "location": "query",
+      "type": "boolean"
+    },
+    "quotaUser": {
+      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+      "location": "query",
+      "type": "string"
+    },
+    "uploadType": {
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    }
+  },
+  "protocol": "rest",
+  "resources": {
+    "projects": {
+      "resources": {
+        "locations": {
+          "methods": {
+            "get": {
+              "description": "Gets information about a location.",
+              "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}",
+              "httpMethod": "GET",
+              "id": "file.projects.locations.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "Resource name for the location.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/locations/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "Location"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists information about the supported locations for this service.",
+              "flatPath": "v1beta1/projects/{projectsId}/locations",
+              "httpMethod": "GET",
+              "id": "file.projects.locations.list",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The standard list filter.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "name": {
+                  "description": "The resource that owns the locations collection, if applicable.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "The standard list page size.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "The standard list page token.",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}/locations",
+              "response": {
+                "$ref": "ListLocationsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          },
+          "resources": {
+            "instances": {
+              "methods": {
+                "create": {
+                  "description": "Creates an instance.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances",
+                  "httpMethod": "POST",
+                  "id": "file.projects.locations.instances.create",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "instanceId": {
+                      "description": "The name of the instance to create.\nThe name must be unique for the specified project and location.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "parent": {
+                      "description": "The instance's project and location, in the format\nprojects/{project_id}/locations/{location}. In Cloud Filestore,\nlocations map to GCP zones, for example **us-west1-b**.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+parent}/instances",
+                  "request": {
+                    "$ref": "Instance"
+                  },
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "delete": {
+                  "description": "Deletes an instance.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+                  "httpMethod": "DELETE",
+                  "id": "file.projects.locations.instances.delete",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The instance resource name, in the format\nprojects/{project_id}/locations/{location}/instances/{instance_id}",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}",
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "get": {
+                  "description": "Gets the details of a specific instance.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+                  "httpMethod": "GET",
+                  "id": "file.projects.locations.instances.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The instance resource name, in the format\nprojects/{project_id}/locations/{location}/instances/{instance_id}.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}",
+                  "response": {
+                    "$ref": "Instance"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists all instances in a project for either a specified location\nor for all locations.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances",
+                  "httpMethod": "GET",
+                  "id": "file.projects.locations.instances.list",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "filter": {
+                      "description": "List filter.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "orderBy": {
+                      "description": "Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "pageSize": {
+                      "description": "The maximum number of items to return.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "The next_page_token value to use if there are additional\nresults to retrieve for this list request.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "parent": {
+                      "description": "The project and location for which to retrieve instance information,\nin the format projects/{project_id}/locations/{location}. In Cloud\nFilestore, locations map to GCP zones, for example **us-west1-b**. To\nretrieve instance information for all locations, use \"-\" for the {location}\nvalue.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+parent}/instances",
+                  "response": {
+                    "$ref": "ListInstancesResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "patch": {
+                  "description": "Updates the settings of a specific instance.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+                  "httpMethod": "PATCH",
+                  "id": "file.projects.locations.instances.patch",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Output only.\nThe resource name of the instance, in the format\nprojects/{project_id}/locations/{location_id}/instances/{instance_id}.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "updateMask": {
+                      "description": "Mask of fields to update.  At least one path must be supplied in this\nfield.  The elements of the repeated paths field may only include these\nfields:\n\"description\"",
+                      "format": "google-fieldmask",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}",
+                  "request": {
+                    "$ref": "Instance"
+                  },
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            },
+            "operations": {
+              "methods": {
+                "cancel": {
+                  "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+                  "httpMethod": "POST",
+                  "id": "file.projects.locations.operations.cancel",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The name of the operation resource to be cancelled.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}:cancel",
+                  "request": {
+                    "$ref": "CancelOperationRequest"
+                  },
+                  "response": {
+                    "$ref": "Empty"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "delete": {
+                  "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                  "httpMethod": "DELETE",
+                  "id": "file.projects.locations.operations.delete",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The name of the operation resource to be deleted.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}",
+                  "response": {
+                    "$ref": "Empty"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "get": {
+                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                  "httpMethod": "GET",
+                  "id": "file.projects.locations.operations.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The name of the operation resource.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}",
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations",
+                  "httpMethod": "GET",
+                  "id": "file.projects.locations.operations.list",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "filter": {
+                      "description": "The standard list filter.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "name": {
+                      "description": "The name of the operation's parent resource.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "pageSize": {
+                      "description": "The standard list page size.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "The standard list page token.",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}/operations",
+                  "response": {
+                    "$ref": "ListOperationsResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20180820",
+  "rootUrl": "https://file.googleapis.com/",
+  "schemas": {
+    "CancelOperationRequest": {
+      "description": "The request message for Operations.CancelOperation.",
+      "id": "CancelOperationRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "ClientList": {
+      "description": "The sets of network addresses and DNS names for hosts to which a given\nexport or share should be allowed or denied.",
+      "id": "ClientList",
+      "properties": {
+        "hostNames": {
+          "description": "DNS names of hosts, with optional wildcards.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "ipAddresses": {
+          "description": "IPv4 addresses in the format\n{octet 1}.{octet 2}.{octet 3}.{octet 4}.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Empty": {
+      "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+      "id": "Empty",
+      "properties": {},
+      "type": "object"
+    },
+    "Export": {
+      "description": "File share export specification.",
+      "id": "Export",
+      "properties": {
+        "allowedClients": {
+          "$ref": "ClientList",
+          "description": "The clients which may connect."
+        },
+        "async": {
+          "description": "Writes may be completed when not yet on stable storage.",
+          "type": "boolean"
+        },
+        "deniedClients": {
+          "$ref": "ClientList",
+          "description": "The clients which may not connect."
+        },
+        "networks": {
+          "description": "Networks on which the export should appear.\nIf none are specified, the default is all networks to which the instance is\nconnected to.",
+          "items": {
+            "$ref": "NetworkConfig"
+          },
+          "type": "array"
+        },
+        "nfsExport": {
+          "$ref": "NfsExport",
+          "description": "Export rule for NFS"
+        },
+        "path": {
+          "description": "Path to export (either \"\" or of the form /file_share_name[/subdir]).",
+          "type": "string"
+        },
+        "readOnly": {
+          "description": "Whether the file share should be exported as read-only.",
+          "type": "boolean"
+        },
+        "smbExport": {
+          "$ref": "SmbExport",
+          "description": "Export rule for SMB"
+        }
+      },
+      "type": "object"
+    },
+    "FileShareConfig": {
+      "description": "File share configuration for the instance.",
+      "id": "FileShareConfig",
+      "properties": {
+        "capacityGb": {
+          "description": "File share capacity in gigabytes (GB).\nCloud Filestore defines 1 GB as 1024^3 bytes.",
+          "format": "int64",
+          "type": "string"
+        },
+        "deleted": {
+          "description": "Delete requested. The file share will be deleted.",
+          "type": "boolean"
+        },
+        "enabled": {
+          "description": "Service enabled.\n\nWhen enabled, the instance exposes the exports to the user for mounting.",
+          "type": "boolean"
+        },
+        "exports": {
+          "description": "Exports.\nIf protocols and exports are both zero-length, a default protocol of\nNFSV3 and a default export of \"*\" are provided, and enabled is set to\ntrue.",
+          "items": {
+            "$ref": "Export"
+          },
+          "type": "array"
+        },
+        "name": {
+          "description": "The name of the file share (must be 16 characters or less).",
+          "type": "string"
+        },
+        "protocols": {
+          "description": "Protocols supported.",
+          "enumDescriptions": [
+            "MODE_UNSPECIFIED serves a \"not set\" default value when a FileShareProtocol\nis a separate field in a message.",
+            "NFS 3.0",
+            "NFS 4.0",
+            "NFS 4.1",
+            "SMB 2.0",
+            "SMB 2.1",
+            "SMB 3.0"
+          ],
+          "items": {
+            "enum": [
+              "FILE_SHARE_PROTOCOL_UNSPECIFIED",
+              "NFS_V3",
+              "NFS_V4_0",
+              "NFS_V4_1",
+              "SMB_V2_0",
+              "SMB_V2_1",
+              "SMB_V3"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Instance": {
+      "description": "A Cloud Filestore instance.",
+      "id": "Instance",
+      "properties": {
+        "createTime": {
+          "description": "Output only.\nThe time when the instance was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "description": {
+          "description": "Optional. A description of the instance (2048 characters or less).",
+          "type": "string"
+        },
+        "etag": {
+          "description": "Server-specified ETag for the instance resource to prevent simultaneous\nupdates from overwriting each other.",
+          "type": "string"
+        },
+        "fileShares": {
+          "description": "File system shares on the instance.\nFor this version, only a single file share is supported.",
+          "items": {
+            "$ref": "FileShareConfig"
+          },
+          "type": "array"
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Resource labels to represent user provided metadata.",
+          "type": "object"
+        },
+        "loggingService": {
+          "description": "The logging service the instance should use to write logs.\nCurrently available options:\n\n* `logging.googleapis.com` - the Google Cloud Logging service.\n* `none` - no logs will be exported from the instance.\n* if left as an empty string,`logging.googleapis.com` will be used.",
+          "type": "string"
+        },
+        "monitoringService": {
+          "description": "The monitoring service the instance should use to write metrics.\nCurrently available options:\n\n* `monitoring.googleapis.com` - the Google Cloud Monitoring service.\n* `none` - no metrics will be exported from the instance.\n* if left as an empty string, `monitoring.googleapis.com` will be used.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only.\nThe resource name of the instance, in the format\nprojects/{project_id}/locations/{location_id}/instances/{instance_id}.",
+          "type": "string"
+        },
+        "networks": {
+          "description": "VPC networks to which the instance is connected.\nFor this version, only a single network is supported.",
+          "items": {
+            "$ref": "NetworkConfig"
+          },
+          "type": "array"
+        },
+        "state": {
+          "description": "Output only.\nThe instance state.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "CREATING",
+            "READY",
+            "REPAIRING",
+            "DELETING",
+            "ERROR"
+          ],
+          "enumDescriptions": [
+            "State not set.",
+            "The instance is being created.",
+            "The instance is available for use.",
+            "Work is being done on the instance. You can get further details from the\n`statusMessage` field of the `Instance` resource.",
+            "The instance is shutting down.",
+            "The instance is experiencing an issue and might be unusable. You can get\nfurther details from the `statusMessage` field of the `Instance`\nresource."
+          ],
+          "type": "string"
+        },
+        "statusMessage": {
+          "description": "Output only.\nAdditional information about the instance state, if available.",
+          "type": "string"
+        },
+        "tier": {
+          "description": "The service tier of the instance.",
+          "enum": [
+            "TIER_UNSPECIFIED",
+            "STANDARD",
+            "PREMIUM"
+          ],
+          "enumDescriptions": [
+            "Not set.",
+            "STANDARD tier.",
+            "PREMIUM tier."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListInstancesResponse": {
+      "description": "ListInstancesResponse is the result of ListInstancesRequest.",
+      "id": "ListInstancesResponse",
+      "properties": {
+        "instances": {
+          "description": "A list of instances in the project for the specified location.\n\nIf the {location} value in the request is \"-\", the response contains a list\nof instances from all locations. If any location is unreachable, the\nresponse will only return instances in reachable locations and the\n\"unreachable\" field will be populated with a list of unreachable locations.",
+          "items": {
+            "$ref": "Instance"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "The token you can use to retrieve the next page of results. Not returned\nif there are no more results in the list.",
+          "type": "string"
+        },
+        "unreachable": {
+          "description": "Locations that could not be reached.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListLocationsResponse": {
+      "description": "The response message for Locations.ListLocations.",
+      "id": "ListLocationsResponse",
+      "properties": {
+        "locations": {
+          "description": "A list of locations that matches the specified filter in the request.",
+          "items": {
+            "$ref": "Location"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "The standard List next-page token.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListOperationsResponse": {
+      "description": "The response message for Operations.ListOperations.",
+      "id": "ListOperationsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The standard List next-page token.",
+          "type": "string"
+        },
+        "operations": {
+          "description": "A list of operations that matches the specified filter in the request.",
+          "items": {
+            "$ref": "Operation"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Location": {
+      "description": "A resource that represents Google Cloud Platform location.",
+      "id": "Location",
+      "properties": {
+        "displayName": {
+          "description": "The friendly name for this location, typically a nearby city name.\nFor example, \"Tokyo\".",
+          "type": "string"
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Cross-service attributes for the location. For example\n\n    {\"cloud.googleapis.com/region\": \"us-east1\"}",
+          "type": "object"
+        },
+        "locationId": {
+          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
+          "type": "string"
+        },
+        "metadata": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "Service-specific metadata. For example the available capacity at the given\nlocation.",
+          "type": "object"
+        },
+        "name": {
+          "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "NetworkConfig": {
+      "description": "Network configuration for the instance.",
+      "id": "NetworkConfig",
+      "properties": {
+        "ipAddresses": {
+          "description": "Output only.\nIPv4 addresses in the format\n{octet 1}.{octet 2}.{octet 3}.{octet 4} or IPv6 addresses in the format\n{block 1}:{block 2}:{block 3}:{block 4}:{block 5}:{block 6}:{block 7}:{block 8}.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "modes": {
+          "description": "Internet protocol versions for which the instance has IP addresses\nassigned. For this version, only MODE_IPV4 is supported.",
+          "enumDescriptions": [
+            "Internet protocol not set.",
+            "Use the IPv4 internet protocol.",
+            "Use the IPv6 internet protocol."
+          ],
+          "items": {
+            "enum": [
+              "ADDRESS_MODE_UNSPECIFIED",
+              "MODE_IPV4",
+              "MODE_IPV6"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "network": {
+          "description": "The name of the Google Compute Engine\n[VPC network](/compute/docs/networks-and-firewalls#networks) to which the\ninstance is connected.",
+          "type": "string"
+        },
+        "reservedIpRange": {
+          "description": "A /29 CIDR block in one of the\n[internal IP address ranges](https://www.arin.net/knowledge/address_filters.html)\nthat identifies the range of IP addresses reserved for this\ninstance. For example, 10.0.0.0/29 or 192.168.0.0/29. The range you specify\ncan't overlap with either existing subnets or assigned IP address ranges\nfor other Cloud Filestore instances in the selected VPC network.",
+          "type": "string"
+        },
+        "subnetwork": {
+          "description": "Output only.\nThe name of the Google Compute Engine\n[subnetwork](/compute/docs/subnetworks) to which the\ninstance is connected.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "NfsExport": {
+      "description": "NfsExport specifies attributes of a given NFS export rule.",
+      "id": "NfsExport",
+      "properties": {
+        "anonymousGid": {
+          "description": "GID for anonymous or squashed GIDs.",
+          "format": "int64",
+          "type": "string"
+        },
+        "anonymousUid": {
+          "description": "UID for anonymous or squashed UIDs.",
+          "format": "int64",
+          "type": "string"
+        },
+        "protocols": {
+          "description": "Network transport protocols to be enabled.\nThe default is TCP.",
+          "enumDescriptions": [
+            "MODE_UNSPECIFIED serves a \"not set\" default value when this type is a\nseparate field in a message.",
+            "Transport Control Protocol.",
+            "User Datagram Protocol."
+          ],
+          "items": {
+            "enum": [
+              "NETWORK_PROTOCOLS_UNSPECIFIED",
+              "TCP",
+              "UDP"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "squash": {
+          "description": "The mode of mapping of UIDs and GIDs (if any).",
+          "enum": [
+            "SQUASH_MODE_UNSPECIFIED",
+            "ROOT",
+            "ALL"
+          ],
+          "enumDescriptions": [
+            "No mapping.",
+            "UID 0 maps to anon_uid and GID 0 maps to anon_gid.",
+            "All UIDs map to anon_uid and all GIDs map to anon_gid."
+          ],
+          "type": "string"
+        },
+        "unauthenticatedLocksAllowed": {
+          "description": "If unauthenticated_locks_allowed is true, locking requests do not require\nauthentication.",
+          "type": "boolean"
+        },
+        "userPortsAllowed": {
+          "description": "If user_ports_allowed is true, client ports greater than or equal to 1024\nare allowed.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "Operation": {
+      "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+      "id": "Operation",
+      "properties": {
+        "done": {
+          "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+          "type": "boolean"
+        },
+        "error": {
+          "$ref": "Status",
+          "description": "The error result of the operation in case of failure or cancellation."
+        },
+        "metadata": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+          "type": "object"
+        },
+        "name": {
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "type": "string"
+        },
+        "response": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "OperationMetadata": {
+      "description": "Represents the metadata of the long-running operation.",
+      "id": "OperationMetadata",
+      "properties": {
+        "apiVersion": {
+          "description": "[Output only] API version used to start the operation.",
+          "type": "string"
+        },
+        "cancelRequested": {
+          "description": "[Output only] Identifies whether the user has requested cancellation\nof the operation. Operations that have successfully been cancelled\nhave Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+          "type": "boolean"
+        },
+        "createTime": {
+          "description": "[Output only] The time the operation was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "endTime": {
+          "description": "[Output only] The time the operation finished running.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "statusDetail": {
+          "description": "[Output only] Human-readable status of the operation, if any.",
+          "type": "string"
+        },
+        "target": {
+          "description": "[Output only] Server-defined resource path for the target of the operation.",
+          "type": "string"
+        },
+        "verb": {
+          "description": "[Output only] Name of the verb executed by the operation.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "SmbExport": {
+      "description": "SmbExport defines attributes of a given SMB sharing rule.",
+      "id": "SmbExport",
+      "properties": {
+        "browsable": {
+          "description": "If true, allow clients to see this share when browsing the instance for\nshares.",
+          "type": "boolean"
+        },
+        "fileShare": {
+          "description": "The published name of the share (if different from name).",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Status": {
+      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "id": "Status",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Cloud Filestore API",
+  "version": "v1beta1",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/file/v1beta1/file-gen.go b/file/v1beta1/file-gen.go
new file mode 100644
index 0000000..dbf8bd5
--- /dev/null
+++ b/file/v1beta1/file-gen.go
@@ -0,0 +1,2754 @@
+// Package file provides access to the Cloud Filestore API.
+//
+// See https://cloud.google.com/filestore/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/file/v1beta1"
+//   ...
+//   fileService, err := file.New(oauthHttpClient)
+package file // import "google.golang.org/api/file/v1beta1"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "file:v1beta1"
+const apiName = "file"
+const apiVersion = "v1beta1"
+const basePath = "https://file.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Projects = NewProjectsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Projects *ProjectsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.Locations = NewProjectsLocationsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Locations *ProjectsLocationsService
+}
+
+func NewProjectsLocationsService(s *Service) *ProjectsLocationsService {
+	rs := &ProjectsLocationsService{s: s}
+	rs.Instances = NewProjectsLocationsInstancesService(s)
+	rs.Operations = NewProjectsLocationsOperationsService(s)
+	return rs
+}
+
+type ProjectsLocationsService struct {
+	s *Service
+
+	Instances *ProjectsLocationsInstancesService
+
+	Operations *ProjectsLocationsOperationsService
+}
+
+func NewProjectsLocationsInstancesService(s *Service) *ProjectsLocationsInstancesService {
+	rs := &ProjectsLocationsInstancesService{s: s}
+	return rs
+}
+
+type ProjectsLocationsInstancesService struct {
+	s *Service
+}
+
+func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService {
+	rs := &ProjectsLocationsOperationsService{s: s}
+	return rs
+}
+
+type ProjectsLocationsOperationsService struct {
+	s *Service
+}
+
+// CancelOperationRequest: The request message for
+// Operations.CancelOperation.
+type CancelOperationRequest struct {
+}
+
+// ClientList: The sets of network addresses and DNS names for hosts to
+// which a given
+// export or share should be allowed or denied.
+type ClientList struct {
+	// HostNames: DNS names of hosts, with optional wildcards.
+	HostNames []string `json:"hostNames,omitempty"`
+
+	// IpAddresses: IPv4 addresses in the format
+	// {octet 1}.{octet 2}.{octet 3}.{octet 4}.
+	IpAddresses []string `json:"ipAddresses,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HostNames") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HostNames") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ClientList) MarshalJSON() ([]byte, error) {
+	type NoMethod ClientList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Empty: 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 `{}`.
+type Empty struct {
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+}
+
+// Export: File share export specification.
+type Export struct {
+	// AllowedClients: The clients which may connect.
+	AllowedClients *ClientList `json:"allowedClients,omitempty"`
+
+	// Async: Writes may be completed when not yet on stable storage.
+	Async bool `json:"async,omitempty"`
+
+	// DeniedClients: The clients which may not connect.
+	DeniedClients *ClientList `json:"deniedClients,omitempty"`
+
+	// Networks: Networks on which the export should appear.
+	// If none are specified, the default is all networks to which the
+	// instance is
+	// connected to.
+	Networks []*NetworkConfig `json:"networks,omitempty"`
+
+	// NfsExport: Export rule for NFS
+	NfsExport *NfsExport `json:"nfsExport,omitempty"`
+
+	// Path: Path to export (either "" or of the form
+	// /file_share_name[/subdir]).
+	Path string `json:"path,omitempty"`
+
+	// ReadOnly: Whether the file share should be exported as read-only.
+	ReadOnly bool `json:"readOnly,omitempty"`
+
+	// SmbExport: Export rule for SMB
+	SmbExport *SmbExport `json:"smbExport,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AllowedClients") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AllowedClients") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Export) MarshalJSON() ([]byte, error) {
+	type NoMethod Export
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// FileShareConfig: File share configuration for the instance.
+type FileShareConfig struct {
+	// CapacityGb: File share capacity in gigabytes (GB).
+	// Cloud Filestore defines 1 GB as 1024^3 bytes.
+	CapacityGb int64 `json:"capacityGb,omitempty,string"`
+
+	// Deleted: Delete requested. The file share will be deleted.
+	Deleted bool `json:"deleted,omitempty"`
+
+	// Enabled: Service enabled.
+	//
+	// When enabled, the instance exposes the exports to the user for
+	// mounting.
+	Enabled bool `json:"enabled,omitempty"`
+
+	// Exports: Exports.
+	// If protocols and exports are both zero-length, a default protocol
+	// of
+	// NFSV3 and a default export of "*" are provided, and enabled is set
+	// to
+	// true.
+	Exports []*Export `json:"exports,omitempty"`
+
+	// Name: The name of the file share (must be 16 characters or less).
+	Name string `json:"name,omitempty"`
+
+	// Protocols: Protocols supported.
+	//
+	// Possible values:
+	//   "FILE_SHARE_PROTOCOL_UNSPECIFIED" - MODE_UNSPECIFIED serves a "not
+	// set" default value when a FileShareProtocol
+	// is a separate field in a message.
+	//   "NFS_V3" - NFS 3.0
+	//   "NFS_V4_0" - NFS 4.0
+	//   "NFS_V4_1" - NFS 4.1
+	//   "SMB_V2_0" - SMB 2.0
+	//   "SMB_V2_1" - SMB 2.1
+	//   "SMB_V3" - SMB 3.0
+	Protocols []string `json:"protocols,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CapacityGb") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CapacityGb") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *FileShareConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod FileShareConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Instance: A Cloud Filestore instance.
+type Instance struct {
+	// CreateTime: Output only.
+	// The time when the instance was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Description: Optional. A description of the instance (2048 characters
+	// or less).
+	Description string `json:"description,omitempty"`
+
+	// Etag: Server-specified ETag for the instance resource to prevent
+	// simultaneous
+	// updates from overwriting each other.
+	Etag string `json:"etag,omitempty"`
+
+	// FileShares: File system shares on the instance.
+	// For this version, only a single file share is supported.
+	FileShares []*FileShareConfig `json:"fileShares,omitempty"`
+
+	// Labels: Resource labels to represent user provided metadata.
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// LoggingService: The logging service the instance should use to write
+	// logs.
+	// Currently available options:
+	//
+	// * `logging.googleapis.com` - the Google Cloud Logging service.
+	// * `none` - no logs will be exported from the instance.
+	// * if left as an empty string,`logging.googleapis.com` will be used.
+	LoggingService string `json:"loggingService,omitempty"`
+
+	// MonitoringService: The monitoring service the instance should use to
+	// write metrics.
+	// Currently available options:
+	//
+	// * `monitoring.googleapis.com` - the Google Cloud Monitoring
+	// service.
+	// * `none` - no metrics will be exported from the instance.
+	// * if left as an empty string, `monitoring.googleapis.com` will be
+	// used.
+	MonitoringService string `json:"monitoringService,omitempty"`
+
+	// Name: Output only.
+	// The resource name of the instance, in the
+	// format
+	// projects/{project_id}/locations/{location_id}/instances/{instan
+	// ce_id}.
+	Name string `json:"name,omitempty"`
+
+	// Networks: VPC networks to which the instance is connected.
+	// For this version, only a single network is supported.
+	Networks []*NetworkConfig `json:"networks,omitempty"`
+
+	// State: Output only.
+	// The instance state.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - State not set.
+	//   "CREATING" - The instance is being created.
+	//   "READY" - The instance is available for use.
+	//   "REPAIRING" - Work is being done on the instance. You can get
+	// further details from the
+	// `statusMessage` field of the `Instance` resource.
+	//   "DELETING" - The instance is shutting down.
+	//   "ERROR" - The instance is experiencing an issue and might be
+	// unusable. You can get
+	// further details from the `statusMessage` field of the
+	// `Instance`
+	// resource.
+	State string `json:"state,omitempty"`
+
+	// StatusMessage: Output only.
+	// Additional information about the instance state, if available.
+	StatusMessage string `json:"statusMessage,omitempty"`
+
+	// Tier: The service tier of the instance.
+	//
+	// Possible values:
+	//   "TIER_UNSPECIFIED" - Not set.
+	//   "STANDARD" - STANDARD tier.
+	//   "PREMIUM" - PREMIUM tier.
+	Tier string `json:"tier,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CreateTime") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Instance) MarshalJSON() ([]byte, error) {
+	type NoMethod Instance
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListInstancesResponse: ListInstancesResponse is the result of
+// ListInstancesRequest.
+type ListInstancesResponse struct {
+	// Instances: A list of instances in the project for the specified
+	// location.
+	//
+	// If the {location} value in the request is "-", the response contains
+	// a list
+	// of instances from all locations. If any location is unreachable,
+	// the
+	// response will only return instances in reachable locations and
+	// the
+	// "unreachable" field will be populated with a list of unreachable
+	// locations.
+	Instances []*Instance `json:"instances,omitempty"`
+
+	// NextPageToken: The token you can use to retrieve the next page of
+	// results. Not returned
+	// if there are no more results in the list.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Unreachable: Locations that could not be reached.
+	Unreachable []string `json:"unreachable,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Instances") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Instances") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListInstancesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListInstancesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListLocationsResponse: The response message for
+// Locations.ListLocations.
+type ListLocationsResponse struct {
+	// Locations: A list of locations that matches the specified filter in
+	// the request.
+	Locations []*Location `json:"locations,omitempty"`
+
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Locations") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Locations") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListLocationsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListLocationsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListOperationsResponse: The response message for
+// Operations.ListOperations.
+type ListOperationsResponse struct {
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Operations: A list of operations that matches the specified filter in
+	// the request.
+	Operations []*Operation `json:"operations,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListOperationsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Location: A resource that represents Google Cloud Platform location.
+type Location struct {
+	// DisplayName: The friendly name for this location, typically a nearby
+	// city name.
+	// For example, "Tokyo".
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Labels: Cross-service attributes for the location. For example
+	//
+	//     {"cloud.googleapis.com/region": "us-east1"}
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// LocationId: The canonical id for this location. For example:
+	// "us-east1".
+	LocationId string `json:"locationId,omitempty"`
+
+	// Metadata: Service-specific metadata. For example the available
+	// capacity at the given
+	// location.
+	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
+
+	// Name: Resource name for the location, which may vary between
+	// implementations.
+	// For example: "projects/example-project/locations/us-east1"
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "DisplayName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DisplayName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Location) MarshalJSON() ([]byte, error) {
+	type NoMethod Location
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// NetworkConfig: Network configuration for the instance.
+type NetworkConfig struct {
+	// IpAddresses: Output only.
+	// IPv4 addresses in the format
+	// {octet 1}.{octet 2}.{octet 3}.{octet 4} or IPv6 addresses in the
+	// format
+	// {block 1}:{block 2}:{block 3}:{block 4}:{block 5}:{block 6}:{block
+	// 7}:{block 8}.
+	IpAddresses []string `json:"ipAddresses,omitempty"`
+
+	// Modes: Internet protocol versions for which the instance has IP
+	// addresses
+	// assigned. For this version, only MODE_IPV4 is supported.
+	//
+	// Possible values:
+	//   "ADDRESS_MODE_UNSPECIFIED" - Internet protocol not set.
+	//   "MODE_IPV4" - Use the IPv4 internet protocol.
+	//   "MODE_IPV6" - Use the IPv6 internet protocol.
+	Modes []string `json:"modes,omitempty"`
+
+	// Network: The name of the Google Compute Engine
+	// [VPC network](/compute/docs/networks-and-firewalls#networks) to which
+	// the
+	// instance is connected.
+	Network string `json:"network,omitempty"`
+
+	// ReservedIpRange: A /29 CIDR block in one of the
+	// [internal IP address
+	// ranges](https://www.arin.net/knowledge/address_filters.html)
+	// that identifies the range of IP addresses reserved for this
+	// instance. For example, 10.0.0.0/29 or 192.168.0.0/29. The range you
+	// specify
+	// can't overlap with either existing subnets or assigned IP address
+	// ranges
+	// for other Cloud Filestore instances in the selected VPC network.
+	ReservedIpRange string `json:"reservedIpRange,omitempty"`
+
+	// Subnetwork: Output only.
+	// The name of the Google Compute
+	// Engine
+	// [subnetwork](/compute/docs/subnetworks) to which the
+	// instance is connected.
+	Subnetwork string `json:"subnetwork,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "IpAddresses") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "IpAddresses") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *NetworkConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod NetworkConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// NfsExport: NfsExport specifies attributes of a given NFS export rule.
+type NfsExport struct {
+	// AnonymousGid: GID for anonymous or squashed GIDs.
+	AnonymousGid int64 `json:"anonymousGid,omitempty,string"`
+
+	// AnonymousUid: UID for anonymous or squashed UIDs.
+	AnonymousUid int64 `json:"anonymousUid,omitempty,string"`
+
+	// Protocols: Network transport protocols to be enabled.
+	// The default is TCP.
+	//
+	// Possible values:
+	//   "NETWORK_PROTOCOLS_UNSPECIFIED" - MODE_UNSPECIFIED serves a "not
+	// set" default value when this type is a
+	// separate field in a message.
+	//   "TCP" - Transport Control Protocol.
+	//   "UDP" - User Datagram Protocol.
+	Protocols []string `json:"protocols,omitempty"`
+
+	// Squash: The mode of mapping of UIDs and GIDs (if any).
+	//
+	// Possible values:
+	//   "SQUASH_MODE_UNSPECIFIED" - No mapping.
+	//   "ROOT" - UID 0 maps to anon_uid and GID 0 maps to anon_gid.
+	//   "ALL" - All UIDs map to anon_uid and all GIDs map to anon_gid.
+	Squash string `json:"squash,omitempty"`
+
+	// UnauthenticatedLocksAllowed: If unauthenticated_locks_allowed is
+	// true, locking requests do not require
+	// authentication.
+	UnauthenticatedLocksAllowed bool `json:"unauthenticatedLocksAllowed,omitempty"`
+
+	// UserPortsAllowed: If user_ports_allowed is true, client ports greater
+	// than or equal to 1024
+	// are allowed.
+	UserPortsAllowed bool `json:"userPortsAllowed,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AnonymousGid") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AnonymousGid") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *NfsExport) MarshalJSON() ([]byte, error) {
+	type NoMethod NfsExport
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Operation: This resource represents a long-running operation that is
+// the result of a
+// network API call.
+type Operation struct {
+	// Done: 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.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure or
+	// cancellation.
+	Error *Status `json:"error,omitempty"`
+
+	// 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.
+	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
+
+	// Name: 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`.
+	Name string `json:"name,omitempty"`
+
+	// 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 googleapi.RawMessage `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Done") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Operation) MarshalJSON() ([]byte, error) {
+	type NoMethod Operation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// OperationMetadata: Represents the metadata of the long-running
+// operation.
+type OperationMetadata struct {
+	// ApiVersion: [Output only] API version used to start the operation.
+	ApiVersion string `json:"apiVersion,omitempty"`
+
+	// CancelRequested: [Output only] Identifies whether the user has
+	// requested cancellation
+	// of the operation. Operations that have successfully been
+	// cancelled
+	// have Operation.error value with a google.rpc.Status.code of
+	// 1,
+	// corresponding to `Code.CANCELLED`.
+	CancelRequested bool `json:"cancelRequested,omitempty"`
+
+	// CreateTime: [Output only] The time the operation was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// EndTime: [Output only] The time the operation finished running.
+	EndTime string `json:"endTime,omitempty"`
+
+	// StatusDetail: [Output only] Human-readable status of the operation,
+	// if any.
+	StatusDetail string `json:"statusDetail,omitempty"`
+
+	// Target: [Output only] Server-defined resource path for the target of
+	// the operation.
+	Target string `json:"target,omitempty"`
+
+	// Verb: [Output only] Name of the verb executed by the operation.
+	Verb string `json:"verb,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ApiVersion") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ApiVersion") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *OperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod OperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// SmbExport: SmbExport defines attributes of a given SMB sharing rule.
+type SmbExport struct {
+	// Browsable: If true, allow clients to see this share when browsing the
+	// instance for
+	// shares.
+	Browsable bool `json:"browsable,omitempty"`
+
+	// FileShare: The published name of the share (if different from name).
+	FileShare string `json:"fileShare,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Browsable") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Browsable") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SmbExport) MarshalJSON() ([]byte, error) {
+	type NoMethod SmbExport
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Status: 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` that 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.
+//
+// - 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.
+type Status struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There is a
+	// common set of
+	// message types for APIs to use.
+	Details []googleapi.RawMessage `json:"details,omitempty"`
+
+	// Message: 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.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Status) MarshalJSON() ([]byte, error) {
+	type NoMethod Status
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "file.projects.locations.get":
+
+type ProjectsLocationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets information about a location.
+func (r *ProjectsLocationsService) Get(name string) *ProjectsLocationsGetCall {
+	c := &ProjectsLocationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsGetCall) Context(ctx context.Context) *ProjectsLocationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.get" call.
+// Exactly one of *Location or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Location.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsGetCall) Do(opts ...googleapi.CallOption) (*Location, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Location{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets information about a location.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "file.projects.locations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Resource name for the location.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Location"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "file.projects.locations.list":
+
+type ProjectsLocationsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists information about the supported locations for this
+// service.
+func (r *ProjectsLocationsService) List(name string) *ProjectsLocationsListCall {
+	c := &ProjectsLocationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *ProjectsLocationsListCall) Filter(filter string) *ProjectsLocationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *ProjectsLocationsListCall) PageSize(pageSize int64) *ProjectsLocationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *ProjectsLocationsListCall) PageToken(pageToken string) *ProjectsLocationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsListCall) Context(ctx context.Context) *ProjectsLocationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}/locations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.list" call.
+// Exactly one of *ListLocationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListLocationsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsLocationsListCall) Do(opts ...googleapi.CallOption) (*ListLocationsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListLocationsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists information about the supported locations for this service.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations",
+	//   "httpMethod": "GET",
+	//   "id": "file.projects.locations.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The resource that owns the locations collection, if applicable.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}/locations",
+	//   "response": {
+	//     "$ref": "ListLocationsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsLocationsListCall) Pages(ctx context.Context, f func(*ListLocationsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "file.projects.locations.instances.create":
+
+type ProjectsLocationsInstancesCreateCall struct {
+	s          *Service
+	parent     string
+	instance   *Instance
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates an instance.
+func (r *ProjectsLocationsInstancesService) Create(parent string, instance *Instance) *ProjectsLocationsInstancesCreateCall {
+	c := &ProjectsLocationsInstancesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.instance = instance
+	return c
+}
+
+// InstanceId sets the optional parameter "instanceId": The name of the
+// instance to create.
+// The name must be unique for the specified project and location.
+func (c *ProjectsLocationsInstancesCreateCall) InstanceId(instanceId string) *ProjectsLocationsInstancesCreateCall {
+	c.urlParams_.Set("instanceId", instanceId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsInstancesCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsInstancesCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsInstancesCreateCall) Context(ctx context.Context) *ProjectsLocationsInstancesCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsInstancesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsInstancesCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.instance)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/instances")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.instances.create" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsInstancesCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates an instance.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances",
+	//   "httpMethod": "POST",
+	//   "id": "file.projects.locations.instances.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "instanceId": {
+	//       "description": "The name of the instance to create.\nThe name must be unique for the specified project and location.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The instance's project and location, in the format\nprojects/{project_id}/locations/{location}. In Cloud Filestore,\nlocations map to GCP zones, for example **us-west1-b**.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/instances",
+	//   "request": {
+	//     "$ref": "Instance"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "file.projects.locations.instances.delete":
+
+type ProjectsLocationsInstancesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes an instance.
+func (r *ProjectsLocationsInstancesService) Delete(name string) *ProjectsLocationsInstancesDeleteCall {
+	c := &ProjectsLocationsInstancesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsInstancesDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsInstancesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsInstancesDeleteCall) Context(ctx context.Context) *ProjectsLocationsInstancesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsInstancesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsInstancesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.instances.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsInstancesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes an instance.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "file.projects.locations.instances.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The instance resource name, in the format\nprojects/{project_id}/locations/{location}/instances/{instance_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "file.projects.locations.instances.get":
+
+type ProjectsLocationsInstancesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the details of a specific instance.
+func (r *ProjectsLocationsInstancesService) Get(name string) *ProjectsLocationsInstancesGetCall {
+	c := &ProjectsLocationsInstancesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsInstancesGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsInstancesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsInstancesGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsInstancesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsInstancesGetCall) Context(ctx context.Context) *ProjectsLocationsInstancesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsInstancesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsInstancesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.instances.get" call.
+// Exactly one of *Instance or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Instance.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsInstancesGetCall) Do(opts ...googleapi.CallOption) (*Instance, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Instance{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the details of a specific instance.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+	//   "httpMethod": "GET",
+	//   "id": "file.projects.locations.instances.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The instance resource name, in the format\nprojects/{project_id}/locations/{location}/instances/{instance_id}.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Instance"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "file.projects.locations.instances.list":
+
+type ProjectsLocationsInstancesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists all instances in a project for either a specified
+// location
+// or for all locations.
+func (r *ProjectsLocationsInstancesService) List(parent string) *ProjectsLocationsInstancesListCall {
+	c := &ProjectsLocationsInstancesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": List filter.
+func (c *ProjectsLocationsInstancesListCall) Filter(filter string) *ProjectsLocationsInstancesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// OrderBy sets the optional parameter "orderBy": Sort results.
+// Supported values are "name", "name desc" or "" (unsorted).
+func (c *ProjectsLocationsInstancesListCall) OrderBy(orderBy string) *ProjectsLocationsInstancesListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of items to return.
+func (c *ProjectsLocationsInstancesListCall) PageSize(pageSize int64) *ProjectsLocationsInstancesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The
+// next_page_token value to use if there are additional
+// results to retrieve for this list request.
+func (c *ProjectsLocationsInstancesListCall) PageToken(pageToken string) *ProjectsLocationsInstancesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsInstancesListCall) Fields(s ...googleapi.Field) *ProjectsLocationsInstancesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsInstancesListCall) IfNoneMatch(entityTag string) *ProjectsLocationsInstancesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsInstancesListCall) Context(ctx context.Context) *ProjectsLocationsInstancesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsInstancesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsInstancesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/instances")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.instances.list" call.
+// Exactly one of *ListInstancesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListInstancesResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsLocationsInstancesListCall) Do(opts ...googleapi.CallOption) (*ListInstancesResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListInstancesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists all instances in a project for either a specified location\nor for all locations.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances",
+	//   "httpMethod": "GET",
+	//   "id": "file.projects.locations.instances.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "List filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The maximum number of items to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The next_page_token value to use if there are additional\nresults to retrieve for this list request.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The project and location for which to retrieve instance information,\nin the format projects/{project_id}/locations/{location}. In Cloud\nFilestore, locations map to GCP zones, for example **us-west1-b**. To\nretrieve instance information for all locations, use \"-\" for the {location}\nvalue.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/instances",
+	//   "response": {
+	//     "$ref": "ListInstancesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsLocationsInstancesListCall) Pages(ctx context.Context, f func(*ListInstancesResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "file.projects.locations.instances.patch":
+
+type ProjectsLocationsInstancesPatchCall struct {
+	s          *Service
+	name       string
+	instance   *Instance
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates the settings of a specific instance.
+func (r *ProjectsLocationsInstancesService) Patch(name string, instance *Instance) *ProjectsLocationsInstancesPatchCall {
+	c := &ProjectsLocationsInstancesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.instance = instance
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": Mask of fields
+// to update.  At least one path must be supplied in this
+// field.  The elements of the repeated paths field may only include
+// these
+// fields:
+// "description"
+func (c *ProjectsLocationsInstancesPatchCall) UpdateMask(updateMask string) *ProjectsLocationsInstancesPatchCall {
+	c.urlParams_.Set("updateMask", updateMask)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsInstancesPatchCall) Fields(s ...googleapi.Field) *ProjectsLocationsInstancesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsInstancesPatchCall) Context(ctx context.Context) *ProjectsLocationsInstancesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsInstancesPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsInstancesPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.instance)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.instances.patch" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsInstancesPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates the settings of a specific instance.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "file.projects.locations.instances.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Output only.\nThe resource name of the instance, in the format\nprojects/{project_id}/locations/{location_id}/instances/{instance_id}.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "Mask of fields to update.  At least one path must be supplied in this\nfield.  The elements of the repeated paths field may only include these\nfields:\n\"description\"",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "request": {
+	//     "$ref": "Instance"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "file.projects.locations.operations.cancel":
+
+type ProjectsLocationsOperationsCancelCall struct {
+	s                      *Service
+	name                   string
+	canceloperationrequest *CancelOperationRequest
+	urlParams_             gensupport.URLParams
+	ctx_                   context.Context
+	header_                http.Header
+}
+
+// Cancel: 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`.
+func (r *ProjectsLocationsOperationsService) Cancel(name string, canceloperationrequest *CancelOperationRequest) *ProjectsLocationsOperationsCancelCall {
+	c := &ProjectsLocationsOperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.canceloperationrequest = canceloperationrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsOperationsCancelCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsCancelCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsOperationsCancelCall) Context(ctx context.Context) *ProjectsLocationsOperationsCancelCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsOperationsCancelCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.canceloperationrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:cancel")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.operations.cancel" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsLocationsOperationsCancelCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+	//   "httpMethod": "POST",
+	//   "id": "file.projects.locations.operations.cancel",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource to be cancelled.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}:cancel",
+	//   "request": {
+	//     "$ref": "CancelOperationRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "file.projects.locations.operations.delete":
+
+type ProjectsLocationsOperationsDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: 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`.
+func (r *ProjectsLocationsOperationsService) Delete(name string) *ProjectsLocationsOperationsDeleteCall {
+	c := &ProjectsLocationsOperationsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsOperationsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsOperationsDeleteCall) Context(ctx context.Context) *ProjectsLocationsOperationsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsOperationsDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.operations.delete" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsLocationsOperationsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "file.projects.locations.operations.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource to be deleted.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "file.projects.locations.operations.get":
+
+type ProjectsLocationsOperationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: 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.
+func (r *ProjectsLocationsOperationsService) Get(name string) *ProjectsLocationsOperationsGetCall {
+	c := &ProjectsLocationsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsOperationsGetCall) Context(ctx context.Context) *ProjectsLocationsOperationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsOperationsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.operations.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "file.projects.locations.operations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "file.projects.locations.operations.list":
+
+type ProjectsLocationsOperationsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: 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 allows API services to override the
+// binding
+// to use different resource name schemes, such as `users/*/operations`.
+// To
+// override the binding, API services can add a binding such
+// as
+// "/v1/{name=users/*}/operations" to their service configuration.
+// For backwards compatibility, the default name includes the
+// operations
+// collection id, however overriding users must ensure the name
+// binding
+// is the parent resource, without the operations collection id.
+func (r *ProjectsLocationsOperationsService) List(name string) *ProjectsLocationsOperationsListCall {
+	c := &ProjectsLocationsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *ProjectsLocationsOperationsListCall) Filter(filter string) *ProjectsLocationsOperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *ProjectsLocationsOperationsListCall) PageSize(pageSize int64) *ProjectsLocationsOperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *ProjectsLocationsOperationsListCall) PageToken(pageToken string) *ProjectsLocationsOperationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsOperationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsOperationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsOperationsListCall) Context(ctx context.Context) *ProjectsLocationsOperationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsOperationsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}/operations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "file.projects.locations.operations.list" call.
+// Exactly one of *ListOperationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOperationsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsLocationsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListOperationsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations",
+	//   "httpMethod": "GET",
+	//   "id": "file.projects.locations.operations.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the operation's parent resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}/operations",
+	//   "response": {
+	//     "$ref": "ListOperationsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsLocationsOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
diff --git a/jobs/v2/jobs-api.json b/jobs/v2/jobs-api.json
index b93ad8b..ae634ba 100644
--- a/jobs/v2/jobs-api.json
+++ b/jobs/v2/jobs-api.json
@@ -614,7 +614,7 @@
       }
     }
   },
-  "revision": "20180821",
+  "revision": "20180906",
   "rootUrl": "https://jobs.googleapis.com/",
   "schemas": {
     "BatchDeleteJobsRequest": {
@@ -3191,7 +3191,7 @@
         },
         "histogramResults": {
           "$ref": "HistogramResults",
-          "description": "The histogram results that match with specified\nSearchJobsRequest.HistogramFacets."
+          "description": "The histogram results that match specified\nSearchJobsRequest.HistogramFacets."
         },
         "jobView": {
           "description": "Corresponds to SearchJobsRequest.job_view.",
diff --git a/jobs/v2/jobs-gen.go b/jobs/v2/jobs-gen.go
index aeb3e95..34684ad 100644
--- a/jobs/v2/jobs-gen.go
+++ b/jobs/v2/jobs-gen.go
@@ -5176,7 +5176,7 @@
 	// seenenable_precise_result_size.
 	EstimatedTotalSize int64 `json:"estimatedTotalSize,omitempty,string"`
 
-	// HistogramResults: The histogram results that match with
+	// HistogramResults: The histogram results that match
 	// specified
 	// SearchJobsRequest.HistogramFacets.
 	HistogramResults *HistogramResults `json:"histogramResults,omitempty"`
diff --git a/jobs/v3/jobs-api.json b/jobs/v3/jobs-api.json
index 4551ef7..60f4f78 100644
--- a/jobs/v3/jobs-api.json
+++ b/jobs/v3/jobs-api.json
@@ -593,7 +593,7 @@
       }
     }
   },
-  "revision": "20180821",
+  "revision": "20180906",
   "rootUrl": "https://jobs.googleapis.com/",
   "schemas": {
     "ApplicationInfo": {
@@ -1248,7 +1248,7 @@
           "type": "array"
         },
         "simpleHistogramFacets": {
-          "description": "Optional. Specifies the simple type of histogram facets, for example,\n`COMPANY_SIZE`, `EMPLOYMENT_TYPE` etc. This field is equivalent to\nGetHistogramRequest.",
+          "description": "Optional.\n\nSpecifies the simple type of histogram facets, for example,\n`COMPANY_SIZE`, `EMPLOYMENT_TYPE` etc.",
           "enumDescriptions": [
             "The default value if search type is not specified.",
             "Filter by the company id field.",
@@ -2298,7 +2298,7 @@
           "type": "integer"
         },
         "orderBy": {
-          "description": "Optional.\n\nThe criteria determining how search results are sorted. Default is\n\"relevance desc\".\n\nSupported options are:\n  * \"relevance desc\": By relevance descending, as determined by the API\n    algorithms. Relevance thresholding of query results is only available\n    with this ordering.\n  * \"posting_publish_time desc\": By Job.posting_publish_time\n    descending.\n  * \"posting_update_time desc\": By Job.posting_update_time descending.\n  * \"title\": By Job.title ascending.\n  * \"title desc\": By Job.title descending.\n  * \"annualized_base_compensation\": By job's\n    CompensationInfo.annualized_base_compensation ascending. If job's\n    annualized base compensation is unspecified, they are put at the end of\n    search result.\n  * \"annualized_base_compensation desc\": By job's\n    CompensationInfo.annualized_base_compensation descending. If job's\n    annualized base compensation is unspecified, they are put at the end of\n    search result.\n  * \"annualized_total_compensation\": By job's\n    CompensationInfo.annualized_total_compensation ascending. If job's\n    annualized total compensation is unspecified, they are put at the end\n    of search result.\n  * \"annualized_total_compensation desc\": By job's\n    CompensationInfo.annualized_total_compensation descending. If job's\n    annualized total compensation is unspecified, they are put at the end\n    of search result.",
+          "description": "Optional.\n\nThe criteria determining how search results are sorted. Default is\n\"relevance desc\".\n\nSupported options are:\n\n* \"relevance desc\": By relevance descending, as determined by the API\nalgorithms. Relevance thresholding of query results is only available\nwith this ordering.\n* \"posting_publish_time desc\": By Job.posting_publish_time descending.\n* \"posting_update_time desc\": By Job.posting_update_time descending.\n* \"title\": By Job.title ascending.\n* \"title desc\": By Job.title descending.\n* \"annualized_base_compensation\": By job's\nCompensationInfo.annualized_base_compensation_range ascending. Jobs\nwhose annualized base compensation is unspecified are put at the end of\nsearch results.\n* \"annualized_base_compensation desc\": By job's\nCompensationInfo.annualized_base_compensation_range descending. Jobs\nwhose annualized base compensation is unspecified are put at the end of\nsearch results.\n* \"annualized_total_compensation\": By job's\nCompensationInfo.annualized_total_compensation_range ascending. Jobs\nwhose annualized base compensation is unspecified are put at the end of\nsearch results.\n* \"annualized_total_compensation desc\": By job's\nCompensationInfo.annualized_total_compensation_range descending. Jobs\nwhose annualized base compensation is unspecified are put at the end of\nsearch results.",
           "type": "string"
         },
         "pageSize": {
@@ -2351,7 +2351,7 @@
         },
         "histogramResults": {
           "$ref": "HistogramResults",
-          "description": "The histogram results that match with specified\nSearchJobsRequest.histogram_facets."
+          "description": "The histogram results that match specified\nSearchJobsRequest.histogram_facets."
         },
         "locationFilters": {
           "description": "The location filters that the service applied to the specified query. If\nany filters are lat-lng based, the JobLocation.location_type is\nJobLocation.LocationType#LOCATION_TYPE_UNSPECIFIED.",
diff --git a/jobs/v3/jobs-gen.go b/jobs/v3/jobs-gen.go
index 4272e43..5df27cd 100644
--- a/jobs/v3/jobs-gen.go
+++ b/jobs/v3/jobs-gen.go
@@ -1409,11 +1409,11 @@
 	// allowed.
 	CustomAttributeHistogramFacets []*CustomAttributeHistogramRequest `json:"customAttributeHistogramFacets,omitempty"`
 
-	// SimpleHistogramFacets: Optional. Specifies the simple type of
-	// histogram facets, for example,
-	// `COMPANY_SIZE`, `EMPLOYMENT_TYPE` etc. This field is equivalent
-	// to
-	// GetHistogramRequest.
+	// SimpleHistogramFacets: Optional.
+	//
+	// Specifies the simple type of histogram facets, for
+	// example,
+	// `COMPANY_SIZE`, `EMPLOYMENT_TYPE` etc.
 	//
 	// Possible values:
 	//   "SEARCH_TYPE_UNSPECIFIED" - The default value if search type is not
@@ -3628,41 +3628,46 @@
 	// "relevance desc".
 	//
 	// Supported options are:
-	//   * "relevance desc": By relevance descending, as determined by the
+	//
+	// * "relevance desc": By relevance descending, as determined by the
 	// API
-	//     algorithms. Relevance thresholding of query results is only
+	// algorithms. Relevance thresholding of query results is only
 	// available
-	//     with this ordering.
-	//   * "posting_publish_time desc": By Job.posting_publish_time
-	//     descending.
-	//   * "posting_update_time desc": By Job.posting_update_time
+	// with this ordering.
+	// * "posting_publish_time desc": By Job.posting_publish_time
 	// descending.
-	//   * "title": By Job.title ascending.
-	//   * "title desc": By Job.title descending.
-	//   * "annualized_base_compensation": By job's
-	//     CompensationInfo.annualized_base_compensation ascending. If
+	// * "posting_update_time desc": By Job.posting_update_time
+	// descending.
+	// * "title": By Job.title ascending.
+	// * "title desc": By Job.title descending.
+	// * "annualized_base_compensation": By
 	// job's
-	//     annualized base compensation is unspecified, they are put at the
-	// end of
-	//     search result.
-	//   * "annualized_base_compensation desc": By job's
-	//     CompensationInfo.annualized_base_compensation descending. If
+	// CompensationInfo.annualized_base_compensation_range ascending.
+	// Jobs
+	// whose annualized base compensation is unspecified are put at the end
+	// of
+	// search results.
+	// * "annualized_base_compensation desc": By
 	// job's
-	//     annualized base compensation is unspecified, they are put at the
-	// end of
-	//     search result.
-	//   * "annualized_total_compensation": By job's
-	//     CompensationInfo.annualized_total_compensation ascending. If
+	// CompensationInfo.annualized_base_compensation_range descending.
+	// Jobs
+	// whose annualized base compensation is unspecified are put at the end
+	// of
+	// search results.
+	// * "annualized_total_compensation": By
 	// job's
-	//     annualized total compensation is unspecified, they are put at the
-	// end
-	//     of search result.
-	//   * "annualized_total_compensation desc": By job's
-	//     CompensationInfo.annualized_total_compensation descending. If
+	// CompensationInfo.annualized_total_compensation_range ascending.
+	// Jobs
+	// whose annualized base compensation is unspecified are put at the end
+	// of
+	// search results.
+	// * "annualized_total_compensation desc": By
 	// job's
-	//     annualized total compensation is unspecified, they are put at the
-	// end
-	//     of search result.
+	// CompensationInfo.annualized_total_compensation_range descending.
+	// Jobs
+	// whose annualized base compensation is unspecified are put at the end
+	// of
+	// search results.
 	OrderBy string `json:"orderBy,omitempty"`
 
 	// PageSize: Optional.
@@ -3781,7 +3786,7 @@
 	// see enable_precise_result_size.
 	EstimatedTotalSize int64 `json:"estimatedTotalSize,omitempty"`
 
-	// HistogramResults: The histogram results that match with
+	// HistogramResults: The histogram results that match
 	// specified
 	// SearchJobsRequest.histogram_facets.
 	HistogramResults *HistogramResults `json:"histogramResults,omitempty"`
diff --git a/logging/v2/logging-api.json b/logging/v2/logging-api.json
index 06ddb30..3c28509 100644
--- a/logging/v2/logging-api.json
+++ b/logging/v2/logging-api.json
@@ -499,7 +499,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -539,7 +539,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -1150,7 +1150,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -1190,7 +1190,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -1698,7 +1698,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -1738,7 +1738,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -2301,7 +2301,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -2341,7 +2341,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -2514,7 +2514,7 @@
               "type": "boolean"
             },
             "updateMask": {
-              "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+              "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
               "format": "google-fieldmask",
               "location": "query",
               "type": "string"
@@ -2535,7 +2535,7 @@
       }
     }
   },
-  "revision": "20180831",
+  "revision": "20180908",
   "rootUrl": "https://logging.googleapis.com/",
   "schemas": {
     "BucketOptions": {
@@ -2770,7 +2770,7 @@
           "type": "array"
         },
         "resourceNames": {
-          "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list. Only one of the permissions, \u003ccode\u003elogging.logEntries.list\u003c/code\u003e or \u003ccode\u003elogging.privateLogEntries.list\u003c/code\u003e, is needed for each parent resource.",
+          "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list.",
           "items": {
             "type": "string"
           },
@@ -3583,7 +3583,7 @@
           "type": "object"
         },
         "logName": {
-          "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\" or \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". The permission \u003ccode\u003elogging.logEntries.create\u003c/code\u003e is needed on each project, organization, billing account, or folder that is receiving new log entries, whether the resource is specified in \u003ccode\u003elogName\u003c/code\u003e or in an individual log entry. For more information about log names, see LogEntry.",
+          "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example:\n\"projects/my-project-id/logs/syslog\"\n\"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\"\nThe permission \u003ccode\u003elogging.logEntries.create\u003c/code\u003e is needed on each project, organization, billing account, or folder that is receiving new log entries, whether the resource is specified in \u003ccode\u003elogName\u003c/code\u003e or in an individual log entry.",
           "type": "string"
         },
         "partialSuccess": {
diff --git a/logging/v2/logging-gen.go b/logging/v2/logging-gen.go
index 0dc5cf0..b203876 100644
--- a/logging/v2/logging-gen.go
+++ b/logging/v2/logging-gen.go
@@ -775,10 +775,7 @@
 	// "bi
 	// llingAccounts/[BILLING_ACCOUNT_ID]"
 	// "folders/[FOLDER_ID]"
-	// Projects listed in the project_ids field are added to this list. Only
-	// one of the permissions, <code>logging.logEntries.list</code> or
-	// <code>logging.privateLogEntries.list</code>, is needed for each
-	// parent resource.
+	// Projects listed in the project_ids field are added to this list.
 	ResourceNames []string `json:"resourceNames,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Filter") to
@@ -2225,14 +2222,15 @@
 	// "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[
 	// LOG_ID]"
 	// "folders/[FOLDER_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%2Fa
-	// ctivity". The permission <code>logging.logEntries.create</code> is
-	// needed on each project, organization, billing account, or folder that
-	// is receiving new log entries, whether the resource is specified in
-	// <code>logName</code> or in an individual log entry. For more
-	// information about log names, see LogEntry.
+	// [LOG_ID] must be URL-encoded. For
+	// example:
+	// "projects/my-project-id/logs/syslog"
+	// "organizations/123456789
+	// 0/logs/cloudresourcemanager.googleapis.com%2Factivity"
+	// The permission <code>logging.logEntries.create</code> is needed on
+	// each project, organization, billing account, or folder that is
+	// receiving new log entries, whether the resource is specified in
+	// <code>logName</code> or in an individual log entry.
 	LogName string `json:"logName,omitempty"`
 
 	// PartialSuccess: Optional. Whether valid entries should be written
@@ -4038,7 +4036,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *BillingAccountsSinksPatchCall) UpdateMask(updateMask string) *BillingAccountsSinksPatchCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -4153,7 +4151,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
@@ -4220,7 +4218,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *BillingAccountsSinksUpdateCall) UpdateMask(updateMask string) *BillingAccountsSinksUpdateCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -4335,7 +4333,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
@@ -7143,7 +7141,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *FoldersSinksPatchCall) UpdateMask(updateMask string) *FoldersSinksPatchCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -7258,7 +7256,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
@@ -7325,7 +7323,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *FoldersSinksUpdateCall) UpdateMask(updateMask string) *FoldersSinksUpdateCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -7440,7 +7438,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
@@ -9723,7 +9721,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *OrganizationsSinksPatchCall) UpdateMask(updateMask string) *OrganizationsSinksPatchCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -9838,7 +9836,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
@@ -9905,7 +9903,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *OrganizationsSinksUpdateCall) UpdateMask(updateMask string) *OrganizationsSinksUpdateCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -10020,7 +10018,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
@@ -12537,7 +12535,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *ProjectsSinksPatchCall) UpdateMask(updateMask string) *ProjectsSinksPatchCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -12652,7 +12650,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
@@ -12719,7 +12717,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *ProjectsSinksUpdateCall) UpdateMask(updateMask string) *ProjectsSinksUpdateCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -12834,7 +12832,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
@@ -13528,7 +13526,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *SinksUpdateCall) UpdateMask(updateMask string) *SinksUpdateCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -13643,7 +13641,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
diff --git a/logging/v2beta1/logging-api.json b/logging/v2beta1/logging-api.json
index 43b74eb..a7224e7 100644
--- a/logging/v2beta1/logging-api.json
+++ b/logging/v2beta1/logging-api.json
@@ -721,7 +721,7 @@
                   "type": "boolean"
                 },
                 "updateMask": {
-                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                  "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
                   "format": "google-fieldmask",
                   "location": "query",
                   "type": "string"
@@ -744,7 +744,7 @@
       }
     }
   },
-  "revision": "20180831",
+  "revision": "20180908",
   "rootUrl": "https://logging.googleapis.com/",
   "schemas": {
     "BucketOptions": {
@@ -961,7 +961,7 @@
           "type": "array"
         },
         "resourceNames": {
-          "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list. Only one of the permissions, \u003ccode\u003elogging.logEntries.list\u003c/code\u003e or \u003ccode\u003elogging.privateLogEntries.list\u003c/code\u003e, is needed for each parent resource.",
+          "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list.",
           "items": {
             "type": "string"
           },
@@ -1751,7 +1751,7 @@
           "type": "object"
         },
         "logName": {
-          "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\" or \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". The permission \u003ccode\u003elogging.logEntries.create\u003c/code\u003e is needed on each project, organization, billing account, or folder that is receiving new log entries, whether the resource is specified in \u003ccode\u003elogName\u003c/code\u003e or in an individual log entry. For more information about log names, see LogEntry.",
+          "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example:\n\"projects/my-project-id/logs/syslog\"\n\"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\"\nThe permission \u003ccode\u003elogging.logEntries.create\u003c/code\u003e is needed on each project, organization, billing account, or folder that is receiving new log entries, whether the resource is specified in \u003ccode\u003elogName\u003c/code\u003e or in an individual log entry.",
           "type": "string"
         },
         "partialSuccess": {
diff --git a/logging/v2beta1/logging-gen.go b/logging/v2beta1/logging-gen.go
index a88e783..9a2becb 100644
--- a/logging/v2beta1/logging-gen.go
+++ b/logging/v2beta1/logging-gen.go
@@ -593,10 +593,7 @@
 	// "bi
 	// llingAccounts/[BILLING_ACCOUNT_ID]"
 	// "folders/[FOLDER_ID]"
-	// Projects listed in the project_ids field are added to this list. Only
-	// one of the permissions, <code>logging.logEntries.list</code> or
-	// <code>logging.privateLogEntries.list</code>, is needed for each
-	// parent resource.
+	// Projects listed in the project_ids field are added to this list.
 	ResourceNames []string `json:"resourceNames,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Filter") to
@@ -1987,14 +1984,15 @@
 	// "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[
 	// LOG_ID]"
 	// "folders/[FOLDER_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%2Fa
-	// ctivity". The permission <code>logging.logEntries.create</code> is
-	// needed on each project, organization, billing account, or folder that
-	// is receiving new log entries, whether the resource is specified in
-	// <code>logName</code> or in an individual log entry. For more
-	// information about log names, see LogEntry.
+	// [LOG_ID] must be URL-encoded. For
+	// example:
+	// "projects/my-project-id/logs/syslog"
+	// "organizations/123456789
+	// 0/logs/cloudresourcemanager.googleapis.com%2Factivity"
+	// The permission <code>logging.logEntries.create</code> is needed on
+	// each project, organization, billing account, or folder that is
+	// receiving new log entries, whether the resource is specified in
+	// <code>logName</code> or in an individual log entry.
 	LogName string `json:"logName,omitempty"`
 
 	// PartialSuccess: Optional. Whether valid entries should be written
@@ -4888,7 +4886,7 @@
 // compatibility purposes:  destination,filter,includeChildren At some
 // point in the future, behavior will be removed and specifying an empty
 // updateMask will be an error.For a detailed FieldMask definition, see
-// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample:
 // updateMask=filter.
 func (c *ProjectsSinksUpdateCall) UpdateMask(updateMask string) *ProjectsSinksUpdateCall {
 	c.urlParams_.Set("updateMask", updateMask)
@@ -5003,7 +5001,7 @@
 	//       "type": "boolean"
 	//     },
 	//     "updateMask": {
-	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+	//       "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#FieldMaskExample: updateMask=filter.",
 	//       "format": "google-fieldmask",
 	//       "location": "query",
 	//       "type": "string"
diff --git a/proximitybeacon/v1beta1/proximitybeacon-api.json b/proximitybeacon/v1beta1/proximitybeacon-api.json
index 7fb0dd3..32be8eb 100644
--- a/proximitybeacon/v1beta1/proximitybeacon-api.json
+++ b/proximitybeacon/v1beta1/proximitybeacon-api.json
@@ -642,7 +642,7 @@
       }
     }
   },
-  "revision": "20180610",
+  "revision": "20180909",
   "rootUrl": "https://proximitybeacon.googleapis.com/",
   "schemas": {
     "AdvertisedId": {
@@ -830,7 +830,7 @@
       "type": "object"
     },
     "Date": {
-      "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+      "description": "Represents a whole calendar date, for example date of birth. The time of day\nand time zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day can be 0 to\nrepresent a year and month where the day is not significant, for example\ncredit card expiration date. The year can be 0 to represent a month and day\nindependent of year, for example anniversary date. Related types are\ngoogle.type.TimeOfDay and `google.protobuf.Timestamp`.",
       "id": "Date",
       "properties": {
         "day": {
diff --git a/proximitybeacon/v1beta1/proximitybeacon-gen.go b/proximitybeacon/v1beta1/proximitybeacon-gen.go
index 2f4ec1b..b42694a 100644
--- a/proximitybeacon/v1beta1/proximitybeacon-gen.go
+++ b/proximitybeacon/v1beta1/proximitybeacon-gen.go
@@ -567,19 +567,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Date: Represents a whole calendar date, e.g. date of birth. The time
-// of day and
-// time zone are either specified elsewhere or are not significant. The
-// date
-// is relative to the Proleptic Gregorian Calendar. The day may be 0
+// Date: Represents a whole calendar date, for example date of birth.
+// The time of day
+// and time zone are either specified elsewhere or are not significant.
+// The date
+// is relative to the Proleptic Gregorian Calendar. The day can be 0
 // to
-// represent a year and month where the day is not significant, e.g.
-// credit card
-// expiration date. The year may be 0 to represent a month and day
-// independent
-// of year, e.g. anniversary date. Related types are
-// google.type.TimeOfDay
-// and `google.protobuf.Timestamp`.
+// represent a year and month where the day is not significant, for
+// example
+// credit card expiration date. The year can be 0 to represent a month
+// and day
+// independent of year, for example anniversary date. Related types
+// are
+// google.type.TimeOfDay and `google.protobuf.Timestamp`.
 type Date struct {
 	// Day: Day of month. Must be from 1 to 31 and valid for the year and
 	// month, or 0
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
index 68ea53a..7abed7f 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
@@ -429,7 +429,7 @@
       }
     }
   },
-  "revision": "20180820",
+  "revision": "20180913",
   "rootUrl": "https://serviceconsumermanagement.googleapis.com/",
   "schemas": {
     "AddTenantProjectRequest": {
@@ -1119,7 +1119,7 @@
       "type": "object"
     },
     "HttpRule": {
-      "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind.  The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      SubMessage sub = 2;    // `sub.subfield` is url-mapped\n    }\n    message Message {\n      string text = 1; // content of the resource\n    }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n    http:\n      rules:\n        - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo`  | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      int64 revision = 2;    // becomes a parameter\n      SubMessage sub = 3;    // `sub.subfield` becomes a parameter\n    }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A\u0026param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n   omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n   request) can be classified into three types:\n    (a) Matched in the URL template.\n    (b) Covered by body (if body is `*`, everything except (a) fields;\n        else everything under the body field)\n    (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.",
+      "description": "# gRPC Transcoding\n\ngRPC Transcoding is a feature for mapping between a gRPC method and one or\nmore HTTP REST endpoints. It allows developers to build a single API service\nthat supports both gRPC APIs and REST APIs. Many systems, including [Google\nAPIs](https://github.com/googleapis/googleapis),\n[Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\nGateway](https://github.com/grpc-ecosystem/grpc-gateway),\nand [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\nand use it for large scale production services.\n\n`HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\nhow different portions of the gRPC request message are mapped to the URL\npath, URL query parameters, and HTTP request body. It also controls how the\ngRPC response message is mapped to the HTTP response body. `HttpRule` is\ntypically specified as an `google.api.http` annotation on the gRPC method.\n\nEach mapping specifies a URL path template and an HTTP method. The path\ntemplate may refer to one or more fields in the gRPC request message, as long\nas each field is a non-repeated field with a primitive (non-message) type.\nThe path template controls how fields of the request message are mapped to\nthe URL path.\n\nExample:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get: \"/v1/{name=messages/*\"}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      string name = 1; // Mapped to URL path.\n    }\n    message Message {\n      string text = 1; // The resource content.\n    }\n\nThis enables an HTTP REST to gRPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456`  | `GetMessage(name: \"messages/123456\")`\n\nAny fields in the request message which are not bound by the path template\nautomatically become HTTP query parameters if there is no HTTP request body.\nFor example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get:\"/v1/messages/{message_id}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // Mapped to URL path.\n      int64 revision = 2;    // Mapped to URL query parameter `revision`.\n      SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.\n    }\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to URL query parameters must have a\nprimitive type or a repeated primitive type or a non-repeated message type.\nIn the case of a repeated type, the parameter can be repeated in the URL\nas `...?param=A\u0026param=B`. In the case of a message type, each field of the\nmessage is mapped to a separate parameter, such as\n`...?foo.a=A\u0026foo.b=B\u0026foo.c=C`.\n\nFor HTTP methods that allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice when\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\nThis enables the following two alternative HTTP JSON to RPC mappings:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n## Rules for HTTP mapping\n\n1. Leaf request fields (recursive expansion nested messages in the request\n   message) are classified into three categories:\n   - Fields referred by the path template. They are passed via the URL path.\n   - Fields referred by the HttpRule.body. They are passed via the HTTP\n     request body.\n   - All other fields are passed via the URL query parameters, and the\n     parameter name is the field path in the request message. A repeated\n     field can be represented as multiple query parameters under the same\n     name.\n 2. If HttpRule.body is \"*\", there is no URL query parameter, all fields\n    are passed via URL path and HTTP request body.\n 3. If HttpRule.body is omitted, there is no HTTP request body, all\n    fields are passed via URL path and URL query parameters.\n\n### Path template syntax\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single URL path segment. The syntax `**` matches\nzero or more URL path segments, which must be the last part of the URL path\nexcept the `Verb`.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nThe syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\ncontains any reserved character, such characters should be percent-encoded\nbefore the matching.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path on the client\nside, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\nserver side does the reverse decoding. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{var}`.\n\nIf a variable contains multiple path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path on the\nclient side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\nThe server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\nunchanged. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{+var}`.\n\n## Using gRPC API Service Configuration\n\ngRPC API Service Configuration (service config) is a configuration language\nfor configuring a gRPC service to become a user-facing product. The\nservice config is simply the YAML representation of the `google.api.Service`\nproto message.\n\nAs an alternative to annotating your proto file, you can configure gRPC\ntranscoding in your service config YAML files. You do this by specifying a\n`HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\neffect as the proto annotation. This can be particularly useful if you\nhave a proto that is reused in multiple services. Note that any transcoding\nspecified in the service config will override any matching transcoding\nconfiguration in the proto.\n\nExample:\n\n    http:\n      rules:\n        # Selects a gRPC method and applies HttpRule to it.\n        - selector: example.v1.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\n## Special notes\n\nWhen gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\nproto to JSON conversion must follow the [proto3\nspecification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n\nWhile the single segment variable follows the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\nExpansion, the multi segment variable **does not** follow RFC 6570 Section\n3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs. As the result, gRPC Transcoding uses a custom encoding\nfor multi segment variables.\n\nThe path variables **must not** refer to any repeated or mapped field,\nbecause client libraries are not capable of handling such variable expansion.\n\nThe path variables **must not** capture the leading \"/\" character. The reason\nis that the most common use case \"{var}\" does not capture the leading \"/\"\ncharacter. For consistency, all path variables must share the same behavior.\n\nRepeated message fields must not be mapped to URL query parameters, because\nno client library can support such complicated mapping.\n\nIf an API needs to use a JSON array for request or response body, it can map\nthe request or response body to a repeated field. However, some gRPC\nTranscoding implementations may not support this feature.",
       "id": "HttpRule",
       "properties": {
         "additionalBindings": {
@@ -1137,7 +1137,7 @@
           "type": "array"
         },
         "body": {
-          "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.",
+          "description": "The name of the request field whose value is mapped to the HTTP request\nbody, or `*` for mapping all request fields not captured by the path\npattern to the HTTP body, or omitted for not having any HTTP request body.\n\nNOTE: the referred field must be present at the top-level of the request\nmessage type.",
           "type": "string"
         },
         "custom": {
@@ -1145,11 +1145,11 @@
           "description": "The custom pattern is used for specifying an HTTP method that is not\nincluded in the `pattern` field, such as HEAD, or \"*\" to leave the\nHTTP method unspecified for this rule. The wild-card rule is useful\nfor services that provide content to Web (HTML) clients."
         },
         "delete": {
-          "description": "Used for deleting a resource.",
+          "description": "Maps to HTTP DELETE. Used for deleting a resource.",
           "type": "string"
         },
         "get": {
-          "description": "Used for listing and getting information about resources.",
+          "description": "Maps to HTTP GET. Used for listing and getting information about\nresources.",
           "type": "string"
         },
         "mediaDownload": {
@@ -1161,19 +1161,19 @@
           "description": "Use this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead\n[][google.bytestream.RestByteStream] as an API to your\nconfiguration for Bytestream methods."
         },
         "patch": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PATCH. Used for updating a resource.",
           "type": "string"
         },
         "post": {
-          "description": "Used for creating a resource.",
+          "description": "Maps to HTTP POST. Used for creating a resource or performing an action.",
           "type": "string"
         },
         "put": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PUT. Used for replacing a resource.",
           "type": "string"
         },
         "responseBody": {
-          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nbody of response. Other response fields are ignored. When\nnot set, the response message will be used as HTTP body of response.",
+          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nresponse body. When omitted, the entire response message will be used\nas the HTTP response body.\n\nNOTE: The referred field must be present at the top-level of the response\nmessage type.",
           "type": "string"
         },
         "restCollection": {
@@ -1185,7 +1185,7 @@
           "type": "string"
         },
         "selector": {
-          "description": "Selects methods to which this rule applies.\n\nRefer to selector for syntax details.",
+          "description": "Selects a method to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
         }
       },
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
index 3bfa029..d433547 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
@@ -1660,114 +1660,119 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// HttpRule: `HttpRule` defines the mapping of an RPC method to one or
-// more HTTP
-// REST API methods. The mapping specifies how different portions of the
-// RPC
-// request message are mapped to URL path, URL query parameters,
-// and
-// HTTP request body. The mapping is typically specified as
-// an
-// `google.api.http` annotation on the RPC method,
-// see "google/api/annotations.proto" for details.
+// HttpRule: # gRPC Transcoding
 //
-// The mapping consists of a field specifying the path template
-// and
-// method kind.  The path template can refer to fields in the
-// request
-// message, as in the example below which describes a REST GET
-// operation on a resource collection of messages:
+// gRPC Transcoding is a feature for mapping between a gRPC method and
+// one or
+// more HTTP REST endpoints. It allows developers to build a single API
+// service
+// that supports both gRPC APIs and REST APIs. Many systems, including
+// [Google
+// APIs](https://github.com/googleapis/googleapis),
+// [Cloud Endpoints](https://cloud.google.com/endpoints),
+// [gRPC
+// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
+// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this
+// feature
+// and use it for large scale production services.
 //
+// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping
+// specifies
+// how different portions of the gRPC request message are mapped to the
+// URL
+// path, URL query parameters, and HTTP request body. It also controls
+// how the
+// gRPC response message is mapped to the HTTP response body. `HttpRule`
+// is
+// typically specified as an `google.api.http` annotation on the gRPC
+// method.
+//
+// Each mapping specifies a URL path template and an HTTP method. The
+// path
+// template may refer to one or more fields in the gRPC request message,
+// as long
+// as each field is a non-repeated field with a primitive (non-message)
+// type.
+// The path template controls how fields of the request message are
+// mapped to
+// the URL path.
+//
+// Example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get =
-// "/v1/messages/{message_id}/{sub.subfield}";
+//         option (google.api.http) = {
+//             get: "/v1/{name=messages/*"}"
+//         };
 //       }
 //     }
 //     message GetMessageRequest {
-//       message SubMessage {
-//         string subfield = 1;
-//       }
-//       string message_id = 1; // mapped to the URL
-//       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+//       string name = 1; // Mapped to URL path.
 //     }
 //     message Message {
-//       string text = 1; // content of the resource
+//       string text = 1; // The resource content.
 //     }
 //
-// The same http annotation can alternatively be expressed inside
-// the
-// `GRPC API Configuration` YAML file.
+// This enables an HTTP REST to gRPC mapping as below:
 //
-//     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:
-//
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `GET /v1/messages/123456/foo`  | `GetMessage(message_id: "123456"
-// sub: SubMessage(subfield: "foo"))`
+// `GET /v1/messages/123456`  | `GetMessage(name:
+// "messages/123456")`
 //
-// In general, not only fields but also field paths can be
-// referenced
-// from a path pattern. Fields mapped to the path pattern cannot
-// be
-// repeated and must have a primitive (non-message) type.
-//
-// Any fields in the request message which are not bound by the
-// path
-// pattern automatically become (optional) HTTP query
-// parameters. Assume the following definition of the request
-// message:
-//
+// Any fields in the request message which are not bound by the path
+// template
+// automatically become HTTP query parameters if there is no HTTP
+// request body.
+// For example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get = "/v1/messages/{message_id}";
+//         option (google.api.http) = {
+//             get:"/v1/messages/{message_id}"
+//         };
 //       }
 //     }
 //     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
+//       string message_id = 1; // Mapped to URL path.
+//       int64 revision = 2;    // Mapped to URL query parameter
+// `revision`.
+//       SubMessage sub = 3;    // Mapped to URL query parameter
+// `sub.subfield`.
 //     }
 //
-//
 // This enables a HTTP JSON to RPC mapping as below:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
 // `GetMessage(message_id: "123456" revision: 2 sub:
 // SubMessage(subfield: "foo"))`
 //
-// Note that fields which are mapped to HTTP parameters must have
+// Note that fields which are mapped to URL query parameters must have
 // a
-// primitive type or a repeated primitive type. Message types are
-// not
-// allowed. In the case of a repeated type, the parameter can
-// be
-// repeated in the URL, as in `...?param=A&param=B`.
+// primitive type or a repeated primitive type or a non-repeated message
+// type.
+// In the case of a repeated type, the parameter can be repeated in the
+// URL
+// as `...?param=A&param=B`. In the case of a message type, each field
+// of the
+// message is mapped to a separate parameter, such
+// as
+// `...?foo.a=A&foo.b=B&foo.c=C`.
 //
-// For HTTP method kinds which allow a request body, the `body`
+// For HTTP methods that allow a request body, the `body`
 // field
 // specifies the mapping. Consider a REST update method on the
 // message resource collection:
 //
-//
 //     service Messaging {
 //       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "message"
 //         };
 //       }
@@ -1777,16 +1782,15 @@
 //       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
 // protos JSON encoding:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
 //
 // The special name `*` can be used in the body mapping to define
@@ -1800,7 +1804,7 @@
 //     service Messaging {
 //       rpc UpdateMessage(Message) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "*"
 //         };
 //       }
@@ -1813,16 +1817,16 @@
 //
 // The following HTTP JSON to RPC mapping is enabled:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" text: "Hi!")`
 //
 // Note that when using `*` in the body mapping, it is not possible
 // to
 // have HTTP parameters, as all fields not bound by the path end in
 // the body. This makes this option more rarely used in practice
-// of
+// when
 // defining REST APIs. The common usage of `*` is in custom
 // methods
 // which don't use the URL at all for transferring data.
@@ -1846,38 +1850,39 @@
 //       string user_id = 2;
 //     }
 //
-//
-// This enables the following two alternative HTTP JSON to
-// RPC
+// This enables the following two alternative HTTP JSON to RPC
 // mappings:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
 // `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me"
 // message_id: "123456")`
 //
-// # Rules for HTTP mapping
+// ## Rules for HTTP mapping
 //
-// The rules for mapping HTTP path, query parameters, and body fields
-// to the request message are as follows:
+// 1. Leaf request fields (recursive expansion nested messages in the
+// request
+//    message) are classified into three categories:
+//    - Fields referred by the path template. They are passed via the
+// URL path.
+//    - Fields referred by the HttpRule.body. They are passed via the
+// HTTP
+//      request body.
+//    - All other fields are passed via the URL query parameters, and
+// the
+//      parameter name is the field path in the request message. A
+// repeated
+//      field can be represented as multiple query parameters under the
+// same
+//      name.
+//  2. If HttpRule.body is "*", there is no URL query parameter, all
+// fields
+//     are passed via URL path and HTTP request body.
+//  3. If HttpRule.body is omitted, there is no HTTP request body, all
+//     fields are passed via URL path and URL query parameters.
 //
-// 1. The `body` field specifies either `*` or a field path, or is
-//    omitted. If omitted, it indicates there is no HTTP request
-// body.
-// 2. Leaf fields (recursive expansion of nested messages in the
-//    request) can be classified into three types:
-//     (a) Matched in the URL template.
-//     (b) Covered by body (if body is `*`, everything except (a)
-// fields;
-//         else everything under the body field)
-//     (c) All other fields.
-// 3. URL query parameters found in the HTTP request are mapped to (c)
-// fields.
-// 4. Any body sent with an HTTP request can contain only (b)
-// fields.
-//
-// The syntax of the path template is as follows:
+// ### Path template syntax
 //
 //     Template = "/" Segments [ Verb ] ;
 //     Segments = Segment { "/" Segment } ;
@@ -1886,11 +1891,11 @@
 //     FieldPath = IDENT { "." IDENT } ;
 //     Verb     = ":" LITERAL ;
 //
-// The syntax `*` matches a single path segment. The syntax `**` matches
-// zero
-// or more path segments, which must be the last part of the path except
-// the
-// `Verb`. The syntax `LITERAL` matches literal text in the path.
+// The syntax `*` matches a single URL path segment. The syntax `**`
+// matches
+// zero or more URL path segments, which must be the last part of the
+// URL path
+// except the `Verb`.
 //
 // The syntax `Variable` matches part of the URL path as specified by
 // its
@@ -1900,35 +1905,114 @@
 // `{var}`
 // is equivalent to `{var=*}`.
 //
+// The syntax `LITERAL` matches literal text in the URL path. If the
+// `LITERAL`
+// contains any reserved character, such characters should be
+// percent-encoded
+// before the matching.
+//
 // If a variable contains exactly one path segment, such as "{var}"
 // or
-// "{var=*}", when such a variable is expanded into a URL path, all
-// characters
-// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up
-// in the
-// Discovery Document as `{var}`.
+// "{var=*}", when such a variable is expanded into a URL path on the
+// client
+// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded.
+// The
+// server side does the reverse decoding. Such variables show up in
+// the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{var}`.
 //
-// If a variable contains one or more path segments, such as
+// If a variable contains multiple path segments, such as
 // "{var=foo/*}"
-// or "{var=**}", when such a variable is expanded into a URL path,
-// all
-// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such
-// variables
-// show up in the Discovery Document as `{+var}`.
+// or "{var=**}", when such a variable is expanded into a URL path on
+// the
+// client side, all characters except `[-_.~/0-9a-zA-Z]` are
+// percent-encoded.
+// The server side does the reverse decoding, except "%2F" and "%2f" are
+// left
+// unchanged. Such variables show up in the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{+var}`.
 //
-// NOTE: While the single segment variable matches the semantics of
-// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2
-// Simple String Expansion, the multi segment variable **does not**
-// match
-// RFC 6570 Reserved Expansion. The reason is that the Reserved
+// ## Using gRPC API Service Configuration
+//
+// gRPC API Service Configuration (service config) is a configuration
+// language
+// for configuring a gRPC service to become a user-facing product.
+// The
+// service config is simply the YAML representation of the
+// `google.api.Service`
+// proto message.
+//
+// As an alternative to annotating your proto file, you can configure
+// gRPC
+// transcoding in your service config YAML files. You do this by
+// specifying a
+// `HttpRule` that maps the gRPC method to a REST endpoint, achieving
+// the same
+// effect as the proto annotation. This can be particularly useful if
+// you
+// have a proto that is reused in multiple services. Note that any
+// transcoding
+// specified in the service config will override any matching
+// transcoding
+// configuration in the proto.
+//
+// Example:
+//
+//     http:
+//       rules:
+//         # Selects a gRPC method and applies HttpRule to it.
+//         - selector: example.v1.Messaging.GetMessage
+//           get: /v1/messages/{message_id}/{sub.subfield}
+//
+// ## Special notes
+//
+// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints,
+// the
+// proto to JSON conversion must follow the
+// [proto3
+// specification](https://developers.google.com/protocol-buffers/
+// docs/proto3#json).
+//
+// While the single segment variable follows the semantics of
+// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple
+// String
+// Expansion, the multi segment variable **does not** follow RFC 6570
+// Section
+// 3.2.3 Reserved Expansion. The reason is that the Reserved
 // Expansion
 // does not expand special characters like `?` and `#`, which would
 // lead
-// to invalid URLs.
+// to invalid URLs. As the result, gRPC Transcoding uses a custom
+// encoding
+// for multi segment variables.
 //
-// NOTE: the field paths in variables and in the `body` must not refer
-// to
-// repeated fields or map fields.
+// The path variables **must not** refer to any repeated or mapped
+// field,
+// because client libraries are not capable of handling such variable
+// expansion.
+//
+// The path variables **must not** capture the leading "/" character.
+// The reason
+// is that the most common use case "{var}" does not capture the leading
+// "/"
+// character. For consistency, all path variables must share the same
+// behavior.
+//
+// Repeated message fields must not be mapped to URL query parameters,
+// because
+// no client library can support such complicated mapping.
+//
+// If an API needs to use a JSON array for request or response body, it
+// can map
+// the request or response body to a repeated field. However, some
+// gRPC
+// Transcoding implementations may not support this feature.
 type HttpRule struct {
 	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
 	// bindings must
@@ -1946,12 +2030,15 @@
 	Authorizations []*AuthorizationRule `json:"authorizations,omitempty"`
 
 	// Body: 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 request message type.
+	// request
+	// body, or `*` for mapping all request fields not captured by the
+	// path
+	// pattern to the HTTP body, or omitted for not having any HTTP request
+	// body.
+	//
+	// NOTE: the referred field must be present at the top-level of the
+	// request
+	// message type.
 	Body string `json:"body,omitempty"`
 
 	// Custom: The custom pattern is used for specifying an HTTP method that
@@ -1963,10 +2050,12 @@
 	// for services that provide content to Web (HTML) clients.
 	Custom *CustomHttpPattern `json:"custom,omitempty"`
 
-	// Delete: Used for deleting a resource.
+	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
 	Delete string `json:"delete,omitempty"`
 
-	// Get: Used for listing and getting information about resources.
+	// Get: Maps to HTTP GET. Used for listing and getting information
+	// about
+	// resources.
 	Get string `json:"get,omitempty"`
 
 	// MediaDownload: Use this only for Scotty Requests. Do not use this for
@@ -1983,19 +2072,25 @@
 	// configuration for Bytestream methods.
 	MediaUpload *MediaUpload `json:"mediaUpload,omitempty"`
 
-	// Patch: Used for updating a resource.
+	// Patch: Maps to HTTP PATCH. Used for updating a resource.
 	Patch string `json:"patch,omitempty"`
 
-	// Post: Used for creating a resource.
+	// Post: Maps to HTTP POST. Used for creating a resource or performing
+	// an action.
 	Post string `json:"post,omitempty"`
 
-	// Put: Used for updating a resource.
+	// Put: Maps to HTTP PUT. Used for replacing a resource.
 	Put string `json:"put,omitempty"`
 
 	// ResponseBody: Optional. The name of the response field whose value is
 	// mapped to the HTTP
-	// body of response. Other response fields are ignored. When
-	// not set, the response message will be used as HTTP body of response.
+	// response body. When omitted, the entire response message will be
+	// used
+	// as the HTTP response body.
+	//
+	// NOTE: The referred field must be present at the top-level of the
+	// response
+	// message type.
 	ResponseBody string `json:"responseBody,omitempty"`
 
 	// RestCollection: DO NOT USE. This is an experimental field.
@@ -2046,7 +2141,7 @@
 	// insert.
 	RestMethodName string `json:"restMethodName,omitempty"`
 
-	// Selector: Selects methods to which this rule applies.
+	// Selector: Selects a method to which this rule applies.
 	//
 	// Refer to selector for syntax details.
 	Selector string `json:"selector,omitempty"`
diff --git a/servicecontrol/v1/servicecontrol-api.json b/servicecontrol/v1/servicecontrol-api.json
index 42274b4..59d9694 100644
--- a/servicecontrol/v1/servicecontrol-api.json
+++ b/servicecontrol/v1/servicecontrol-api.json
@@ -280,7 +280,7 @@
       }
     }
   },
-  "revision": "20180901",
+  "revision": "20180908",
   "rootUrl": "https://servicecontrol.googleapis.com/",
   "schemas": {
     "AllocateInfo": {
@@ -824,7 +824,7 @@
       "type": "object"
     },
     "HttpRequest": {
-      "description": "A common proto for logging HTTP requests. Only contains semantics\ndefined by the HTTP specification. Product-specific logging\ninformation MUST be defined in a separate message.\n\nThis is an exact copy of HttpRequest message defined in Stackdriver.",
+      "description": "A common proto for logging HTTP requests. Only contains semantics\ndefined by the HTTP specification. Product-specific logging\ninformation MUST be defined in a separate message.",
       "id": "HttpRequest",
       "properties": {
         "cacheFillBytes": {
diff --git a/servicecontrol/v1/servicecontrol-gen.go b/servicecontrol/v1/servicecontrol-gen.go
index 2ef32f1..773a208 100644
--- a/servicecontrol/v1/servicecontrol-gen.go
+++ b/servicecontrol/v1/servicecontrol-gen.go
@@ -1150,8 +1150,6 @@
 // defined by the HTTP specification. Product-specific
 // logging
 // information MUST be defined in a separate message.
-//
-// This is an exact copy of HttpRequest message defined in Stackdriver.
 type HttpRequest struct {
 	// CacheFillBytes: The number of HTTP response bytes inserted into
 	// cache. Set only when a
diff --git a/servicemanagement/v1/servicemanagement-api.json b/servicemanagement/v1/servicemanagement-api.json
index 7189922..95071a5 100644
--- a/servicemanagement/v1/servicemanagement-api.json
+++ b/servicemanagement/v1/servicemanagement-api.json
@@ -876,7 +876,7 @@
       }
     }
   },
-  "revision": "20180825",
+  "revision": "20180907",
   "rootUrl": "https://servicemanagement.googleapis.com/",
   "schemas": {
     "Advice": {
@@ -1840,7 +1840,7 @@
       "type": "object"
     },
     "HttpRule": {
-      "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind.  The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      SubMessage sub = 2;    // `sub.subfield` is url-mapped\n    }\n    message Message {\n      string text = 1; // content of the resource\n    }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n    http:\n      rules:\n        - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo`  | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      int64 revision = 2;    // becomes a parameter\n      SubMessage sub = 3;    // `sub.subfield` becomes a parameter\n    }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A\u0026param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n   omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n   request) can be classified into three types:\n    (a) Matched in the URL template.\n    (b) Covered by body (if body is `*`, everything except (a) fields;\n        else everything under the body field)\n    (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.",
+      "description": "# gRPC Transcoding\n\ngRPC Transcoding is a feature for mapping between a gRPC method and one or\nmore HTTP REST endpoints. It allows developers to build a single API service\nthat supports both gRPC APIs and REST APIs. Many systems, including [Google\nAPIs](https://github.com/googleapis/googleapis),\n[Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\nGateway](https://github.com/grpc-ecosystem/grpc-gateway),\nand [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\nand use it for large scale production services.\n\n`HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\nhow different portions of the gRPC request message are mapped to the URL\npath, URL query parameters, and HTTP request body. It also controls how the\ngRPC response message is mapped to the HTTP response body. `HttpRule` is\ntypically specified as an `google.api.http` annotation on the gRPC method.\n\nEach mapping specifies a URL path template and an HTTP method. The path\ntemplate may refer to one or more fields in the gRPC request message, as long\nas each field is a non-repeated field with a primitive (non-message) type.\nThe path template controls how fields of the request message are mapped to\nthe URL path.\n\nExample:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get: \"/v1/{name=messages/*\"}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      string name = 1; // Mapped to URL path.\n    }\n    message Message {\n      string text = 1; // The resource content.\n    }\n\nThis enables an HTTP REST to gRPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456`  | `GetMessage(name: \"messages/123456\")`\n\nAny fields in the request message which are not bound by the path template\nautomatically become HTTP query parameters if there is no HTTP request body.\nFor example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get:\"/v1/messages/{message_id}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // Mapped to URL path.\n      int64 revision = 2;    // Mapped to URL query parameter `revision`.\n      SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.\n    }\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to URL query parameters must have a\nprimitive type or a repeated primitive type or a non-repeated message type.\nIn the case of a repeated type, the parameter can be repeated in the URL\nas `...?param=A\u0026param=B`. In the case of a message type, each field of the\nmessage is mapped to a separate parameter, such as\n`...?foo.a=A\u0026foo.b=B\u0026foo.c=C`.\n\nFor HTTP methods that allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice when\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\nThis enables the following two alternative HTTP JSON to RPC mappings:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n## Rules for HTTP mapping\n\n1. Leaf request fields (recursive expansion nested messages in the request\n   message) are classified into three categories:\n   - Fields referred by the path template. They are passed via the URL path.\n   - Fields referred by the HttpRule.body. They are passed via the HTTP\n     request body.\n   - All other fields are passed via the URL query parameters, and the\n     parameter name is the field path in the request message. A repeated\n     field can be represented as multiple query parameters under the same\n     name.\n 2. If HttpRule.body is \"*\", there is no URL query parameter, all fields\n    are passed via URL path and HTTP request body.\n 3. If HttpRule.body is omitted, there is no HTTP request body, all\n    fields are passed via URL path and URL query parameters.\n\n### Path template syntax\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single URL path segment. The syntax `**` matches\nzero or more URL path segments, which must be the last part of the URL path\nexcept the `Verb`.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nThe syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\ncontains any reserved character, such characters should be percent-encoded\nbefore the matching.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path on the client\nside, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\nserver side does the reverse decoding. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{var}`.\n\nIf a variable contains multiple path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path on the\nclient side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\nThe server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\nunchanged. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{+var}`.\n\n## Using gRPC API Service Configuration\n\ngRPC API Service Configuration (service config) is a configuration language\nfor configuring a gRPC service to become a user-facing product. The\nservice config is simply the YAML representation of the `google.api.Service`\nproto message.\n\nAs an alternative to annotating your proto file, you can configure gRPC\ntranscoding in your service config YAML files. You do this by specifying a\n`HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\neffect as the proto annotation. This can be particularly useful if you\nhave a proto that is reused in multiple services. Note that any transcoding\nspecified in the service config will override any matching transcoding\nconfiguration in the proto.\n\nExample:\n\n    http:\n      rules:\n        # Selects a gRPC method and applies HttpRule to it.\n        - selector: example.v1.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\n## Special notes\n\nWhen gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\nproto to JSON conversion must follow the [proto3\nspecification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n\nWhile the single segment variable follows the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\nExpansion, the multi segment variable **does not** follow RFC 6570 Section\n3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs. As the result, gRPC Transcoding uses a custom encoding\nfor multi segment variables.\n\nThe path variables **must not** refer to any repeated or mapped field,\nbecause client libraries are not capable of handling such variable expansion.\n\nThe path variables **must not** capture the leading \"/\" character. The reason\nis that the most common use case \"{var}\" does not capture the leading \"/\"\ncharacter. For consistency, all path variables must share the same behavior.\n\nRepeated message fields must not be mapped to URL query parameters, because\nno client library can support such complicated mapping.\n\nIf an API needs to use a JSON array for request or response body, it can map\nthe request or response body to a repeated field. However, some gRPC\nTranscoding implementations may not support this feature.",
       "id": "HttpRule",
       "properties": {
         "additionalBindings": {
@@ -1851,7 +1851,7 @@
           "type": "array"
         },
         "body": {
-          "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.",
+          "description": "The name of the request field whose value is mapped to the HTTP request\nbody, or `*` for mapping all request fields not captured by the path\npattern to the HTTP body, or omitted for not having any HTTP request body.\n\nNOTE: the referred field must be present at the top-level of the request\nmessage type.",
           "type": "string"
         },
         "custom": {
@@ -1859,11 +1859,11 @@
           "description": "The custom pattern is used for specifying an HTTP method that is not\nincluded in the `pattern` field, such as HEAD, or \"*\" to leave the\nHTTP method unspecified for this rule. The wild-card rule is useful\nfor services that provide content to Web (HTML) clients."
         },
         "delete": {
-          "description": "Used for deleting a resource.",
+          "description": "Maps to HTTP DELETE. Used for deleting a resource.",
           "type": "string"
         },
         "get": {
-          "description": "Used for listing and getting information about resources.",
+          "description": "Maps to HTTP GET. Used for listing and getting information about\nresources.",
           "type": "string"
         },
         "mediaDownload": {
@@ -1875,23 +1875,23 @@
           "description": "Use this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead\n[][google.bytestream.RestByteStream] as an API to your\nconfiguration for Bytestream methods."
         },
         "patch": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PATCH. Used for updating a resource.",
           "type": "string"
         },
         "post": {
-          "description": "Used for creating a resource.",
+          "description": "Maps to HTTP POST. Used for creating a resource or performing an action.",
           "type": "string"
         },
         "put": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PUT. Used for replacing a resource.",
           "type": "string"
         },
         "responseBody": {
-          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nbody of response. Other response fields are ignored. When\nnot set, the response message will be used as HTTP body of response.",
+          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nresponse body. When omitted, the entire response message will be used\nas the HTTP response body.\n\nNOTE: The referred field must be present at the top-level of the response\nmessage type.",
           "type": "string"
         },
         "selector": {
-          "description": "Selects methods to which this rule applies.\n\nRefer to selector for syntax details.",
+          "description": "Selects a method to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
         }
       },
diff --git a/servicemanagement/v1/servicemanagement-gen.go b/servicemanagement/v1/servicemanagement-gen.go
index a99de41..69f0a84 100644
--- a/servicemanagement/v1/servicemanagement-gen.go
+++ b/servicemanagement/v1/servicemanagement-gen.go
@@ -2287,114 +2287,119 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// HttpRule: `HttpRule` defines the mapping of an RPC method to one or
-// more HTTP
-// REST API methods. The mapping specifies how different portions of the
-// RPC
-// request message are mapped to URL path, URL query parameters,
-// and
-// HTTP request body. The mapping is typically specified as
-// an
-// `google.api.http` annotation on the RPC method,
-// see "google/api/annotations.proto" for details.
+// HttpRule: # gRPC Transcoding
 //
-// The mapping consists of a field specifying the path template
-// and
-// method kind.  The path template can refer to fields in the
-// request
-// message, as in the example below which describes a REST GET
-// operation on a resource collection of messages:
+// gRPC Transcoding is a feature for mapping between a gRPC method and
+// one or
+// more HTTP REST endpoints. It allows developers to build a single API
+// service
+// that supports both gRPC APIs and REST APIs. Many systems, including
+// [Google
+// APIs](https://github.com/googleapis/googleapis),
+// [Cloud Endpoints](https://cloud.google.com/endpoints),
+// [gRPC
+// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
+// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this
+// feature
+// and use it for large scale production services.
 //
+// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping
+// specifies
+// how different portions of the gRPC request message are mapped to the
+// URL
+// path, URL query parameters, and HTTP request body. It also controls
+// how the
+// gRPC response message is mapped to the HTTP response body. `HttpRule`
+// is
+// typically specified as an `google.api.http` annotation on the gRPC
+// method.
+//
+// Each mapping specifies a URL path template and an HTTP method. The
+// path
+// template may refer to one or more fields in the gRPC request message,
+// as long
+// as each field is a non-repeated field with a primitive (non-message)
+// type.
+// The path template controls how fields of the request message are
+// mapped to
+// the URL path.
+//
+// Example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get =
-// "/v1/messages/{message_id}/{sub.subfield}";
+//         option (google.api.http) = {
+//             get: "/v1/{name=messages/*"}"
+//         };
 //       }
 //     }
 //     message GetMessageRequest {
-//       message SubMessage {
-//         string subfield = 1;
-//       }
-//       string message_id = 1; // mapped to the URL
-//       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+//       string name = 1; // Mapped to URL path.
 //     }
 //     message Message {
-//       string text = 1; // content of the resource
+//       string text = 1; // The resource content.
 //     }
 //
-// The same http annotation can alternatively be expressed inside
-// the
-// `GRPC API Configuration` YAML file.
+// This enables an HTTP REST to gRPC mapping as below:
 //
-//     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:
-//
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `GET /v1/messages/123456/foo`  | `GetMessage(message_id: "123456"
-// sub: SubMessage(subfield: "foo"))`
+// `GET /v1/messages/123456`  | `GetMessage(name:
+// "messages/123456")`
 //
-// In general, not only fields but also field paths can be
-// referenced
-// from a path pattern. Fields mapped to the path pattern cannot
-// be
-// repeated and must have a primitive (non-message) type.
-//
-// Any fields in the request message which are not bound by the
-// path
-// pattern automatically become (optional) HTTP query
-// parameters. Assume the following definition of the request
-// message:
-//
+// Any fields in the request message which are not bound by the path
+// template
+// automatically become HTTP query parameters if there is no HTTP
+// request body.
+// For example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get = "/v1/messages/{message_id}";
+//         option (google.api.http) = {
+//             get:"/v1/messages/{message_id}"
+//         };
 //       }
 //     }
 //     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
+//       string message_id = 1; // Mapped to URL path.
+//       int64 revision = 2;    // Mapped to URL query parameter
+// `revision`.
+//       SubMessage sub = 3;    // Mapped to URL query parameter
+// `sub.subfield`.
 //     }
 //
-//
 // This enables a HTTP JSON to RPC mapping as below:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
 // `GetMessage(message_id: "123456" revision: 2 sub:
 // SubMessage(subfield: "foo"))`
 //
-// Note that fields which are mapped to HTTP parameters must have
+// Note that fields which are mapped to URL query parameters must have
 // a
-// primitive type or a repeated primitive type. Message types are
-// not
-// allowed. In the case of a repeated type, the parameter can
-// be
-// repeated in the URL, as in `...?param=A&param=B`.
+// primitive type or a repeated primitive type or a non-repeated message
+// type.
+// In the case of a repeated type, the parameter can be repeated in the
+// URL
+// as `...?param=A&param=B`. In the case of a message type, each field
+// of the
+// message is mapped to a separate parameter, such
+// as
+// `...?foo.a=A&foo.b=B&foo.c=C`.
 //
-// For HTTP method kinds which allow a request body, the `body`
+// For HTTP methods that allow a request body, the `body`
 // field
 // specifies the mapping. Consider a REST update method on the
 // message resource collection:
 //
-//
 //     service Messaging {
 //       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "message"
 //         };
 //       }
@@ -2404,16 +2409,15 @@
 //       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
 // protos JSON encoding:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
 //
 // The special name `*` can be used in the body mapping to define
@@ -2427,7 +2431,7 @@
 //     service Messaging {
 //       rpc UpdateMessage(Message) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "*"
 //         };
 //       }
@@ -2440,16 +2444,16 @@
 //
 // The following HTTP JSON to RPC mapping is enabled:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" text: "Hi!")`
 //
 // Note that when using `*` in the body mapping, it is not possible
 // to
 // have HTTP parameters, as all fields not bound by the path end in
 // the body. This makes this option more rarely used in practice
-// of
+// when
 // defining REST APIs. The common usage of `*` is in custom
 // methods
 // which don't use the URL at all for transferring data.
@@ -2473,38 +2477,39 @@
 //       string user_id = 2;
 //     }
 //
-//
-// This enables the following two alternative HTTP JSON to
-// RPC
+// This enables the following two alternative HTTP JSON to RPC
 // mappings:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
 // `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me"
 // message_id: "123456")`
 //
-// # Rules for HTTP mapping
+// ## Rules for HTTP mapping
 //
-// The rules for mapping HTTP path, query parameters, and body fields
-// to the request message are as follows:
+// 1. Leaf request fields (recursive expansion nested messages in the
+// request
+//    message) are classified into three categories:
+//    - Fields referred by the path template. They are passed via the
+// URL path.
+//    - Fields referred by the HttpRule.body. They are passed via the
+// HTTP
+//      request body.
+//    - All other fields are passed via the URL query parameters, and
+// the
+//      parameter name is the field path in the request message. A
+// repeated
+//      field can be represented as multiple query parameters under the
+// same
+//      name.
+//  2. If HttpRule.body is "*", there is no URL query parameter, all
+// fields
+//     are passed via URL path and HTTP request body.
+//  3. If HttpRule.body is omitted, there is no HTTP request body, all
+//     fields are passed via URL path and URL query parameters.
 //
-// 1. The `body` field specifies either `*` or a field path, or is
-//    omitted. If omitted, it indicates there is no HTTP request
-// body.
-// 2. Leaf fields (recursive expansion of nested messages in the
-//    request) can be classified into three types:
-//     (a) Matched in the URL template.
-//     (b) Covered by body (if body is `*`, everything except (a)
-// fields;
-//         else everything under the body field)
-//     (c) All other fields.
-// 3. URL query parameters found in the HTTP request are mapped to (c)
-// fields.
-// 4. Any body sent with an HTTP request can contain only (b)
-// fields.
-//
-// The syntax of the path template is as follows:
+// ### Path template syntax
 //
 //     Template = "/" Segments [ Verb ] ;
 //     Segments = Segment { "/" Segment } ;
@@ -2513,11 +2518,11 @@
 //     FieldPath = IDENT { "." IDENT } ;
 //     Verb     = ":" LITERAL ;
 //
-// The syntax `*` matches a single path segment. The syntax `**` matches
-// zero
-// or more path segments, which must be the last part of the path except
-// the
-// `Verb`. The syntax `LITERAL` matches literal text in the path.
+// The syntax `*` matches a single URL path segment. The syntax `**`
+// matches
+// zero or more URL path segments, which must be the last part of the
+// URL path
+// except the `Verb`.
 //
 // The syntax `Variable` matches part of the URL path as specified by
 // its
@@ -2527,35 +2532,114 @@
 // `{var}`
 // is equivalent to `{var=*}`.
 //
+// The syntax `LITERAL` matches literal text in the URL path. If the
+// `LITERAL`
+// contains any reserved character, such characters should be
+// percent-encoded
+// before the matching.
+//
 // If a variable contains exactly one path segment, such as "{var}"
 // or
-// "{var=*}", when such a variable is expanded into a URL path, all
-// characters
-// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up
-// in the
-// Discovery Document as `{var}`.
+// "{var=*}", when such a variable is expanded into a URL path on the
+// client
+// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded.
+// The
+// server side does the reverse decoding. Such variables show up in
+// the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{var}`.
 //
-// If a variable contains one or more path segments, such as
+// If a variable contains multiple path segments, such as
 // "{var=foo/*}"
-// or "{var=**}", when such a variable is expanded into a URL path,
-// all
-// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such
-// variables
-// show up in the Discovery Document as `{+var}`.
+// or "{var=**}", when such a variable is expanded into a URL path on
+// the
+// client side, all characters except `[-_.~/0-9a-zA-Z]` are
+// percent-encoded.
+// The server side does the reverse decoding, except "%2F" and "%2f" are
+// left
+// unchanged. Such variables show up in the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{+var}`.
 //
-// NOTE: While the single segment variable matches the semantics of
-// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2
-// Simple String Expansion, the multi segment variable **does not**
-// match
-// RFC 6570 Reserved Expansion. The reason is that the Reserved
+// ## Using gRPC API Service Configuration
+//
+// gRPC API Service Configuration (service config) is a configuration
+// language
+// for configuring a gRPC service to become a user-facing product.
+// The
+// service config is simply the YAML representation of the
+// `google.api.Service`
+// proto message.
+//
+// As an alternative to annotating your proto file, you can configure
+// gRPC
+// transcoding in your service config YAML files. You do this by
+// specifying a
+// `HttpRule` that maps the gRPC method to a REST endpoint, achieving
+// the same
+// effect as the proto annotation. This can be particularly useful if
+// you
+// have a proto that is reused in multiple services. Note that any
+// transcoding
+// specified in the service config will override any matching
+// transcoding
+// configuration in the proto.
+//
+// Example:
+//
+//     http:
+//       rules:
+//         # Selects a gRPC method and applies HttpRule to it.
+//         - selector: example.v1.Messaging.GetMessage
+//           get: /v1/messages/{message_id}/{sub.subfield}
+//
+// ## Special notes
+//
+// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints,
+// the
+// proto to JSON conversion must follow the
+// [proto3
+// specification](https://developers.google.com/protocol-buffers/
+// docs/proto3#json).
+//
+// While the single segment variable follows the semantics of
+// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple
+// String
+// Expansion, the multi segment variable **does not** follow RFC 6570
+// Section
+// 3.2.3 Reserved Expansion. The reason is that the Reserved
 // Expansion
 // does not expand special characters like `?` and `#`, which would
 // lead
-// to invalid URLs.
+// to invalid URLs. As the result, gRPC Transcoding uses a custom
+// encoding
+// for multi segment variables.
 //
-// NOTE: the field paths in variables and in the `body` must not refer
-// to
-// repeated fields or map fields.
+// The path variables **must not** refer to any repeated or mapped
+// field,
+// because client libraries are not capable of handling such variable
+// expansion.
+//
+// The path variables **must not** capture the leading "/" character.
+// The reason
+// is that the most common use case "{var}" does not capture the leading
+// "/"
+// character. For consistency, all path variables must share the same
+// behavior.
+//
+// Repeated message fields must not be mapped to URL query parameters,
+// because
+// no client library can support such complicated mapping.
+//
+// If an API needs to use a JSON array for request or response body, it
+// can map
+// the request or response body to a repeated field. However, some
+// gRPC
+// Transcoding implementations may not support this feature.
 type HttpRule struct {
 	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
 	// bindings must
@@ -2564,12 +2648,15 @@
 	AdditionalBindings []*HttpRule `json:"additionalBindings,omitempty"`
 
 	// Body: 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 request message type.
+	// request
+	// body, or `*` for mapping all request fields not captured by the
+	// path
+	// pattern to the HTTP body, or omitted for not having any HTTP request
+	// body.
+	//
+	// NOTE: the referred field must be present at the top-level of the
+	// request
+	// message type.
 	Body string `json:"body,omitempty"`
 
 	// Custom: The custom pattern is used for specifying an HTTP method that
@@ -2581,10 +2668,12 @@
 	// for services that provide content to Web (HTML) clients.
 	Custom *CustomHttpPattern `json:"custom,omitempty"`
 
-	// Delete: Used for deleting a resource.
+	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
 	Delete string `json:"delete,omitempty"`
 
-	// Get: Used for listing and getting information about resources.
+	// Get: Maps to HTTP GET. Used for listing and getting information
+	// about
+	// resources.
 	Get string `json:"get,omitempty"`
 
 	// MediaDownload: Use this only for Scotty Requests. Do not use this for
@@ -2601,22 +2690,28 @@
 	// configuration for Bytestream methods.
 	MediaUpload *MediaUpload `json:"mediaUpload,omitempty"`
 
-	// Patch: Used for updating a resource.
+	// Patch: Maps to HTTP PATCH. Used for updating a resource.
 	Patch string `json:"patch,omitempty"`
 
-	// Post: Used for creating a resource.
+	// Post: Maps to HTTP POST. Used for creating a resource or performing
+	// an action.
 	Post string `json:"post,omitempty"`
 
-	// Put: Used for updating a resource.
+	// Put: Maps to HTTP PUT. Used for replacing a resource.
 	Put string `json:"put,omitempty"`
 
 	// ResponseBody: Optional. The name of the response field whose value is
 	// mapped to the HTTP
-	// body of response. Other response fields are ignored. When
-	// not set, the response message will be used as HTTP body of response.
+	// response body. When omitted, the entire response message will be
+	// used
+	// as the HTTP response body.
+	//
+	// NOTE: The referred field must be present at the top-level of the
+	// response
+	// message type.
 	ResponseBody string `json:"responseBody,omitempty"`
 
-	// Selector: Selects methods to which this rule applies.
+	// Selector: Selects a method to which this rule applies.
 	//
 	// Refer to selector for syntax details.
 	Selector string `json:"selector,omitempty"`
diff --git a/serviceusage/v1/serviceusage-api.json b/serviceusage/v1/serviceusage-api.json
index 7273fd1..57d7f27 100644
--- a/serviceusage/v1/serviceusage-api.json
+++ b/serviceusage/v1/serviceusage-api.json
@@ -393,7 +393,7 @@
       }
     }
   },
-  "revision": "20180820",
+  "revision": "20180913",
   "rootUrl": "https://serviceusage.googleapis.com/",
   "schemas": {
     "Api": {
@@ -1371,7 +1371,7 @@
       "type": "object"
     },
     "HttpRule": {
-      "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind.  The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      SubMessage sub = 2;    // `sub.subfield` is url-mapped\n    }\n    message Message {\n      string text = 1; // content of the resource\n    }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n    http:\n      rules:\n        - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo`  | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      int64 revision = 2;    // becomes a parameter\n      SubMessage sub = 3;    // `sub.subfield` becomes a parameter\n    }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A\u0026param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n   omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n   request) can be classified into three types:\n    (a) Matched in the URL template.\n    (b) Covered by body (if body is `*`, everything except (a) fields;\n        else everything under the body field)\n    (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.",
+      "description": "# gRPC Transcoding\n\ngRPC Transcoding is a feature for mapping between a gRPC method and one or\nmore HTTP REST endpoints. It allows developers to build a single API service\nthat supports both gRPC APIs and REST APIs. Many systems, including [Google\nAPIs](https://github.com/googleapis/googleapis),\n[Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\nGateway](https://github.com/grpc-ecosystem/grpc-gateway),\nand [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\nand use it for large scale production services.\n\n`HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\nhow different portions of the gRPC request message are mapped to the URL\npath, URL query parameters, and HTTP request body. It also controls how the\ngRPC response message is mapped to the HTTP response body. `HttpRule` is\ntypically specified as an `google.api.http` annotation on the gRPC method.\n\nEach mapping specifies a URL path template and an HTTP method. The path\ntemplate may refer to one or more fields in the gRPC request message, as long\nas each field is a non-repeated field with a primitive (non-message) type.\nThe path template controls how fields of the request message are mapped to\nthe URL path.\n\nExample:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get: \"/v1/{name=messages/*\"}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      string name = 1; // Mapped to URL path.\n    }\n    message Message {\n      string text = 1; // The resource content.\n    }\n\nThis enables an HTTP REST to gRPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456`  | `GetMessage(name: \"messages/123456\")`\n\nAny fields in the request message which are not bound by the path template\nautomatically become HTTP query parameters if there is no HTTP request body.\nFor example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get:\"/v1/messages/{message_id}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // Mapped to URL path.\n      int64 revision = 2;    // Mapped to URL query parameter `revision`.\n      SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.\n    }\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to URL query parameters must have a\nprimitive type or a repeated primitive type or a non-repeated message type.\nIn the case of a repeated type, the parameter can be repeated in the URL\nas `...?param=A\u0026param=B`. In the case of a message type, each field of the\nmessage is mapped to a separate parameter, such as\n`...?foo.a=A\u0026foo.b=B\u0026foo.c=C`.\n\nFor HTTP methods that allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice when\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\nThis enables the following two alternative HTTP JSON to RPC mappings:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n## Rules for HTTP mapping\n\n1. Leaf request fields (recursive expansion nested messages in the request\n   message) are classified into three categories:\n   - Fields referred by the path template. They are passed via the URL path.\n   - Fields referred by the HttpRule.body. They are passed via the HTTP\n     request body.\n   - All other fields are passed via the URL query parameters, and the\n     parameter name is the field path in the request message. A repeated\n     field can be represented as multiple query parameters under the same\n     name.\n 2. If HttpRule.body is \"*\", there is no URL query parameter, all fields\n    are passed via URL path and HTTP request body.\n 3. If HttpRule.body is omitted, there is no HTTP request body, all\n    fields are passed via URL path and URL query parameters.\n\n### Path template syntax\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single URL path segment. The syntax `**` matches\nzero or more URL path segments, which must be the last part of the URL path\nexcept the `Verb`.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nThe syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\ncontains any reserved character, such characters should be percent-encoded\nbefore the matching.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path on the client\nside, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\nserver side does the reverse decoding. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{var}`.\n\nIf a variable contains multiple path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path on the\nclient side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\nThe server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\nunchanged. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{+var}`.\n\n## Using gRPC API Service Configuration\n\ngRPC API Service Configuration (service config) is a configuration language\nfor configuring a gRPC service to become a user-facing product. The\nservice config is simply the YAML representation of the `google.api.Service`\nproto message.\n\nAs an alternative to annotating your proto file, you can configure gRPC\ntranscoding in your service config YAML files. You do this by specifying a\n`HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\neffect as the proto annotation. This can be particularly useful if you\nhave a proto that is reused in multiple services. Note that any transcoding\nspecified in the service config will override any matching transcoding\nconfiguration in the proto.\n\nExample:\n\n    http:\n      rules:\n        # Selects a gRPC method and applies HttpRule to it.\n        - selector: example.v1.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\n## Special notes\n\nWhen gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\nproto to JSON conversion must follow the [proto3\nspecification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n\nWhile the single segment variable follows the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\nExpansion, the multi segment variable **does not** follow RFC 6570 Section\n3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs. As the result, gRPC Transcoding uses a custom encoding\nfor multi segment variables.\n\nThe path variables **must not** refer to any repeated or mapped field,\nbecause client libraries are not capable of handling such variable expansion.\n\nThe path variables **must not** capture the leading \"/\" character. The reason\nis that the most common use case \"{var}\" does not capture the leading \"/\"\ncharacter. For consistency, all path variables must share the same behavior.\n\nRepeated message fields must not be mapped to URL query parameters, because\nno client library can support such complicated mapping.\n\nIf an API needs to use a JSON array for request or response body, it can map\nthe request or response body to a repeated field. However, some gRPC\nTranscoding implementations may not support this feature.",
       "id": "HttpRule",
       "properties": {
         "additionalBindings": {
@@ -1389,7 +1389,7 @@
           "type": "array"
         },
         "body": {
-          "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.",
+          "description": "The name of the request field whose value is mapped to the HTTP request\nbody, or `*` for mapping all request fields not captured by the path\npattern to the HTTP body, or omitted for not having any HTTP request body.\n\nNOTE: the referred field must be present at the top-level of the request\nmessage type.",
           "type": "string"
         },
         "custom": {
@@ -1397,11 +1397,11 @@
           "description": "The custom pattern is used for specifying an HTTP method that is not\nincluded in the `pattern` field, such as HEAD, or \"*\" to leave the\nHTTP method unspecified for this rule. The wild-card rule is useful\nfor services that provide content to Web (HTML) clients."
         },
         "delete": {
-          "description": "Used for deleting a resource.",
+          "description": "Maps to HTTP DELETE. Used for deleting a resource.",
           "type": "string"
         },
         "get": {
-          "description": "Used for listing and getting information about resources.",
+          "description": "Maps to HTTP GET. Used for listing and getting information about\nresources.",
           "type": "string"
         },
         "mediaDownload": {
@@ -1413,19 +1413,19 @@
           "description": "Use this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead\n[][google.bytestream.RestByteStream] as an API to your\nconfiguration for Bytestream methods."
         },
         "patch": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PATCH. Used for updating a resource.",
           "type": "string"
         },
         "post": {
-          "description": "Used for creating a resource.",
+          "description": "Maps to HTTP POST. Used for creating a resource or performing an action.",
           "type": "string"
         },
         "put": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PUT. Used for replacing a resource.",
           "type": "string"
         },
         "responseBody": {
-          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nbody of response. Other response fields are ignored. When\nnot set, the response message will be used as HTTP body of response.",
+          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nresponse body. When omitted, the entire response message will be used\nas the HTTP response body.\n\nNOTE: The referred field must be present at the top-level of the response\nmessage type.",
           "type": "string"
         },
         "restCollection": {
@@ -1437,7 +1437,7 @@
           "type": "string"
         },
         "selector": {
-          "description": "Selects methods to which this rule applies.\n\nRefer to selector for syntax details.",
+          "description": "Selects a method to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
         }
       },
diff --git a/serviceusage/v1/serviceusage-gen.go b/serviceusage/v1/serviceusage-gen.go
index a3aca97..e2b6eb3 100644
--- a/serviceusage/v1/serviceusage-gen.go
+++ b/serviceusage/v1/serviceusage-gen.go
@@ -2117,114 +2117,119 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// HttpRule: `HttpRule` defines the mapping of an RPC method to one or
-// more HTTP
-// REST API methods. The mapping specifies how different portions of the
-// RPC
-// request message are mapped to URL path, URL query parameters,
-// and
-// HTTP request body. The mapping is typically specified as
-// an
-// `google.api.http` annotation on the RPC method,
-// see "google/api/annotations.proto" for details.
+// HttpRule: # gRPC Transcoding
 //
-// The mapping consists of a field specifying the path template
-// and
-// method kind.  The path template can refer to fields in the
-// request
-// message, as in the example below which describes a REST GET
-// operation on a resource collection of messages:
+// gRPC Transcoding is a feature for mapping between a gRPC method and
+// one or
+// more HTTP REST endpoints. It allows developers to build a single API
+// service
+// that supports both gRPC APIs and REST APIs. Many systems, including
+// [Google
+// APIs](https://github.com/googleapis/googleapis),
+// [Cloud Endpoints](https://cloud.google.com/endpoints),
+// [gRPC
+// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
+// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this
+// feature
+// and use it for large scale production services.
 //
+// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping
+// specifies
+// how different portions of the gRPC request message are mapped to the
+// URL
+// path, URL query parameters, and HTTP request body. It also controls
+// how the
+// gRPC response message is mapped to the HTTP response body. `HttpRule`
+// is
+// typically specified as an `google.api.http` annotation on the gRPC
+// method.
+//
+// Each mapping specifies a URL path template and an HTTP method. The
+// path
+// template may refer to one or more fields in the gRPC request message,
+// as long
+// as each field is a non-repeated field with a primitive (non-message)
+// type.
+// The path template controls how fields of the request message are
+// mapped to
+// the URL path.
+//
+// Example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get =
-// "/v1/messages/{message_id}/{sub.subfield}";
+//         option (google.api.http) = {
+//             get: "/v1/{name=messages/*"}"
+//         };
 //       }
 //     }
 //     message GetMessageRequest {
-//       message SubMessage {
-//         string subfield = 1;
-//       }
-//       string message_id = 1; // mapped to the URL
-//       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+//       string name = 1; // Mapped to URL path.
 //     }
 //     message Message {
-//       string text = 1; // content of the resource
+//       string text = 1; // The resource content.
 //     }
 //
-// The same http annotation can alternatively be expressed inside
-// the
-// `GRPC API Configuration` YAML file.
+// This enables an HTTP REST to gRPC mapping as below:
 //
-//     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:
-//
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `GET /v1/messages/123456/foo`  | `GetMessage(message_id: "123456"
-// sub: SubMessage(subfield: "foo"))`
+// `GET /v1/messages/123456`  | `GetMessage(name:
+// "messages/123456")`
 //
-// In general, not only fields but also field paths can be
-// referenced
-// from a path pattern. Fields mapped to the path pattern cannot
-// be
-// repeated and must have a primitive (non-message) type.
-//
-// Any fields in the request message which are not bound by the
-// path
-// pattern automatically become (optional) HTTP query
-// parameters. Assume the following definition of the request
-// message:
-//
+// Any fields in the request message which are not bound by the path
+// template
+// automatically become HTTP query parameters if there is no HTTP
+// request body.
+// For example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get = "/v1/messages/{message_id}";
+//         option (google.api.http) = {
+//             get:"/v1/messages/{message_id}"
+//         };
 //       }
 //     }
 //     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
+//       string message_id = 1; // Mapped to URL path.
+//       int64 revision = 2;    // Mapped to URL query parameter
+// `revision`.
+//       SubMessage sub = 3;    // Mapped to URL query parameter
+// `sub.subfield`.
 //     }
 //
-//
 // This enables a HTTP JSON to RPC mapping as below:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
 // `GetMessage(message_id: "123456" revision: 2 sub:
 // SubMessage(subfield: "foo"))`
 //
-// Note that fields which are mapped to HTTP parameters must have
+// Note that fields which are mapped to URL query parameters must have
 // a
-// primitive type or a repeated primitive type. Message types are
-// not
-// allowed. In the case of a repeated type, the parameter can
-// be
-// repeated in the URL, as in `...?param=A&param=B`.
+// primitive type or a repeated primitive type or a non-repeated message
+// type.
+// In the case of a repeated type, the parameter can be repeated in the
+// URL
+// as `...?param=A&param=B`. In the case of a message type, each field
+// of the
+// message is mapped to a separate parameter, such
+// as
+// `...?foo.a=A&foo.b=B&foo.c=C`.
 //
-// For HTTP method kinds which allow a request body, the `body`
+// For HTTP methods that allow a request body, the `body`
 // field
 // specifies the mapping. Consider a REST update method on the
 // message resource collection:
 //
-//
 //     service Messaging {
 //       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "message"
 //         };
 //       }
@@ -2234,16 +2239,15 @@
 //       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
 // protos JSON encoding:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
 //
 // The special name `*` can be used in the body mapping to define
@@ -2257,7 +2261,7 @@
 //     service Messaging {
 //       rpc UpdateMessage(Message) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "*"
 //         };
 //       }
@@ -2270,16 +2274,16 @@
 //
 // The following HTTP JSON to RPC mapping is enabled:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" text: "Hi!")`
 //
 // Note that when using `*` in the body mapping, it is not possible
 // to
 // have HTTP parameters, as all fields not bound by the path end in
 // the body. This makes this option more rarely used in practice
-// of
+// when
 // defining REST APIs. The common usage of `*` is in custom
 // methods
 // which don't use the URL at all for transferring data.
@@ -2303,38 +2307,39 @@
 //       string user_id = 2;
 //     }
 //
-//
-// This enables the following two alternative HTTP JSON to
-// RPC
+// This enables the following two alternative HTTP JSON to RPC
 // mappings:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
 // `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me"
 // message_id: "123456")`
 //
-// # Rules for HTTP mapping
+// ## Rules for HTTP mapping
 //
-// The rules for mapping HTTP path, query parameters, and body fields
-// to the request message are as follows:
+// 1. Leaf request fields (recursive expansion nested messages in the
+// request
+//    message) are classified into three categories:
+//    - Fields referred by the path template. They are passed via the
+// URL path.
+//    - Fields referred by the HttpRule.body. They are passed via the
+// HTTP
+//      request body.
+//    - All other fields are passed via the URL query parameters, and
+// the
+//      parameter name is the field path in the request message. A
+// repeated
+//      field can be represented as multiple query parameters under the
+// same
+//      name.
+//  2. If HttpRule.body is "*", there is no URL query parameter, all
+// fields
+//     are passed via URL path and HTTP request body.
+//  3. If HttpRule.body is omitted, there is no HTTP request body, all
+//     fields are passed via URL path and URL query parameters.
 //
-// 1. The `body` field specifies either `*` or a field path, or is
-//    omitted. If omitted, it indicates there is no HTTP request
-// body.
-// 2. Leaf fields (recursive expansion of nested messages in the
-//    request) can be classified into three types:
-//     (a) Matched in the URL template.
-//     (b) Covered by body (if body is `*`, everything except (a)
-// fields;
-//         else everything under the body field)
-//     (c) All other fields.
-// 3. URL query parameters found in the HTTP request are mapped to (c)
-// fields.
-// 4. Any body sent with an HTTP request can contain only (b)
-// fields.
-//
-// The syntax of the path template is as follows:
+// ### Path template syntax
 //
 //     Template = "/" Segments [ Verb ] ;
 //     Segments = Segment { "/" Segment } ;
@@ -2343,11 +2348,11 @@
 //     FieldPath = IDENT { "." IDENT } ;
 //     Verb     = ":" LITERAL ;
 //
-// The syntax `*` matches a single path segment. The syntax `**` matches
-// zero
-// or more path segments, which must be the last part of the path except
-// the
-// `Verb`. The syntax `LITERAL` matches literal text in the path.
+// The syntax `*` matches a single URL path segment. The syntax `**`
+// matches
+// zero or more URL path segments, which must be the last part of the
+// URL path
+// except the `Verb`.
 //
 // The syntax `Variable` matches part of the URL path as specified by
 // its
@@ -2357,35 +2362,114 @@
 // `{var}`
 // is equivalent to `{var=*}`.
 //
+// The syntax `LITERAL` matches literal text in the URL path. If the
+// `LITERAL`
+// contains any reserved character, such characters should be
+// percent-encoded
+// before the matching.
+//
 // If a variable contains exactly one path segment, such as "{var}"
 // or
-// "{var=*}", when such a variable is expanded into a URL path, all
-// characters
-// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up
-// in the
-// Discovery Document as `{var}`.
+// "{var=*}", when such a variable is expanded into a URL path on the
+// client
+// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded.
+// The
+// server side does the reverse decoding. Such variables show up in
+// the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{var}`.
 //
-// If a variable contains one or more path segments, such as
+// If a variable contains multiple path segments, such as
 // "{var=foo/*}"
-// or "{var=**}", when such a variable is expanded into a URL path,
-// all
-// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such
-// variables
-// show up in the Discovery Document as `{+var}`.
+// or "{var=**}", when such a variable is expanded into a URL path on
+// the
+// client side, all characters except `[-_.~/0-9a-zA-Z]` are
+// percent-encoded.
+// The server side does the reverse decoding, except "%2F" and "%2f" are
+// left
+// unchanged. Such variables show up in the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{+var}`.
 //
-// NOTE: While the single segment variable matches the semantics of
-// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2
-// Simple String Expansion, the multi segment variable **does not**
-// match
-// RFC 6570 Reserved Expansion. The reason is that the Reserved
+// ## Using gRPC API Service Configuration
+//
+// gRPC API Service Configuration (service config) is a configuration
+// language
+// for configuring a gRPC service to become a user-facing product.
+// The
+// service config is simply the YAML representation of the
+// `google.api.Service`
+// proto message.
+//
+// As an alternative to annotating your proto file, you can configure
+// gRPC
+// transcoding in your service config YAML files. You do this by
+// specifying a
+// `HttpRule` that maps the gRPC method to a REST endpoint, achieving
+// the same
+// effect as the proto annotation. This can be particularly useful if
+// you
+// have a proto that is reused in multiple services. Note that any
+// transcoding
+// specified in the service config will override any matching
+// transcoding
+// configuration in the proto.
+//
+// Example:
+//
+//     http:
+//       rules:
+//         # Selects a gRPC method and applies HttpRule to it.
+//         - selector: example.v1.Messaging.GetMessage
+//           get: /v1/messages/{message_id}/{sub.subfield}
+//
+// ## Special notes
+//
+// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints,
+// the
+// proto to JSON conversion must follow the
+// [proto3
+// specification](https://developers.google.com/protocol-buffers/
+// docs/proto3#json).
+//
+// While the single segment variable follows the semantics of
+// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple
+// String
+// Expansion, the multi segment variable **does not** follow RFC 6570
+// Section
+// 3.2.3 Reserved Expansion. The reason is that the Reserved
 // Expansion
 // does not expand special characters like `?` and `#`, which would
 // lead
-// to invalid URLs.
+// to invalid URLs. As the result, gRPC Transcoding uses a custom
+// encoding
+// for multi segment variables.
 //
-// NOTE: the field paths in variables and in the `body` must not refer
-// to
-// repeated fields or map fields.
+// The path variables **must not** refer to any repeated or mapped
+// field,
+// because client libraries are not capable of handling such variable
+// expansion.
+//
+// The path variables **must not** capture the leading "/" character.
+// The reason
+// is that the most common use case "{var}" does not capture the leading
+// "/"
+// character. For consistency, all path variables must share the same
+// behavior.
+//
+// Repeated message fields must not be mapped to URL query parameters,
+// because
+// no client library can support such complicated mapping.
+//
+// If an API needs to use a JSON array for request or response body, it
+// can map
+// the request or response body to a repeated field. However, some
+// gRPC
+// Transcoding implementations may not support this feature.
 type HttpRule struct {
 	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
 	// bindings must
@@ -2403,12 +2487,15 @@
 	Authorizations []*AuthorizationRule `json:"authorizations,omitempty"`
 
 	// Body: 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 request message type.
+	// request
+	// body, or `*` for mapping all request fields not captured by the
+	// path
+	// pattern to the HTTP body, or omitted for not having any HTTP request
+	// body.
+	//
+	// NOTE: the referred field must be present at the top-level of the
+	// request
+	// message type.
 	Body string `json:"body,omitempty"`
 
 	// Custom: The custom pattern is used for specifying an HTTP method that
@@ -2420,10 +2507,12 @@
 	// for services that provide content to Web (HTML) clients.
 	Custom *CustomHttpPattern `json:"custom,omitempty"`
 
-	// Delete: Used for deleting a resource.
+	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
 	Delete string `json:"delete,omitempty"`
 
-	// Get: Used for listing and getting information about resources.
+	// Get: Maps to HTTP GET. Used for listing and getting information
+	// about
+	// resources.
 	Get string `json:"get,omitempty"`
 
 	// MediaDownload: Use this only for Scotty Requests. Do not use this for
@@ -2440,19 +2529,25 @@
 	// configuration for Bytestream methods.
 	MediaUpload *MediaUpload `json:"mediaUpload,omitempty"`
 
-	// Patch: Used for updating a resource.
+	// Patch: Maps to HTTP PATCH. Used for updating a resource.
 	Patch string `json:"patch,omitempty"`
 
-	// Post: Used for creating a resource.
+	// Post: Maps to HTTP POST. Used for creating a resource or performing
+	// an action.
 	Post string `json:"post,omitempty"`
 
-	// Put: Used for updating a resource.
+	// Put: Maps to HTTP PUT. Used for replacing a resource.
 	Put string `json:"put,omitempty"`
 
 	// ResponseBody: Optional. The name of the response field whose value is
 	// mapped to the HTTP
-	// body of response. Other response fields are ignored. When
-	// not set, the response message will be used as HTTP body of response.
+	// response body. When omitted, the entire response message will be
+	// used
+	// as the HTTP response body.
+	//
+	// NOTE: The referred field must be present at the top-level of the
+	// response
+	// message type.
 	ResponseBody string `json:"responseBody,omitempty"`
 
 	// RestCollection: DO NOT USE. This is an experimental field.
@@ -2503,7 +2598,7 @@
 	// insert.
 	RestMethodName string `json:"restMethodName,omitempty"`
 
-	// Selector: Selects methods to which this rule applies.
+	// Selector: Selects a method to which this rule applies.
 	//
 	// Refer to selector for syntax details.
 	Selector string `json:"selector,omitempty"`
diff --git a/serviceusage/v1beta1/serviceusage-api.json b/serviceusage/v1beta1/serviceusage-api.json
index 86b2bfc..353f387 100644
--- a/serviceusage/v1beta1/serviceusage-api.json
+++ b/serviceusage/v1beta1/serviceusage-api.json
@@ -338,7 +338,7 @@
       }
     }
   },
-  "revision": "20180820",
+  "revision": "20180913",
   "rootUrl": "https://serviceusage.googleapis.com/",
   "schemas": {
     "Api": {
@@ -1305,7 +1305,7 @@
       "type": "object"
     },
     "HttpRule": {
-      "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind.  The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      SubMessage sub = 2;    // `sub.subfield` is url-mapped\n    }\n    message Message {\n      string text = 1; // content of the resource\n    }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n    http:\n      rules:\n        - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo`  | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      int64 revision = 2;    // becomes a parameter\n      SubMessage sub = 3;    // `sub.subfield` becomes a parameter\n    }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A\u0026param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n   omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n   request) can be classified into three types:\n    (a) Matched in the URL template.\n    (b) Covered by body (if body is `*`, everything except (a) fields;\n        else everything under the body field)\n    (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.",
+      "description": "# gRPC Transcoding\n\ngRPC Transcoding is a feature for mapping between a gRPC method and one or\nmore HTTP REST endpoints. It allows developers to build a single API service\nthat supports both gRPC APIs and REST APIs. Many systems, including [Google\nAPIs](https://github.com/googleapis/googleapis),\n[Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\nGateway](https://github.com/grpc-ecosystem/grpc-gateway),\nand [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\nand use it for large scale production services.\n\n`HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\nhow different portions of the gRPC request message are mapped to the URL\npath, URL query parameters, and HTTP request body. It also controls how the\ngRPC response message is mapped to the HTTP response body. `HttpRule` is\ntypically specified as an `google.api.http` annotation on the gRPC method.\n\nEach mapping specifies a URL path template and an HTTP method. The path\ntemplate may refer to one or more fields in the gRPC request message, as long\nas each field is a non-repeated field with a primitive (non-message) type.\nThe path template controls how fields of the request message are mapped to\nthe URL path.\n\nExample:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get: \"/v1/{name=messages/*\"}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      string name = 1; // Mapped to URL path.\n    }\n    message Message {\n      string text = 1; // The resource content.\n    }\n\nThis enables an HTTP REST to gRPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456`  | `GetMessage(name: \"messages/123456\")`\n\nAny fields in the request message which are not bound by the path template\nautomatically become HTTP query parameters if there is no HTTP request body.\nFor example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get:\"/v1/messages/{message_id}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // Mapped to URL path.\n      int64 revision = 2;    // Mapped to URL query parameter `revision`.\n      SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.\n    }\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to URL query parameters must have a\nprimitive type or a repeated primitive type or a non-repeated message type.\nIn the case of a repeated type, the parameter can be repeated in the URL\nas `...?param=A\u0026param=B`. In the case of a message type, each field of the\nmessage is mapped to a separate parameter, such as\n`...?foo.a=A\u0026foo.b=B\u0026foo.c=C`.\n\nFor HTTP methods that allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice when\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\nThis enables the following two alternative HTTP JSON to RPC mappings:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n## Rules for HTTP mapping\n\n1. Leaf request fields (recursive expansion nested messages in the request\n   message) are classified into three categories:\n   - Fields referred by the path template. They are passed via the URL path.\n   - Fields referred by the HttpRule.body. They are passed via the HTTP\n     request body.\n   - All other fields are passed via the URL query parameters, and the\n     parameter name is the field path in the request message. A repeated\n     field can be represented as multiple query parameters under the same\n     name.\n 2. If HttpRule.body is \"*\", there is no URL query parameter, all fields\n    are passed via URL path and HTTP request body.\n 3. If HttpRule.body is omitted, there is no HTTP request body, all\n    fields are passed via URL path and URL query parameters.\n\n### Path template syntax\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single URL path segment. The syntax `**` matches\nzero or more URL path segments, which must be the last part of the URL path\nexcept the `Verb`.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nThe syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\ncontains any reserved character, such characters should be percent-encoded\nbefore the matching.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path on the client\nside, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\nserver side does the reverse decoding. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{var}`.\n\nIf a variable contains multiple path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path on the\nclient side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\nThe server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\nunchanged. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{+var}`.\n\n## Using gRPC API Service Configuration\n\ngRPC API Service Configuration (service config) is a configuration language\nfor configuring a gRPC service to become a user-facing product. The\nservice config is simply the YAML representation of the `google.api.Service`\nproto message.\n\nAs an alternative to annotating your proto file, you can configure gRPC\ntranscoding in your service config YAML files. You do this by specifying a\n`HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\neffect as the proto annotation. This can be particularly useful if you\nhave a proto that is reused in multiple services. Note that any transcoding\nspecified in the service config will override any matching transcoding\nconfiguration in the proto.\n\nExample:\n\n    http:\n      rules:\n        # Selects a gRPC method and applies HttpRule to it.\n        - selector: example.v1.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\n## Special notes\n\nWhen gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\nproto to JSON conversion must follow the [proto3\nspecification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n\nWhile the single segment variable follows the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\nExpansion, the multi segment variable **does not** follow RFC 6570 Section\n3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs. As the result, gRPC Transcoding uses a custom encoding\nfor multi segment variables.\n\nThe path variables **must not** refer to any repeated or mapped field,\nbecause client libraries are not capable of handling such variable expansion.\n\nThe path variables **must not** capture the leading \"/\" character. The reason\nis that the most common use case \"{var}\" does not capture the leading \"/\"\ncharacter. For consistency, all path variables must share the same behavior.\n\nRepeated message fields must not be mapped to URL query parameters, because\nno client library can support such complicated mapping.\n\nIf an API needs to use a JSON array for request or response body, it can map\nthe request or response body to a repeated field. However, some gRPC\nTranscoding implementations may not support this feature.",
       "id": "HttpRule",
       "properties": {
         "additionalBindings": {
@@ -1323,7 +1323,7 @@
           "type": "array"
         },
         "body": {
-          "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.",
+          "description": "The name of the request field whose value is mapped to the HTTP request\nbody, or `*` for mapping all request fields not captured by the path\npattern to the HTTP body, or omitted for not having any HTTP request body.\n\nNOTE: the referred field must be present at the top-level of the request\nmessage type.",
           "type": "string"
         },
         "custom": {
@@ -1331,11 +1331,11 @@
           "description": "The custom pattern is used for specifying an HTTP method that is not\nincluded in the `pattern` field, such as HEAD, or \"*\" to leave the\nHTTP method unspecified for this rule. The wild-card rule is useful\nfor services that provide content to Web (HTML) clients."
         },
         "delete": {
-          "description": "Used for deleting a resource.",
+          "description": "Maps to HTTP DELETE. Used for deleting a resource.",
           "type": "string"
         },
         "get": {
-          "description": "Used for listing and getting information about resources.",
+          "description": "Maps to HTTP GET. Used for listing and getting information about\nresources.",
           "type": "string"
         },
         "mediaDownload": {
@@ -1347,19 +1347,19 @@
           "description": "Use this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead\n[][google.bytestream.RestByteStream] as an API to your\nconfiguration for Bytestream methods."
         },
         "patch": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PATCH. Used for updating a resource.",
           "type": "string"
         },
         "post": {
-          "description": "Used for creating a resource.",
+          "description": "Maps to HTTP POST. Used for creating a resource or performing an action.",
           "type": "string"
         },
         "put": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PUT. Used for replacing a resource.",
           "type": "string"
         },
         "responseBody": {
-          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nbody of response. Other response fields are ignored. When\nnot set, the response message will be used as HTTP body of response.",
+          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nresponse body. When omitted, the entire response message will be used\nas the HTTP response body.\n\nNOTE: The referred field must be present at the top-level of the response\nmessage type.",
           "type": "string"
         },
         "restCollection": {
@@ -1371,7 +1371,7 @@
           "type": "string"
         },
         "selector": {
-          "description": "Selects methods to which this rule applies.\n\nRefer to selector for syntax details.",
+          "description": "Selects a method to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
         }
       },
diff --git a/serviceusage/v1beta1/serviceusage-gen.go b/serviceusage/v1beta1/serviceusage-gen.go
index 46c037b..87f2079 100644
--- a/serviceusage/v1beta1/serviceusage-gen.go
+++ b/serviceusage/v1beta1/serviceusage-gen.go
@@ -2071,114 +2071,119 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// HttpRule: `HttpRule` defines the mapping of an RPC method to one or
-// more HTTP
-// REST API methods. The mapping specifies how different portions of the
-// RPC
-// request message are mapped to URL path, URL query parameters,
-// and
-// HTTP request body. The mapping is typically specified as
-// an
-// `google.api.http` annotation on the RPC method,
-// see "google/api/annotations.proto" for details.
+// HttpRule: # gRPC Transcoding
 //
-// The mapping consists of a field specifying the path template
-// and
-// method kind.  The path template can refer to fields in the
-// request
-// message, as in the example below which describes a REST GET
-// operation on a resource collection of messages:
+// gRPC Transcoding is a feature for mapping between a gRPC method and
+// one or
+// more HTTP REST endpoints. It allows developers to build a single API
+// service
+// that supports both gRPC APIs and REST APIs. Many systems, including
+// [Google
+// APIs](https://github.com/googleapis/googleapis),
+// [Cloud Endpoints](https://cloud.google.com/endpoints),
+// [gRPC
+// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
+// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this
+// feature
+// and use it for large scale production services.
 //
+// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping
+// specifies
+// how different portions of the gRPC request message are mapped to the
+// URL
+// path, URL query parameters, and HTTP request body. It also controls
+// how the
+// gRPC response message is mapped to the HTTP response body. `HttpRule`
+// is
+// typically specified as an `google.api.http` annotation on the gRPC
+// method.
+//
+// Each mapping specifies a URL path template and an HTTP method. The
+// path
+// template may refer to one or more fields in the gRPC request message,
+// as long
+// as each field is a non-repeated field with a primitive (non-message)
+// type.
+// The path template controls how fields of the request message are
+// mapped to
+// the URL path.
+//
+// Example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get =
-// "/v1/messages/{message_id}/{sub.subfield}";
+//         option (google.api.http) = {
+//             get: "/v1/{name=messages/*"}"
+//         };
 //       }
 //     }
 //     message GetMessageRequest {
-//       message SubMessage {
-//         string subfield = 1;
-//       }
-//       string message_id = 1; // mapped to the URL
-//       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+//       string name = 1; // Mapped to URL path.
 //     }
 //     message Message {
-//       string text = 1; // content of the resource
+//       string text = 1; // The resource content.
 //     }
 //
-// The same http annotation can alternatively be expressed inside
-// the
-// `GRPC API Configuration` YAML file.
+// This enables an HTTP REST to gRPC mapping as below:
 //
-//     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:
-//
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `GET /v1/messages/123456/foo`  | `GetMessage(message_id: "123456"
-// sub: SubMessage(subfield: "foo"))`
+// `GET /v1/messages/123456`  | `GetMessage(name:
+// "messages/123456")`
 //
-// In general, not only fields but also field paths can be
-// referenced
-// from a path pattern. Fields mapped to the path pattern cannot
-// be
-// repeated and must have a primitive (non-message) type.
-//
-// Any fields in the request message which are not bound by the
-// path
-// pattern automatically become (optional) HTTP query
-// parameters. Assume the following definition of the request
-// message:
-//
+// Any fields in the request message which are not bound by the path
+// template
+// automatically become HTTP query parameters if there is no HTTP
+// request body.
+// For example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get = "/v1/messages/{message_id}";
+//         option (google.api.http) = {
+//             get:"/v1/messages/{message_id}"
+//         };
 //       }
 //     }
 //     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
+//       string message_id = 1; // Mapped to URL path.
+//       int64 revision = 2;    // Mapped to URL query parameter
+// `revision`.
+//       SubMessage sub = 3;    // Mapped to URL query parameter
+// `sub.subfield`.
 //     }
 //
-//
 // This enables a HTTP JSON to RPC mapping as below:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
 // `GetMessage(message_id: "123456" revision: 2 sub:
 // SubMessage(subfield: "foo"))`
 //
-// Note that fields which are mapped to HTTP parameters must have
+// Note that fields which are mapped to URL query parameters must have
 // a
-// primitive type or a repeated primitive type. Message types are
-// not
-// allowed. In the case of a repeated type, the parameter can
-// be
-// repeated in the URL, as in `...?param=A&param=B`.
+// primitive type or a repeated primitive type or a non-repeated message
+// type.
+// In the case of a repeated type, the parameter can be repeated in the
+// URL
+// as `...?param=A&param=B`. In the case of a message type, each field
+// of the
+// message is mapped to a separate parameter, such
+// as
+// `...?foo.a=A&foo.b=B&foo.c=C`.
 //
-// For HTTP method kinds which allow a request body, the `body`
+// For HTTP methods that allow a request body, the `body`
 // field
 // specifies the mapping. Consider a REST update method on the
 // message resource collection:
 //
-//
 //     service Messaging {
 //       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "message"
 //         };
 //       }
@@ -2188,16 +2193,15 @@
 //       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
 // protos JSON encoding:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
 //
 // The special name `*` can be used in the body mapping to define
@@ -2211,7 +2215,7 @@
 //     service Messaging {
 //       rpc UpdateMessage(Message) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "*"
 //         };
 //       }
@@ -2224,16 +2228,16 @@
 //
 // The following HTTP JSON to RPC mapping is enabled:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" text: "Hi!")`
 //
 // Note that when using `*` in the body mapping, it is not possible
 // to
 // have HTTP parameters, as all fields not bound by the path end in
 // the body. This makes this option more rarely used in practice
-// of
+// when
 // defining REST APIs. The common usage of `*` is in custom
 // methods
 // which don't use the URL at all for transferring data.
@@ -2257,38 +2261,39 @@
 //       string user_id = 2;
 //     }
 //
-//
-// This enables the following two alternative HTTP JSON to
-// RPC
+// This enables the following two alternative HTTP JSON to RPC
 // mappings:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
 // `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me"
 // message_id: "123456")`
 //
-// # Rules for HTTP mapping
+// ## Rules for HTTP mapping
 //
-// The rules for mapping HTTP path, query parameters, and body fields
-// to the request message are as follows:
+// 1. Leaf request fields (recursive expansion nested messages in the
+// request
+//    message) are classified into three categories:
+//    - Fields referred by the path template. They are passed via the
+// URL path.
+//    - Fields referred by the HttpRule.body. They are passed via the
+// HTTP
+//      request body.
+//    - All other fields are passed via the URL query parameters, and
+// the
+//      parameter name is the field path in the request message. A
+// repeated
+//      field can be represented as multiple query parameters under the
+// same
+//      name.
+//  2. If HttpRule.body is "*", there is no URL query parameter, all
+// fields
+//     are passed via URL path and HTTP request body.
+//  3. If HttpRule.body is omitted, there is no HTTP request body, all
+//     fields are passed via URL path and URL query parameters.
 //
-// 1. The `body` field specifies either `*` or a field path, or is
-//    omitted. If omitted, it indicates there is no HTTP request
-// body.
-// 2. Leaf fields (recursive expansion of nested messages in the
-//    request) can be classified into three types:
-//     (a) Matched in the URL template.
-//     (b) Covered by body (if body is `*`, everything except (a)
-// fields;
-//         else everything under the body field)
-//     (c) All other fields.
-// 3. URL query parameters found in the HTTP request are mapped to (c)
-// fields.
-// 4. Any body sent with an HTTP request can contain only (b)
-// fields.
-//
-// The syntax of the path template is as follows:
+// ### Path template syntax
 //
 //     Template = "/" Segments [ Verb ] ;
 //     Segments = Segment { "/" Segment } ;
@@ -2297,11 +2302,11 @@
 //     FieldPath = IDENT { "." IDENT } ;
 //     Verb     = ":" LITERAL ;
 //
-// The syntax `*` matches a single path segment. The syntax `**` matches
-// zero
-// or more path segments, which must be the last part of the path except
-// the
-// `Verb`. The syntax `LITERAL` matches literal text in the path.
+// The syntax `*` matches a single URL path segment. The syntax `**`
+// matches
+// zero or more URL path segments, which must be the last part of the
+// URL path
+// except the `Verb`.
 //
 // The syntax `Variable` matches part of the URL path as specified by
 // its
@@ -2311,35 +2316,114 @@
 // `{var}`
 // is equivalent to `{var=*}`.
 //
+// The syntax `LITERAL` matches literal text in the URL path. If the
+// `LITERAL`
+// contains any reserved character, such characters should be
+// percent-encoded
+// before the matching.
+//
 // If a variable contains exactly one path segment, such as "{var}"
 // or
-// "{var=*}", when such a variable is expanded into a URL path, all
-// characters
-// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up
-// in the
-// Discovery Document as `{var}`.
+// "{var=*}", when such a variable is expanded into a URL path on the
+// client
+// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded.
+// The
+// server side does the reverse decoding. Such variables show up in
+// the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{var}`.
 //
-// If a variable contains one or more path segments, such as
+// If a variable contains multiple path segments, such as
 // "{var=foo/*}"
-// or "{var=**}", when such a variable is expanded into a URL path,
-// all
-// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such
-// variables
-// show up in the Discovery Document as `{+var}`.
+// or "{var=**}", when such a variable is expanded into a URL path on
+// the
+// client side, all characters except `[-_.~/0-9a-zA-Z]` are
+// percent-encoded.
+// The server side does the reverse decoding, except "%2F" and "%2f" are
+// left
+// unchanged. Such variables show up in the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{+var}`.
 //
-// NOTE: While the single segment variable matches the semantics of
-// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2
-// Simple String Expansion, the multi segment variable **does not**
-// match
-// RFC 6570 Reserved Expansion. The reason is that the Reserved
+// ## Using gRPC API Service Configuration
+//
+// gRPC API Service Configuration (service config) is a configuration
+// language
+// for configuring a gRPC service to become a user-facing product.
+// The
+// service config is simply the YAML representation of the
+// `google.api.Service`
+// proto message.
+//
+// As an alternative to annotating your proto file, you can configure
+// gRPC
+// transcoding in your service config YAML files. You do this by
+// specifying a
+// `HttpRule` that maps the gRPC method to a REST endpoint, achieving
+// the same
+// effect as the proto annotation. This can be particularly useful if
+// you
+// have a proto that is reused in multiple services. Note that any
+// transcoding
+// specified in the service config will override any matching
+// transcoding
+// configuration in the proto.
+//
+// Example:
+//
+//     http:
+//       rules:
+//         # Selects a gRPC method and applies HttpRule to it.
+//         - selector: example.v1.Messaging.GetMessage
+//           get: /v1/messages/{message_id}/{sub.subfield}
+//
+// ## Special notes
+//
+// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints,
+// the
+// proto to JSON conversion must follow the
+// [proto3
+// specification](https://developers.google.com/protocol-buffers/
+// docs/proto3#json).
+//
+// While the single segment variable follows the semantics of
+// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple
+// String
+// Expansion, the multi segment variable **does not** follow RFC 6570
+// Section
+// 3.2.3 Reserved Expansion. The reason is that the Reserved
 // Expansion
 // does not expand special characters like `?` and `#`, which would
 // lead
-// to invalid URLs.
+// to invalid URLs. As the result, gRPC Transcoding uses a custom
+// encoding
+// for multi segment variables.
 //
-// NOTE: the field paths in variables and in the `body` must not refer
-// to
-// repeated fields or map fields.
+// The path variables **must not** refer to any repeated or mapped
+// field,
+// because client libraries are not capable of handling such variable
+// expansion.
+//
+// The path variables **must not** capture the leading "/" character.
+// The reason
+// is that the most common use case "{var}" does not capture the leading
+// "/"
+// character. For consistency, all path variables must share the same
+// behavior.
+//
+// Repeated message fields must not be mapped to URL query parameters,
+// because
+// no client library can support such complicated mapping.
+//
+// If an API needs to use a JSON array for request or response body, it
+// can map
+// the request or response body to a repeated field. However, some
+// gRPC
+// Transcoding implementations may not support this feature.
 type HttpRule struct {
 	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
 	// bindings must
@@ -2357,12 +2441,15 @@
 	Authorizations []*AuthorizationRule `json:"authorizations,omitempty"`
 
 	// Body: 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 request message type.
+	// request
+	// body, or `*` for mapping all request fields not captured by the
+	// path
+	// pattern to the HTTP body, or omitted for not having any HTTP request
+	// body.
+	//
+	// NOTE: the referred field must be present at the top-level of the
+	// request
+	// message type.
 	Body string `json:"body,omitempty"`
 
 	// Custom: The custom pattern is used for specifying an HTTP method that
@@ -2374,10 +2461,12 @@
 	// for services that provide content to Web (HTML) clients.
 	Custom *CustomHttpPattern `json:"custom,omitempty"`
 
-	// Delete: Used for deleting a resource.
+	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
 	Delete string `json:"delete,omitempty"`
 
-	// Get: Used for listing and getting information about resources.
+	// Get: Maps to HTTP GET. Used for listing and getting information
+	// about
+	// resources.
 	Get string `json:"get,omitempty"`
 
 	// MediaDownload: Use this only for Scotty Requests. Do not use this for
@@ -2394,19 +2483,25 @@
 	// configuration for Bytestream methods.
 	MediaUpload *MediaUpload `json:"mediaUpload,omitempty"`
 
-	// Patch: Used for updating a resource.
+	// Patch: Maps to HTTP PATCH. Used for updating a resource.
 	Patch string `json:"patch,omitempty"`
 
-	// Post: Used for creating a resource.
+	// Post: Maps to HTTP POST. Used for creating a resource or performing
+	// an action.
 	Post string `json:"post,omitempty"`
 
-	// Put: Used for updating a resource.
+	// Put: Maps to HTTP PUT. Used for replacing a resource.
 	Put string `json:"put,omitempty"`
 
 	// ResponseBody: Optional. The name of the response field whose value is
 	// mapped to the HTTP
-	// body of response. Other response fields are ignored. When
-	// not set, the response message will be used as HTTP body of response.
+	// response body. When omitted, the entire response message will be
+	// used
+	// as the HTTP response body.
+	//
+	// NOTE: The referred field must be present at the top-level of the
+	// response
+	// message type.
 	ResponseBody string `json:"responseBody,omitempty"`
 
 	// RestCollection: DO NOT USE. This is an experimental field.
@@ -2457,7 +2552,7 @@
 	// insert.
 	RestMethodName string `json:"restMethodName,omitempty"`
 
-	// Selector: Selects methods to which this rule applies.
+	// Selector: Selects a method to which this rule applies.
 	//
 	// Refer to selector for syntax details.
 	Selector string `json:"selector,omitempty"`
diff --git a/serviceuser/v1/serviceuser-api.json b/serviceuser/v1/serviceuser-api.json
index bca8480..8b3d07c 100644
--- a/serviceuser/v1/serviceuser-api.json
+++ b/serviceuser/v1/serviceuser-api.json
@@ -245,7 +245,7 @@
       }
     }
   },
-  "revision": "20180824",
+  "revision": "20180907",
   "rootUrl": "https://serviceuser.googleapis.com/",
   "schemas": {
     "Api": {
@@ -883,7 +883,7 @@
       "type": "object"
     },
     "HttpRule": {
-      "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind.  The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      SubMessage sub = 2;    // `sub.subfield` is url-mapped\n    }\n    message Message {\n      string text = 1; // content of the resource\n    }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n    http:\n      rules:\n        - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo`  | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      int64 revision = 2;    // becomes a parameter\n      SubMessage sub = 3;    // `sub.subfield` becomes a parameter\n    }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A\u0026param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n   omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n   request) can be classified into three types:\n    (a) Matched in the URL template.\n    (b) Covered by body (if body is `*`, everything except (a) fields;\n        else everything under the body field)\n    (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.",
+      "description": "# gRPC Transcoding\n\ngRPC Transcoding is a feature for mapping between a gRPC method and one or\nmore HTTP REST endpoints. It allows developers to build a single API service\nthat supports both gRPC APIs and REST APIs. Many systems, including [Google\nAPIs](https://github.com/googleapis/googleapis),\n[Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\nGateway](https://github.com/grpc-ecosystem/grpc-gateway),\nand [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\nand use it for large scale production services.\n\n`HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\nhow different portions of the gRPC request message are mapped to the URL\npath, URL query parameters, and HTTP request body. It also controls how the\ngRPC response message is mapped to the HTTP response body. `HttpRule` is\ntypically specified as an `google.api.http` annotation on the gRPC method.\n\nEach mapping specifies a URL path template and an HTTP method. The path\ntemplate may refer to one or more fields in the gRPC request message, as long\nas each field is a non-repeated field with a primitive (non-message) type.\nThe path template controls how fields of the request message are mapped to\nthe URL path.\n\nExample:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get: \"/v1/{name=messages/*\"}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      string name = 1; // Mapped to URL path.\n    }\n    message Message {\n      string text = 1; // The resource content.\n    }\n\nThis enables an HTTP REST to gRPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456`  | `GetMessage(name: \"messages/123456\")`\n\nAny fields in the request message which are not bound by the path template\nautomatically become HTTP query parameters if there is no HTTP request body.\nFor example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n            get:\"/v1/messages/{message_id}\"\n        };\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // Mapped to URL path.\n      int64 revision = 2;    // Mapped to URL query parameter `revision`.\n      SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.\n    }\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456?revision=2\u0026sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to URL query parameters must have a\nprimitive type or a repeated primitive type or a non-repeated message type.\nIn the case of a repeated type, the parameter can be repeated in the URL\nas `...?param=A\u0026param=B`. In the case of a message type, each field of the\nmessage is mapped to a separate parameter, such as\n`...?foo.a=A\u0026foo.b=B\u0026foo.c=C`.\n\nFor HTTP methods that allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          patch: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | gRPC\n-----|-----\n`PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice when\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\nThis enables the following two alternative HTTP JSON to RPC mappings:\n\nHTTP | gRPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n## Rules for HTTP mapping\n\n1. Leaf request fields (recursive expansion nested messages in the request\n   message) are classified into three categories:\n   - Fields referred by the path template. They are passed via the URL path.\n   - Fields referred by the HttpRule.body. They are passed via the HTTP\n     request body.\n   - All other fields are passed via the URL query parameters, and the\n     parameter name is the field path in the request message. A repeated\n     field can be represented as multiple query parameters under the same\n     name.\n 2. If HttpRule.body is \"*\", there is no URL query parameter, all fields\n    are passed via URL path and HTTP request body.\n 3. If HttpRule.body is omitted, there is no HTTP request body, all\n    fields are passed via URL path and URL query parameters.\n\n### Path template syntax\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single URL path segment. The syntax `**` matches\nzero or more URL path segments, which must be the last part of the URL path\nexcept the `Verb`.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nThe syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\ncontains any reserved character, such characters should be percent-encoded\nbefore the matching.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path on the client\nside, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\nserver side does the reverse decoding. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{var}`.\n\nIf a variable contains multiple path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path on the\nclient side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\nThe server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\nunchanged. Such variables show up in the\n[Discovery Document](https://developers.google.com/discovery/v1/reference/apis)\nas `{+var}`.\n\n## Using gRPC API Service Configuration\n\ngRPC API Service Configuration (service config) is a configuration language\nfor configuring a gRPC service to become a user-facing product. The\nservice config is simply the YAML representation of the `google.api.Service`\nproto message.\n\nAs an alternative to annotating your proto file, you can configure gRPC\ntranscoding in your service config YAML files. You do this by specifying a\n`HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\neffect as the proto annotation. This can be particularly useful if you\nhave a proto that is reused in multiple services. Note that any transcoding\nspecified in the service config will override any matching transcoding\nconfiguration in the proto.\n\nExample:\n\n    http:\n      rules:\n        # Selects a gRPC method and applies HttpRule to it.\n        - selector: example.v1.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\n## Special notes\n\nWhen gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\nproto to JSON conversion must follow the [proto3\nspecification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n\nWhile the single segment variable follows the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\nExpansion, the multi segment variable **does not** follow RFC 6570 Section\n3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs. As the result, gRPC Transcoding uses a custom encoding\nfor multi segment variables.\n\nThe path variables **must not** refer to any repeated or mapped field,\nbecause client libraries are not capable of handling such variable expansion.\n\nThe path variables **must not** capture the leading \"/\" character. The reason\nis that the most common use case \"{var}\" does not capture the leading \"/\"\ncharacter. For consistency, all path variables must share the same behavior.\n\nRepeated message fields must not be mapped to URL query parameters, because\nno client library can support such complicated mapping.\n\nIf an API needs to use a JSON array for request or response body, it can map\nthe request or response body to a repeated field. However, some gRPC\nTranscoding implementations may not support this feature.",
       "id": "HttpRule",
       "properties": {
         "additionalBindings": {
@@ -894,7 +894,7 @@
           "type": "array"
         },
         "body": {
-          "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.",
+          "description": "The name of the request field whose value is mapped to the HTTP request\nbody, or `*` for mapping all request fields not captured by the path\npattern to the HTTP body, or omitted for not having any HTTP request body.\n\nNOTE: the referred field must be present at the top-level of the request\nmessage type.",
           "type": "string"
         },
         "custom": {
@@ -902,11 +902,11 @@
           "description": "The custom pattern is used for specifying an HTTP method that is not\nincluded in the `pattern` field, such as HEAD, or \"*\" to leave the\nHTTP method unspecified for this rule. The wild-card rule is useful\nfor services that provide content to Web (HTML) clients."
         },
         "delete": {
-          "description": "Used for deleting a resource.",
+          "description": "Maps to HTTP DELETE. Used for deleting a resource.",
           "type": "string"
         },
         "get": {
-          "description": "Used for listing and getting information about resources.",
+          "description": "Maps to HTTP GET. Used for listing and getting information about\nresources.",
           "type": "string"
         },
         "mediaDownload": {
@@ -918,23 +918,23 @@
           "description": "Use this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead\n[][google.bytestream.RestByteStream] as an API to your\nconfiguration for Bytestream methods."
         },
         "patch": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PATCH. Used for updating a resource.",
           "type": "string"
         },
         "post": {
-          "description": "Used for creating a resource.",
+          "description": "Maps to HTTP POST. Used for creating a resource or performing an action.",
           "type": "string"
         },
         "put": {
-          "description": "Used for updating a resource.",
+          "description": "Maps to HTTP PUT. Used for replacing a resource.",
           "type": "string"
         },
         "responseBody": {
-          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nbody of response. Other response fields are ignored. When\nnot set, the response message will be used as HTTP body of response.",
+          "description": "Optional. The name of the response field whose value is mapped to the HTTP\nresponse body. When omitted, the entire response message will be used\nas the HTTP response body.\n\nNOTE: The referred field must be present at the top-level of the response\nmessage type.",
           "type": "string"
         },
         "selector": {
-          "description": "Selects methods to which this rule applies.\n\nRefer to selector for syntax details.",
+          "description": "Selects a method to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
         }
       },
diff --git a/serviceuser/v1/serviceuser-gen.go b/serviceuser/v1/serviceuser-gen.go
index b269630..8fa07ba 100644
--- a/serviceuser/v1/serviceuser-gen.go
+++ b/serviceuser/v1/serviceuser-gen.go
@@ -1483,114 +1483,119 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// HttpRule: `HttpRule` defines the mapping of an RPC method to one or
-// more HTTP
-// REST API methods. The mapping specifies how different portions of the
-// RPC
-// request message are mapped to URL path, URL query parameters,
-// and
-// HTTP request body. The mapping is typically specified as
-// an
-// `google.api.http` annotation on the RPC method,
-// see "google/api/annotations.proto" for details.
+// HttpRule: # gRPC Transcoding
 //
-// The mapping consists of a field specifying the path template
-// and
-// method kind.  The path template can refer to fields in the
-// request
-// message, as in the example below which describes a REST GET
-// operation on a resource collection of messages:
+// gRPC Transcoding is a feature for mapping between a gRPC method and
+// one or
+// more HTTP REST endpoints. It allows developers to build a single API
+// service
+// that supports both gRPC APIs and REST APIs. Many systems, including
+// [Google
+// APIs](https://github.com/googleapis/googleapis),
+// [Cloud Endpoints](https://cloud.google.com/endpoints),
+// [gRPC
+// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
+// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this
+// feature
+// and use it for large scale production services.
 //
+// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping
+// specifies
+// how different portions of the gRPC request message are mapped to the
+// URL
+// path, URL query parameters, and HTTP request body. It also controls
+// how the
+// gRPC response message is mapped to the HTTP response body. `HttpRule`
+// is
+// typically specified as an `google.api.http` annotation on the gRPC
+// method.
+//
+// Each mapping specifies a URL path template and an HTTP method. The
+// path
+// template may refer to one or more fields in the gRPC request message,
+// as long
+// as each field is a non-repeated field with a primitive (non-message)
+// type.
+// The path template controls how fields of the request message are
+// mapped to
+// the URL path.
+//
+// Example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get =
-// "/v1/messages/{message_id}/{sub.subfield}";
+//         option (google.api.http) = {
+//             get: "/v1/{name=messages/*"}"
+//         };
 //       }
 //     }
 //     message GetMessageRequest {
-//       message SubMessage {
-//         string subfield = 1;
-//       }
-//       string message_id = 1; // mapped to the URL
-//       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+//       string name = 1; // Mapped to URL path.
 //     }
 //     message Message {
-//       string text = 1; // content of the resource
+//       string text = 1; // The resource content.
 //     }
 //
-// The same http annotation can alternatively be expressed inside
-// the
-// `GRPC API Configuration` YAML file.
+// This enables an HTTP REST to gRPC mapping as below:
 //
-//     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:
-//
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `GET /v1/messages/123456/foo`  | `GetMessage(message_id: "123456"
-// sub: SubMessage(subfield: "foo"))`
+// `GET /v1/messages/123456`  | `GetMessage(name:
+// "messages/123456")`
 //
-// In general, not only fields but also field paths can be
-// referenced
-// from a path pattern. Fields mapped to the path pattern cannot
-// be
-// repeated and must have a primitive (non-message) type.
-//
-// Any fields in the request message which are not bound by the
-// path
-// pattern automatically become (optional) HTTP query
-// parameters. Assume the following definition of the request
-// message:
-//
+// Any fields in the request message which are not bound by the path
+// template
+// automatically become HTTP query parameters if there is no HTTP
+// request body.
+// For example:
 //
 //     service Messaging {
 //       rpc GetMessage(GetMessageRequest) returns (Message) {
-//         option (google.api.http).get = "/v1/messages/{message_id}";
+//         option (google.api.http) = {
+//             get:"/v1/messages/{message_id}"
+//         };
 //       }
 //     }
 //     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
+//       string message_id = 1; // Mapped to URL path.
+//       int64 revision = 2;    // Mapped to URL query parameter
+// `revision`.
+//       SubMessage sub = 3;    // Mapped to URL query parameter
+// `sub.subfield`.
 //     }
 //
-//
 // This enables a HTTP JSON to RPC mapping as below:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
 // `GetMessage(message_id: "123456" revision: 2 sub:
 // SubMessage(subfield: "foo"))`
 //
-// Note that fields which are mapped to HTTP parameters must have
+// Note that fields which are mapped to URL query parameters must have
 // a
-// primitive type or a repeated primitive type. Message types are
-// not
-// allowed. In the case of a repeated type, the parameter can
-// be
-// repeated in the URL, as in `...?param=A&param=B`.
+// primitive type or a repeated primitive type or a non-repeated message
+// type.
+// In the case of a repeated type, the parameter can be repeated in the
+// URL
+// as `...?param=A&param=B`. In the case of a message type, each field
+// of the
+// message is mapped to a separate parameter, such
+// as
+// `...?foo.a=A&foo.b=B&foo.c=C`.
 //
-// For HTTP method kinds which allow a request body, the `body`
+// For HTTP methods that allow a request body, the `body`
 // field
 // specifies the mapping. Consider a REST update method on the
 // message resource collection:
 //
-//
 //     service Messaging {
 //       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "message"
 //         };
 //       }
@@ -1600,16 +1605,15 @@
 //       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
 // protos JSON encoding:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
 //
 // The special name `*` can be used in the body mapping to define
@@ -1623,7 +1627,7 @@
 //     service Messaging {
 //       rpc UpdateMessage(Message) returns (Message) {
 //         option (google.api.http) = {
-//           put: "/v1/messages/{message_id}"
+//           patch: "/v1/messages/{message_id}"
 //           body: "*"
 //         };
 //       }
@@ -1636,16 +1640,16 @@
 //
 // The following HTTP JSON to RPC mapping is enabled:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
-// `PUT /v1/messages/123456 { "text": "Hi!" }` |
+// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
 // `UpdateMessage(message_id: "123456" text: "Hi!")`
 //
 // Note that when using `*` in the body mapping, it is not possible
 // to
 // have HTTP parameters, as all fields not bound by the path end in
 // the body. This makes this option more rarely used in practice
-// of
+// when
 // defining REST APIs. The common usage of `*` is in custom
 // methods
 // which don't use the URL at all for transferring data.
@@ -1669,38 +1673,39 @@
 //       string user_id = 2;
 //     }
 //
-//
-// This enables the following two alternative HTTP JSON to
-// RPC
+// This enables the following two alternative HTTP JSON to RPC
 // mappings:
 //
-// HTTP | RPC
+// HTTP | gRPC
 // -----|-----
 // `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
 // `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me"
 // message_id: "123456")`
 //
-// # Rules for HTTP mapping
+// ## Rules for HTTP mapping
 //
-// The rules for mapping HTTP path, query parameters, and body fields
-// to the request message are as follows:
+// 1. Leaf request fields (recursive expansion nested messages in the
+// request
+//    message) are classified into three categories:
+//    - Fields referred by the path template. They are passed via the
+// URL path.
+//    - Fields referred by the HttpRule.body. They are passed via the
+// HTTP
+//      request body.
+//    - All other fields are passed via the URL query parameters, and
+// the
+//      parameter name is the field path in the request message. A
+// repeated
+//      field can be represented as multiple query parameters under the
+// same
+//      name.
+//  2. If HttpRule.body is "*", there is no URL query parameter, all
+// fields
+//     are passed via URL path and HTTP request body.
+//  3. If HttpRule.body is omitted, there is no HTTP request body, all
+//     fields are passed via URL path and URL query parameters.
 //
-// 1. The `body` field specifies either `*` or a field path, or is
-//    omitted. If omitted, it indicates there is no HTTP request
-// body.
-// 2. Leaf fields (recursive expansion of nested messages in the
-//    request) can be classified into three types:
-//     (a) Matched in the URL template.
-//     (b) Covered by body (if body is `*`, everything except (a)
-// fields;
-//         else everything under the body field)
-//     (c) All other fields.
-// 3. URL query parameters found in the HTTP request are mapped to (c)
-// fields.
-// 4. Any body sent with an HTTP request can contain only (b)
-// fields.
-//
-// The syntax of the path template is as follows:
+// ### Path template syntax
 //
 //     Template = "/" Segments [ Verb ] ;
 //     Segments = Segment { "/" Segment } ;
@@ -1709,11 +1714,11 @@
 //     FieldPath = IDENT { "." IDENT } ;
 //     Verb     = ":" LITERAL ;
 //
-// The syntax `*` matches a single path segment. The syntax `**` matches
-// zero
-// or more path segments, which must be the last part of the path except
-// the
-// `Verb`. The syntax `LITERAL` matches literal text in the path.
+// The syntax `*` matches a single URL path segment. The syntax `**`
+// matches
+// zero or more URL path segments, which must be the last part of the
+// URL path
+// except the `Verb`.
 //
 // The syntax `Variable` matches part of the URL path as specified by
 // its
@@ -1723,35 +1728,114 @@
 // `{var}`
 // is equivalent to `{var=*}`.
 //
+// The syntax `LITERAL` matches literal text in the URL path. If the
+// `LITERAL`
+// contains any reserved character, such characters should be
+// percent-encoded
+// before the matching.
+//
 // If a variable contains exactly one path segment, such as "{var}"
 // or
-// "{var=*}", when such a variable is expanded into a URL path, all
-// characters
-// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up
-// in the
-// Discovery Document as `{var}`.
+// "{var=*}", when such a variable is expanded into a URL path on the
+// client
+// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded.
+// The
+// server side does the reverse decoding. Such variables show up in
+// the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{var}`.
 //
-// If a variable contains one or more path segments, such as
+// If a variable contains multiple path segments, such as
 // "{var=foo/*}"
-// or "{var=**}", when such a variable is expanded into a URL path,
-// all
-// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such
-// variables
-// show up in the Discovery Document as `{+var}`.
+// or "{var=**}", when such a variable is expanded into a URL path on
+// the
+// client side, all characters except `[-_.~/0-9a-zA-Z]` are
+// percent-encoded.
+// The server side does the reverse decoding, except "%2F" and "%2f" are
+// left
+// unchanged. Such variables show up in the
+// [Discovery
+// Document](https://developers.google.com/discovery/v1/reference/apis)
+// a
+// s `{+var}`.
 //
-// NOTE: While the single segment variable matches the semantics of
-// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2
-// Simple String Expansion, the multi segment variable **does not**
-// match
-// RFC 6570 Reserved Expansion. The reason is that the Reserved
+// ## Using gRPC API Service Configuration
+//
+// gRPC API Service Configuration (service config) is a configuration
+// language
+// for configuring a gRPC service to become a user-facing product.
+// The
+// service config is simply the YAML representation of the
+// `google.api.Service`
+// proto message.
+//
+// As an alternative to annotating your proto file, you can configure
+// gRPC
+// transcoding in your service config YAML files. You do this by
+// specifying a
+// `HttpRule` that maps the gRPC method to a REST endpoint, achieving
+// the same
+// effect as the proto annotation. This can be particularly useful if
+// you
+// have a proto that is reused in multiple services. Note that any
+// transcoding
+// specified in the service config will override any matching
+// transcoding
+// configuration in the proto.
+//
+// Example:
+//
+//     http:
+//       rules:
+//         # Selects a gRPC method and applies HttpRule to it.
+//         - selector: example.v1.Messaging.GetMessage
+//           get: /v1/messages/{message_id}/{sub.subfield}
+//
+// ## Special notes
+//
+// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints,
+// the
+// proto to JSON conversion must follow the
+// [proto3
+// specification](https://developers.google.com/protocol-buffers/
+// docs/proto3#json).
+//
+// While the single segment variable follows the semantics of
+// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple
+// String
+// Expansion, the multi segment variable **does not** follow RFC 6570
+// Section
+// 3.2.3 Reserved Expansion. The reason is that the Reserved
 // Expansion
 // does not expand special characters like `?` and `#`, which would
 // lead
-// to invalid URLs.
+// to invalid URLs. As the result, gRPC Transcoding uses a custom
+// encoding
+// for multi segment variables.
 //
-// NOTE: the field paths in variables and in the `body` must not refer
-// to
-// repeated fields or map fields.
+// The path variables **must not** refer to any repeated or mapped
+// field,
+// because client libraries are not capable of handling such variable
+// expansion.
+//
+// The path variables **must not** capture the leading "/" character.
+// The reason
+// is that the most common use case "{var}" does not capture the leading
+// "/"
+// character. For consistency, all path variables must share the same
+// behavior.
+//
+// Repeated message fields must not be mapped to URL query parameters,
+// because
+// no client library can support such complicated mapping.
+//
+// If an API needs to use a JSON array for request or response body, it
+// can map
+// the request or response body to a repeated field. However, some
+// gRPC
+// Transcoding implementations may not support this feature.
 type HttpRule struct {
 	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
 	// bindings must
@@ -1760,12 +1844,15 @@
 	AdditionalBindings []*HttpRule `json:"additionalBindings,omitempty"`
 
 	// Body: 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 request message type.
+	// request
+	// body, or `*` for mapping all request fields not captured by the
+	// path
+	// pattern to the HTTP body, or omitted for not having any HTTP request
+	// body.
+	//
+	// NOTE: the referred field must be present at the top-level of the
+	// request
+	// message type.
 	Body string `json:"body,omitempty"`
 
 	// Custom: The custom pattern is used for specifying an HTTP method that
@@ -1777,10 +1864,12 @@
 	// for services that provide content to Web (HTML) clients.
 	Custom *CustomHttpPattern `json:"custom,omitempty"`
 
-	// Delete: Used for deleting a resource.
+	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
 	Delete string `json:"delete,omitempty"`
 
-	// Get: Used for listing and getting information about resources.
+	// Get: Maps to HTTP GET. Used for listing and getting information
+	// about
+	// resources.
 	Get string `json:"get,omitempty"`
 
 	// MediaDownload: Use this only for Scotty Requests. Do not use this for
@@ -1797,22 +1886,28 @@
 	// configuration for Bytestream methods.
 	MediaUpload *MediaUpload `json:"mediaUpload,omitempty"`
 
-	// Patch: Used for updating a resource.
+	// Patch: Maps to HTTP PATCH. Used for updating a resource.
 	Patch string `json:"patch,omitempty"`
 
-	// Post: Used for creating a resource.
+	// Post: Maps to HTTP POST. Used for creating a resource or performing
+	// an action.
 	Post string `json:"post,omitempty"`
 
-	// Put: Used for updating a resource.
+	// Put: Maps to HTTP PUT. Used for replacing a resource.
 	Put string `json:"put,omitempty"`
 
 	// ResponseBody: Optional. The name of the response field whose value is
 	// mapped to the HTTP
-	// body of response. Other response fields are ignored. When
-	// not set, the response message will be used as HTTP body of response.
+	// response body. When omitted, the entire response message will be
+	// used
+	// as the HTTP response body.
+	//
+	// NOTE: The referred field must be present at the top-level of the
+	// response
+	// message type.
 	ResponseBody string `json:"responseBody,omitempty"`
 
-	// Selector: Selects methods to which this rule applies.
+	// Selector: Selects a method to which this rule applies.
 	//
 	// Refer to selector for syntax details.
 	Selector string `json:"selector,omitempty"`
diff --git a/speech/v1/speech-api.json b/speech/v1/speech-api.json
index 166045c..9d2f77d 100644
--- a/speech/v1/speech-api.json
+++ b/speech/v1/speech-api.json
@@ -130,6 +130,43 @@
           "scopes": [
             "https://www.googleapis.com/auth/cloud-platform"
           ]
+        },
+        "list": {
+          "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+          "flatPath": "v1/operations",
+          "httpMethod": "GET",
+          "id": "speech.operations.list",
+          "parameterOrder": [],
+          "parameters": {
+            "filter": {
+              "description": "The standard list filter.",
+              "location": "query",
+              "type": "string"
+            },
+            "name": {
+              "description": "The name of the operation's parent resource.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageSize": {
+              "description": "The standard list page size.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "The standard list page token.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1/operations",
+          "response": {
+            "$ref": "ListOperationsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
         }
       }
     },
@@ -174,9 +211,27 @@
       }
     }
   },
-  "revision": "20180713",
+  "revision": "20180911",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
+    "ListOperationsResponse": {
+      "description": "The response message for Operations.ListOperations.",
+      "id": "ListOperationsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The standard List next-page token.",
+          "type": "string"
+        },
+        "operations": {
+          "description": "A list of operations that matches the specified filter in the request.",
+          "items": {
+            "$ref": "Operation"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "LongRunningRecognizeRequest": {
       "description": "The top-level message sent by the client for the `LongRunningRecognize`\nmethod.",
       "id": "LongRunningRecognizeRequest",
@@ -228,7 +283,7 @@
       "type": "object"
     },
     "RecognitionAudio": {
-      "description": "Contains audio data in the encoding specified in the `RecognitionConfig`.\nEither `content` or `uri` must be supplied. Supplying both or neither\nreturns google.rpc.Code.INVALID_ARGUMENT. See\n[audio limits](https://cloud.google.com/speech/limits#content).",
+      "description": "Contains audio data in the encoding specified in the `RecognitionConfig`.\nEither `content` or `uri` must be supplied. Supplying both or neither\nreturns google.rpc.Code.INVALID_ARGUMENT. See\n[content limits](/speech-to-text/quotas#content).",
       "id": "RecognitionAudio",
       "properties": {
         "content": {
@@ -237,7 +292,7 @@
           "type": "string"
         },
         "uri": {
-          "description": "URI that points to a file that contains audio data bytes as specified in\n`RecognitionConfig`. Currently, only Google Cloud Storage URIs are\nsupported, which must be specified in the following format:\n`gs://bucket_name/object_name` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](https://cloud.google.com/storage/docs/reference-uris).",
+          "description": "URI that points to a file that contains audio data bytes as specified in\n`RecognitionConfig`. The file must not be compressed (for example, gzip).\nCurrently, only Google Cloud Storage URIs are\nsupported, which must be specified in the following format:\n`gs://bucket_name/object_name` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](https://cloud.google.com/storage/docs/reference-uris).",
           "type": "string"
         }
       },
@@ -247,6 +302,10 @@
       "description": "Provides information to the recognizer that specifies how to process the\nrequest.",
       "id": "RecognitionConfig",
       "properties": {
+        "enableAutomaticPunctuation": {
+          "description": "*Optional* If 'true', adds punctuation to recognition result hypotheses.\nThis feature is only available in select languages. Setting this for\nrequests in other languages has no effect at all.\nThe default 'false' value does not add punctuation to result hypotheses.\nNote: This is currently offered as an experimental service, complimentary\nto all users. In the future this may be exclusively available as a\npremium feature.",
+          "type": "boolean"
+        },
         "enableWordTimeOffsets": {
           "description": "*Optional* If `true`, the top result includes a list of words and\nthe start and end time offsets (timestamps) for those words. If\n`false`, no word-level time offset information is returned. The default is\n`false`.",
           "type": "boolean"
@@ -276,7 +335,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "*Required* The language of the supplied audio as a\n[BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag.\nExample: \"en-US\".\nSee [Language Support](https://cloud.google.com/speech/docs/languages)\nfor a list of the currently supported language codes.",
+          "description": "*Required* The language of the supplied audio as a\n[BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag.\nExample: \"en-US\".\nSee [Language Support](/speech-to-text/docs/languages)\nfor a list of the currently supported language codes.",
           "type": "string"
         },
         "maxAlternatives": {
@@ -284,6 +343,10 @@
           "format": "int32",
           "type": "integer"
         },
+        "model": {
+          "description": "*Optional* Which model to select for the given request. Select the model\nbest suited to your domain to get best results. If a model is not\nexplicitly specified, then we auto-select a model based on the parameters\nin the RecognitionConfig.\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003eModel\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eDescription\u003c/b\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003ecommand_and_search\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eBest for short queries such as voice commands or voice search.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003ephone_call\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eBest for audio that originated from a phone call (typically\n    recorded at an 8khz sampling rate).\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003evideo\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eBest for audio that originated from from video or includes multiple\n        speakers. Ideally the audio is recorded at a 16khz or greater\n        sampling rate. This is a premium model that costs more than the\n        standard rate.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eBest for audio that is not one of the specific audio models.\n        For example, long-form audio. Ideally the audio is high-fidelity,\n        recorded at a 16khz or greater sampling rate.\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e",
+          "type": "string"
+        },
         "profanityFilter": {
           "description": "*Optional* If set to `true`, the server will attempt to filter out\nprofanities, replacing all but the initial character in each filtered word\nwith asterisks, e.g. \"f***\". If set to `false` or omitted, profanities\nwon't be filtered out.",
           "type": "boolean"
@@ -294,11 +357,15 @@
           "type": "integer"
         },
         "speechContexts": {
-          "description": "*Optional* A means to provide context to assist the speech recognition.",
+          "description": "*Optional* array of SpeechContext.\nA means to provide context to assist the speech recognition. For more\ninformation, see [Phrase Hints](/speech-to-text/docs/basics#phrase-hints).",
           "items": {
             "$ref": "SpeechContext"
           },
           "type": "array"
+        },
+        "useEnhanced": {
+          "description": "*Optional* Set to true to use an enhanced model for speech recognition.\nYou must also set the `model` field to a valid, enhanced model. If\n`use_enhanced` is set to true and the `model` field is not set, then\n`use_enhanced` is ignored. If `use_enhanced` is true and an enhanced\nversion of the specified model does not exist, then the speech is\nrecognized using the standard version of the specified model.\n\nEnhanced speech models require that you opt-in to data logging using\ninstructions in the [documentation](/speech-to-text/enable-data-logging).\nIf you set `use_enhanced` to true and you have not enabled audio logging,\nthen you will receive an error.",
+          "type": "boolean"
         }
       },
       "type": "object"
@@ -337,7 +404,7 @@
       "id": "SpeechContext",
       "properties": {
         "phrases": {
-          "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](https://cloud.google.com/speech/limits#content).",
+          "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](/speech-to-text/quotas#content).",
           "items": {
             "type": "string"
           },
@@ -360,7 +427,7 @@
           "type": "string"
         },
         "words": {
-          "description": "Output only. A list of word-specific information for each recognized word.\nNote: When enable_speaker_diarization is true, you will see all the words\nfrom the beginning of the audio.",
+          "description": "Output only. A list of word-specific information for each recognized word.\nNote: When `enable_speaker_diarization` is true, you will see all the words\nfrom the beginning of the audio.",
           "items": {
             "$ref": "WordInfo"
           },
diff --git a/speech/v1/speech-gen.go b/speech/v1/speech-gen.go
index df57ca5..8e7ef13 100644
--- a/speech/v1/speech-gen.go
+++ b/speech/v1/speech-gen.go
@@ -98,6 +98,43 @@
 	s *Service
 }
 
+// ListOperationsResponse: The response message for
+// Operations.ListOperations.
+type ListOperationsResponse struct {
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Operations: A list of operations that matches the specified filter in
+	// the request.
+	Operations []*Operation `json:"operations,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListOperationsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // LongRunningRecognizeRequest: The top-level message sent by the client
 // for the `LongRunningRecognize`
 // method.
@@ -213,7 +250,7 @@
 // Either `content` or `uri` must be supplied. Supplying both or
 // neither
 // returns google.rpc.Code.INVALID_ARGUMENT. See
-// [audio limits](https://cloud.google.com/speech/limits#content).
+// [content limits](/speech-to-text/quotas#content).
 type RecognitionAudio struct {
 	// Content: The audio data bytes encoded as specified
 	// in
@@ -224,8 +261,9 @@
 
 	// Uri: URI that points to a file that contains audio data bytes as
 	// specified in
-	// `RecognitionConfig`. Currently, only Google Cloud Storage URIs
-	// are
+	// `RecognitionConfig`. The file must not be compressed (for example,
+	// gzip).
+	// Currently, only Google Cloud Storage URIs are
 	// supported, which must be specified in the following
 	// format:
 	// `gs://bucket_name/object_name` (other URI formats
@@ -261,6 +299,20 @@
 // specifies how to process the
 // request.
 type RecognitionConfig struct {
+	// EnableAutomaticPunctuation: *Optional* If 'true', adds punctuation to
+	// recognition result hypotheses.
+	// This feature is only available in select languages. Setting this
+	// for
+	// requests in other languages has no effect at all.
+	// The default 'false' value does not add punctuation to result
+	// hypotheses.
+	// Note: This is currently offered as an experimental service,
+	// complimentary
+	// to all users. In the future this may be exclusively available as
+	// a
+	// premium feature.
+	EnableAutomaticPunctuation bool `json:"enableAutomaticPunctuation,omitempty"`
+
 	// EnableWordTimeOffsets: *Optional* If `true`, the top result includes
 	// a list of words and
 	// the start and end time offsets (timestamps) for those words.
@@ -328,8 +380,7 @@
 	// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language
 	// tag.
 	// Example: "en-US".
-	// See [Language
-	// Support](https://cloud.google.com/speech/docs/languages)
+	// See [Language Support](/speech-to-text/docs/languages)
 	// for a list of the currently supported language codes.
 	LanguageCode string `json:"languageCode,omitempty"`
 
@@ -344,6 +395,48 @@
 	// one. If omitted, will return a maximum of one.
 	MaxAlternatives int64 `json:"maxAlternatives,omitempty"`
 
+	// Model: *Optional* Which model to select for the given request. Select
+	// the model
+	// best suited to your domain to get best results. If a model is
+	// not
+	// explicitly specified, then we auto-select a model based on the
+	// parameters
+	// in the RecognitionConfig.
+	// <table>
+	//   <tr>
+	//     <td><b>Model</b></td>
+	//     <td><b>Description</b></td>
+	//   </tr>
+	//   <tr>
+	//     <td><code>command_and_search</code></td>
+	//     <td>Best for short queries such as voice commands or voice
+	// search.</td>
+	//   </tr>
+	//   <tr>
+	//     <td><code>phone_call</code></td>
+	//     <td>Best for audio that originated from a phone call (typically
+	//     recorded at an 8khz sampling rate).</td>
+	//   </tr>
+	//   <tr>
+	//     <td><code>video</code></td>
+	//     <td>Best for audio that originated from from video or includes
+	// multiple
+	//         speakers. Ideally the audio is recorded at a 16khz or
+	// greater
+	//         sampling rate. This is a premium model that costs more than
+	// the
+	//         standard rate.</td>
+	//   </tr>
+	//   <tr>
+	//     <td><code>default</code></td>
+	//     <td>Best for audio that is not one of the specific audio models.
+	//         For example, long-form audio. Ideally the audio is
+	// high-fidelity,
+	//         recorded at a 16khz or greater sampling rate.</td>
+	//   </tr>
+	// </table>
+	Model string `json:"model,omitempty"`
+
 	// ProfanityFilter: *Optional* If set to `true`, the server will attempt
 	// to filter out
 	// profanities, replacing all but the initial character in each filtered
@@ -366,26 +459,51 @@
 	// for all other audio formats. For details, see AudioEncoding.
 	SampleRateHertz int64 `json:"sampleRateHertz,omitempty"`
 
-	// SpeechContexts: *Optional* A means to provide context to assist the
-	// speech recognition.
+	// SpeechContexts: *Optional* array of SpeechContext.
+	// A means to provide context to assist the speech recognition. For
+	// more
+	// information, see [Phrase
+	// Hints](/speech-to-text/docs/basics#phrase-hints).
 	SpeechContexts []*SpeechContext `json:"speechContexts,omitempty"`
 
+	// UseEnhanced: *Optional* Set to true to use an enhanced model for
+	// speech recognition.
+	// You must also set the `model` field to a valid, enhanced model.
+	// If
+	// `use_enhanced` is set to true and the `model` field is not set,
+	// then
+	// `use_enhanced` is ignored. If `use_enhanced` is true and an
+	// enhanced
+	// version of the specified model does not exist, then the speech
+	// is
+	// recognized using the standard version of the specified
+	// model.
+	//
+	// Enhanced speech models require that you opt-in to data logging
+	// using
+	// instructions in the
+	// [documentation](/speech-to-text/enable-data-logging).
+	// If you set `use_enhanced` to true and you have not enabled audio
+	// logging,
+	// then you will receive an error.
+	UseEnhanced bool `json:"useEnhanced,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g.
-	// "EnableWordTimeOffsets") to unconditionally include in API requests.
-	// By default, fields with empty values are omitted from API requests.
-	// However, any non-pointer, non-interface field appearing in
+	// "EnableAutomaticPunctuation") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
 	// ForceSendFields will be sent to the server regardless of whether the
 	// field is empty or not. This may be used to include empty fields in
 	// Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "EnableWordTimeOffsets") to
-	// include in API requests with the JSON null value. By default, fields
-	// with empty values are omitted from API requests. However, any field
-	// with an empty value appearing in NullFields will be sent to the
-	// server as null. It is an error if a field in this list has a
-	// non-empty value. This may be used to include null fields in Patch
-	// requests.
+	// NullFields is a list of field names (e.g.
+	// "EnableAutomaticPunctuation") to include in API requests with the
+	// JSON null value. By default, fields with empty values are omitted
+	// from API requests. However, any field with an empty value appearing
+	// in NullFields will be sent to the server as null. It is an error if a
+	// field in this list has a non-empty value. This may be used to include
+	// null fields in Patch requests.
 	NullFields []string `json:"-"`
 }
 
@@ -481,7 +599,7 @@
 	// used
 	// to add additional words to the vocabulary of the recognizer.
 	// See
-	// [usage limits](https://cloud.google.com/speech/limits#content).
+	// [usage limits](/speech-to-text/quotas#content).
 	Phrases []string `json:"phrases,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Phrases") to
@@ -530,7 +648,7 @@
 
 	// Words: Output only. A list of word-specific information for each
 	// recognized word.
-	// Note: When enable_speaker_diarization is true, you will see all the
+	// Note: When `enable_speaker_diarization` is true, you will see all the
 	// words
 	// from the beginning of the audio.
 	Words []*WordInfo `json:"words,omitempty"`
@@ -928,6 +1046,218 @@
 
 }
 
+// method id "speech.operations.list":
+
+type OperationsListCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: 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 allows API services to override the
+// binding
+// to use different resource name schemes, such as `users/*/operations`.
+// To
+// override the binding, API services can add a binding such
+// as
+// "/v1/{name=users/*}/operations" to their service configuration.
+// For backwards compatibility, the default name includes the
+// operations
+// collection id, however overriding users must ensure the name
+// binding
+// is the parent resource, without the operations collection id.
+func (r *OperationsService) List() *OperationsListCall {
+	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// Name sets the optional parameter "name": The name of the operation's
+// parent resource.
+func (c *OperationsListCall) Name(name string) *OperationsListCall {
+	c.urlParams_.Set("name", name)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *OperationsListCall) PageSize(pageSize int64) *OperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *OperationsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/operations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "speech.operations.list" call.
+// Exactly one of *ListOperationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOperationsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListOperationsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+	//   "flatPath": "v1/operations",
+	//   "httpMethod": "GET",
+	//   "id": "speech.operations.list",
+	//   "parameterOrder": [],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the operation's parent resource.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/operations",
+	//   "response": {
+	//     "$ref": "ListOperationsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *OperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "speech.speech.longrunningrecognize":
 
 type SpeechLongrunningrecognizeCall struct {
diff --git a/speech/v1beta1/speech-api.json b/speech/v1beta1/speech-api.json
index dccc5d0..af6c081 100644
--- a/speech/v1beta1/speech-api.json
+++ b/speech/v1beta1/speech-api.json
@@ -130,6 +130,43 @@
           "scopes": [
             "https://www.googleapis.com/auth/cloud-platform"
           ]
+        },
+        "list": {
+          "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+          "flatPath": "v1beta1/operations",
+          "httpMethod": "GET",
+          "id": "speech.operations.list",
+          "parameterOrder": [],
+          "parameters": {
+            "filter": {
+              "description": "The standard list filter.",
+              "location": "query",
+              "type": "string"
+            },
+            "name": {
+              "description": "The name of the operation's parent resource.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageSize": {
+              "description": "The standard list page size.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "The standard list page token.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1beta1/operations",
+          "response": {
+            "$ref": "ListOperationsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
         }
       }
     },
@@ -174,7 +211,7 @@
       }
     }
   },
-  "revision": "20180629",
+  "revision": "20180911",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
     "AsyncRecognizeRequest": {
@@ -192,6 +229,24 @@
       },
       "type": "object"
     },
+    "ListOperationsResponse": {
+      "description": "The response message for Operations.ListOperations.",
+      "id": "ListOperationsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The standard List next-page token.",
+          "type": "string"
+        },
+        "operations": {
+          "description": "A list of operations that matches the specified filter in the request.",
+          "items": {
+            "$ref": "Operation"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "Operation": {
       "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
       "id": "Operation",
diff --git a/speech/v1beta1/speech-gen.go b/speech/v1beta1/speech-gen.go
index 4a9c5de..9493026 100644
--- a/speech/v1beta1/speech-gen.go
+++ b/speech/v1beta1/speech-gen.go
@@ -132,6 +132,43 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ListOperationsResponse: The response message for
+// Operations.ListOperations.
+type ListOperationsResponse struct {
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Operations: A list of operations that matches the specified filter in
+	// the request.
+	Operations []*Operation `json:"operations,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListOperationsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Operation: This resource represents a long-running operation that is
 // the result of a
 // network API call.
@@ -819,6 +856,218 @@
 
 }
 
+// method id "speech.operations.list":
+
+type OperationsListCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: 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 allows API services to override the
+// binding
+// to use different resource name schemes, such as `users/*/operations`.
+// To
+// override the binding, API services can add a binding such
+// as
+// "/v1/{name=users/*}/operations" to their service configuration.
+// For backwards compatibility, the default name includes the
+// operations
+// collection id, however overriding users must ensure the name
+// binding
+// is the parent resource, without the operations collection id.
+func (r *OperationsService) List() *OperationsListCall {
+	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// Name sets the optional parameter "name": The name of the operation's
+// parent resource.
+func (c *OperationsListCall) Name(name string) *OperationsListCall {
+	c.urlParams_.Set("name", name)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *OperationsListCall) PageSize(pageSize int64) *OperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *OperationsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/operations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "speech.operations.list" call.
+// Exactly one of *ListOperationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOperationsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListOperationsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+	//   "flatPath": "v1beta1/operations",
+	//   "httpMethod": "GET",
+	//   "id": "speech.operations.list",
+	//   "parameterOrder": [],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the operation's parent resource.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/operations",
+	//   "response": {
+	//     "$ref": "ListOperationsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *OperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "speech.speech.asyncrecognize":
 
 type SpeechAsyncrecognizeCall struct {
diff --git a/sqladmin/v1beta4/sqladmin-api.json b/sqladmin/v1beta4/sqladmin-api.json
index 1bbddd5..b4f1746 100644
--- a/sqladmin/v1beta4/sqladmin-api.json
+++ b/sqladmin/v1beta4/sqladmin-api.json
@@ -15,10 +15,10 @@
   "baseUrl": "https://www.googleapis.com/sql/v1beta4/",
   "batchPath": "batch/sqladmin/v1beta4",
   "canonicalName": "SQL Admin",
-  "description": "Cloud SQL provides the Cloud SQL Admin API, a REST API for administering your instances programmatically.",
+  "description": "Creates and manages Cloud SQL instances, which provide fully managed MySQL or PostgreSQL databases.",
   "discoveryVersion": "v1",
   "documentationLink": "https://cloud.google.com/sql/docs/reference/latest",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/RxCLYcP9g8OWcIp3gyyH6nUAsH8\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/QJeloIS_ina-crFwRUPcF4y05nc\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -190,7 +190,7 @@
           ]
         },
         "list": {
-          "description": "Lists all backup runs associated with a given instance and configuration in the reverse chronological order of the enqueued time.",
+          "description": "Lists all backup runs associated with a given instance and configuration in the reverse chronological order of the backup initiation time.",
           "httpMethod": "GET",
           "id": "sql.backupRuns.list",
           "parameterOrder": [
@@ -468,7 +468,7 @@
           "id": "sql.flags.list",
           "parameters": {
             "databaseVersion": {
-              "description": "Database version for flag retrieval. Flags are specific to the database version.",
+              "description": "Database type and version you want to retrieve flags for. By default, this method returns flags for all database types and versions.",
               "location": "query",
               "type": "string"
             }
@@ -1576,14 +1576,12 @@
           "parameterOrder": [
             "project",
             "instance",
-            "host",
             "name"
           ],
           "parameters": {
             "host": {
               "description": "Host of the user in the instance.",
               "location": "query",
-              "required": true,
               "type": "string"
             },
             "instance": {
@@ -1620,6 +1618,7 @@
       }
     }
   },
+  "revision": "20180912",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AclEntry": {
@@ -1676,7 +1675,7 @@
       "type": "object"
     },
     "BackupRun": {
-      "description": "A database instance backup run resource.",
+      "description": "A BackupRun resource.",
       "id": "BackupRun",
       "properties": {
         "description": {
@@ -1698,7 +1697,7 @@
           "description": "Information about why the backup operation failed. This is only present if the run has the FAILED status."
         },
         "id": {
-          "description": "A unique identifier for this backup run. Note that this is unique only within the scope of a particular Cloud SQL instance.",
+          "description": "The identifier for this backup run. Unique only for a specific Cloud SQL instance.",
           "format": "int64",
           "type": "string"
         },
@@ -1806,7 +1805,7 @@
       "type": "object"
     },
     "Database": {
-      "description": "A database resource inside a Cloud SQL instance.",
+      "description": "Represents a SQL database on the Cloud SQL instance.",
       "id": "Database",
       "properties": {
         "charset": {
@@ -1818,7 +1817,7 @@
           "type": "string"
         },
         "etag": {
-          "description": "HTTP 1.1 Entity tag for the resource.",
+          "description": "This field is deprecated and will be removed from a future version of the API.",
           "type": "string"
         },
         "instance": {
@@ -1861,11 +1860,11 @@
       "type": "object"
     },
     "DatabaseFlags": {
-      "description": "MySQL flags for Cloud SQL instances.",
+      "description": "Database flags for Cloud SQL instances.",
       "id": "DatabaseFlags",
       "properties": {
         "name": {
-          "description": "The name of the flag. These flags are passed at instance startup, so include both MySQL server options and MySQL system variables. Flags should be specified with underscores, not hyphens. For more information, see Configuring MySQL Flags in the Google Cloud SQL documentation, as well as the official MySQL documentation for server options and system variables.",
+          "description": "The name of the flag. These flags are passed at instance startup, so include both server options and system variables for MySQL. Flags should be specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.",
           "type": "string"
         },
         "value": {
@@ -1880,7 +1879,7 @@
       "id": "DatabaseInstance",
       "properties": {
         "backendType": {
-          "description": "FIRST_GEN: Basic Cloud SQL instance that runs in a Google-managed container.\nSECOND_GEN: A newer Cloud SQL backend that runs in a Compute Engine VM.\nEXTERNAL: A MySQL server that is not managed by Google.",
+          "description": "FIRST_GEN: First Generation instance. MySQL only.\nSECOND_GEN: Second Generation instance or PostgreSQL instance.\nEXTERNAL: A database server that is not managed by Google.\nThis property is read-only; use the tier property in the settings object to determine the database type and Second or First Generation.",
           "type": "string"
         },
         "connectionName": {
@@ -1888,7 +1887,7 @@
           "type": "string"
         },
         "currentDiskSize": {
-          "description": "The current disk usage of the instance in bytes. This property has been deprecated. Users should use the \"cloudsql.googleapis.com/database/disk/bytes_used\" metric in Cloud Monitoring API instead. Please see https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ for details.",
+          "description": "The current disk usage of the instance in bytes. This property has been deprecated. Users should use the \"cloudsql.googleapis.com/database/disk/bytes_used\" metric in Cloud Monitoring API instead. Please see this announcement for details.",
           "format": "int64",
           "type": "string"
         },
@@ -1897,7 +1896,7 @@
           "type": "string"
         },
         "etag": {
-          "description": "HTTP 1.1 Entity tag for the resource.",
+          "description": "This field is deprecated and will be removed from a future version of the API. Use the settings.settingsVersion field instead.",
           "type": "string"
         },
         "failoverReplica": {
@@ -1970,7 +1969,7 @@
         },
         "replicaConfiguration": {
           "$ref": "ReplicaConfiguration",
-          "description": "Configuration specific to read-replicas replicating from on-premises masters."
+          "description": "Configuration specific to failover replicas and read replicas."
         },
         "replicaNames": {
           "description": "The replicas of the instance.",
@@ -2178,7 +2177,7 @@
       "type": "object"
     },
     "Flag": {
-      "description": "A Google Cloud SQL service flag resource.",
+      "description": "A flag resource.",
       "id": "Flag",
       "properties": {
         "allowedStringValues": {
@@ -2787,7 +2786,7 @@
           "type": "string"
         },
         "authorizedGaeApplications": {
-          "description": "The App Engine app IDs that can access this instance. This property is only applicable to First Generation instances.",
+          "description": "The App Engine app IDs that can access this instance. First Generation instances only.",
           "items": {
             "type": "string"
           },
@@ -2806,12 +2805,12 @@
           "type": "boolean"
         },
         "dataDiskSizeGb": {
-          "description": "The size of data disk, in GB. The data disk size minimum is 10GB. Applies only to Second Generation instances.",
+          "description": "The size of data disk, in GB. The data disk size minimum is 10GB. Not used for First Generation instances.",
           "format": "int64",
           "type": "string"
         },
         "dataDiskType": {
-          "description": "The type of data disk. Only supported for Second Generation instances. The default type is PD_SSD. Applies only to Second Generation instances.",
+          "description": "The type of data disk: PD_SSD (default) or PD_HDD. Not used for First Generation instances.",
           "type": "string"
         },
         "databaseFlags": {
@@ -2840,7 +2839,7 @@
         },
         "maintenanceWindow": {
           "$ref": "MaintenanceWindow",
-          "description": "The maintenance window for this instance. This specifies when the instance may be restarted for maintenance purposes. Applies only to Second Generation instances."
+          "description": "The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes. Not used for First Generation instances."
         },
         "pricingPlan": {
           "description": "The pricing plan for this instance. This can be either PER_USE or PACKAGE. Only PER_USE is supported for Second Generation instances.",
@@ -2861,11 +2860,11 @@
           "type": "string"
         },
         "storageAutoResize": {
-          "description": "Configuration to increase storage size automatically. The default value is true. Applies only to Second Generation instances.",
+          "description": "Configuration to increase storage size automatically. The default value is true. Not used for First Generation instances.",
           "type": "boolean"
         },
         "storageAutoResizeLimit": {
-          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit. Applies only to Second Generation instances.",
+          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit. Not used for First Generation instances.",
           "format": "int64",
           "type": "string"
         },
@@ -2876,7 +2875,7 @@
               "sql.instances.update"
             ]
           },
-          "description": "The tier of service for this instance, for example D1, D2. For more information, see pricing.",
+          "description": "The tier (or machine type) for this instance, for example db-n1-standard-1 (MySQL instances) or db-custom-1-3840 (PostgreSQL instances). For MySQL instances, this property determines whether the instance is First or Second Generation. For more information, see Instance Settings.",
           "type": "string"
         },
         "userLabels": {
@@ -3089,7 +3088,7 @@
       "id": "User",
       "properties": {
         "etag": {
-          "description": "HTTP 1.1 Entity tag for the resource.",
+          "description": "This field is deprecated and will be removed from a future version of the API.",
           "type": "string"
         },
         "host": {
@@ -3106,7 +3105,7 @@
           "type": "string"
         },
         "name": {
-          "description": "The name of the user in the Cloud SQL instance. Can be omitted for update since it is already specified on the URL.",
+          "description": "The name of the user in the Cloud SQL instance. Can be omitted for update since it is already specified in the URL.",
           "type": "string"
         },
         "password": {
diff --git a/sqladmin/v1beta4/sqladmin-gen.go b/sqladmin/v1beta4/sqladmin-gen.go
index 2fd302f..71181eb 100644
--- a/sqladmin/v1beta4/sqladmin-gen.go
+++ b/sqladmin/v1beta4/sqladmin-gen.go
@@ -253,7 +253,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// BackupRun: A database instance backup run resource.
+// BackupRun: A BackupRun resource.
 type BackupRun struct {
 	// Description: The description of this run, only applicable to
 	// on-demand backups.
@@ -271,8 +271,8 @@
 	// only present if the run has the FAILED status.
 	Error *OperationError `json:"error,omitempty"`
 
-	// Id: A unique identifier for this backup run. Note that this is unique
-	// only within the scope of a particular Cloud SQL instance.
+	// Id: The identifier for this backup run. Unique only for a specific
+	// Cloud SQL instance.
 	Id int64 `json:"id,omitempty,string"`
 
 	// Instance: Name of the database instance.
@@ -444,7 +444,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Database: A database resource inside a Cloud SQL instance.
+// Database: Represents a SQL database on the Cloud SQL instance.
 type Database struct {
 	// Charset: The MySQL charset value.
 	Charset string `json:"charset,omitempty"`
@@ -452,7 +452,8 @@
 	// Collation: The MySQL collation value.
 	Collation string `json:"collation,omitempty"`
 
-	// Etag: HTTP 1.1 Entity tag for the resource.
+	// Etag: This field is deprecated and will be removed from a future
+	// version of the API.
 	Etag string `json:"etag,omitempty"`
 
 	// Instance: The name of the Cloud SQL instance. This does not include
@@ -500,14 +501,13 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DatabaseFlags: MySQL flags for Cloud SQL instances.
+// DatabaseFlags: Database flags for Cloud SQL instances.
 type DatabaseFlags struct {
 	// Name: The name of the flag. These flags are passed at instance
-	// startup, so include both MySQL server options and MySQL system
-	// variables. Flags should be specified with underscores, not hyphens.
-	// For more information, see Configuring MySQL Flags in the Google Cloud
-	// SQL documentation, as well as the official MySQL documentation for
-	// server options and system variables.
+	// startup, so include both server options and system variables for
+	// MySQL. Flags should be specified with underscores, not hyphens. For
+	// more information, see Configuring Database Flags in the Cloud SQL
+	// documentation.
 	Name string `json:"name,omitempty"`
 
 	// Value: The value of the flag. Booleans should be set to on for true
@@ -540,11 +540,13 @@
 
 // DatabaseInstance: A Cloud SQL instance resource.
 type DatabaseInstance struct {
-	// BackendType: FIRST_GEN: Basic Cloud SQL instance that runs in a
-	// Google-managed container.
-	// SECOND_GEN: A newer Cloud SQL backend that runs in a Compute Engine
-	// VM.
-	// EXTERNAL: A MySQL server that is not managed by Google.
+	// BackendType: FIRST_GEN: First Generation instance. MySQL
+	// only.
+	// SECOND_GEN: Second Generation instance or PostgreSQL
+	// instance.
+	// EXTERNAL: A database server that is not managed by Google.
+	// This property is read-only; use the tier property in the settings
+	// object to determine the database type and Second or First Generation.
 	BackendType string `json:"backendType,omitempty"`
 
 	// ConnectionName: Connection name of the Cloud SQL instance used in
@@ -554,9 +556,7 @@
 	// CurrentDiskSize: The current disk usage of the instance in bytes.
 	// This property has been deprecated. Users should use the
 	// "cloudsql.googleapis.com/database/disk/bytes_used" metric in Cloud
-	// Monitoring API instead. Please see
-	// https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ for
-	// details.
+	// Monitoring API instead. Please see this announcement for details.
 	CurrentDiskSize int64 `json:"currentDiskSize,omitempty,string"`
 
 	// DatabaseVersion: The database engine type and version. The
@@ -566,7 +566,8 @@
 	// MYSQL_5_6 (default) or MYSQL_5_5
 	DatabaseVersion string `json:"databaseVersion,omitempty"`
 
-	// Etag: HTTP 1.1 Entity tag for the resource.
+	// Etag: This field is deprecated and will be removed from a future
+	// version of the API. Use the settings.settingsVersion field instead.
 	Etag string `json:"etag,omitempty"`
 
 	// FailoverReplica: The name and status of the failover replica. This
@@ -625,8 +626,8 @@
 	// can not be changed after instance creation.
 	Region string `json:"region,omitempty"`
 
-	// ReplicaConfiguration: Configuration specific to read-replicas
-	// replicating from on-premises masters.
+	// ReplicaConfiguration: Configuration specific to failover replicas and
+	// read replicas.
 	ReplicaConfiguration *ReplicaConfiguration `json:"replicaConfiguration,omitempty"`
 
 	// ReplicaNames: The replicas of the instance.
@@ -1053,7 +1054,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Flag: A Google Cloud SQL service flag resource.
+// Flag: A flag resource.
 type Flag struct {
 	// AllowedStringValues: For STRING flags, a list of strings that the
 	// value can be set to.
@@ -2140,8 +2141,7 @@
 	ActivationPolicy string `json:"activationPolicy,omitempty"`
 
 	// AuthorizedGaeApplications: The App Engine app IDs that can access
-	// this instance. This property is only applicable to First Generation
-	// instances.
+	// this instance. First Generation instances only.
 	AuthorizedGaeApplications []string `json:"authorizedGaeApplications,omitempty"`
 
 	// AvailabilityType: Availability type (PostgreSQL instances only).
@@ -2164,12 +2164,11 @@
 	CrashSafeReplicationEnabled bool `json:"crashSafeReplicationEnabled,omitempty"`
 
 	// DataDiskSizeGb: The size of data disk, in GB. The data disk size
-	// minimum is 10GB. Applies only to Second Generation instances.
+	// minimum is 10GB. Not used for First Generation instances.
 	DataDiskSizeGb int64 `json:"dataDiskSizeGb,omitempty,string"`
 
-	// DataDiskType: The type of data disk. Only supported for Second
-	// Generation instances. The default type is PD_SSD. Applies only to
-	// Second Generation instances.
+	// DataDiskType: The type of data disk: PD_SSD (default) or PD_HDD. Not
+	// used for First Generation instances.
 	DataDiskType string `json:"dataDiskType,omitempty"`
 
 	// DatabaseFlags: The database flags passed to the instance at startup.
@@ -2195,8 +2194,8 @@
 	LocationPreference *LocationPreference `json:"locationPreference,omitempty"`
 
 	// MaintenanceWindow: The maintenance window for this instance. This
-	// specifies when the instance may be restarted for maintenance
-	// purposes. Applies only to Second Generation instances.
+	// specifies when the instance can be restarted for maintenance
+	// purposes. Not used for First Generation instances.
 	MaintenanceWindow *MaintenanceWindow `json:"maintenanceWindow,omitempty"`
 
 	// PricingPlan: The pricing plan for this instance. This can be either
@@ -2216,18 +2215,21 @@
 	SettingsVersion int64 `json:"settingsVersion,omitempty,string"`
 
 	// StorageAutoResize: Configuration to increase storage size
-	// automatically. The default value is true. Applies only to Second
+	// automatically. The default value is true. Not used for First
 	// Generation instances.
 	StorageAutoResize *bool `json:"storageAutoResize,omitempty"`
 
 	// StorageAutoResizeLimit: The maximum size to which storage capacity
 	// can be automatically increased. The default value is 0, which
-	// specifies that there is no limit. Applies only to Second Generation
+	// specifies that there is no limit. Not used for First Generation
 	// instances.
 	StorageAutoResizeLimit int64 `json:"storageAutoResizeLimit,omitempty,string"`
 
-	// Tier: The tier of service for this instance, for example D1, D2. For
-	// more information, see pricing.
+	// Tier: The tier (or machine type) for this instance, for example
+	// db-n1-standard-1 (MySQL instances) or db-custom-1-3840 (PostgreSQL
+	// instances). For MySQL instances, this property determines whether the
+	// instance is First or Second Generation. For more information, see
+	// Instance Settings.
 	Tier string `json:"tier,omitempty"`
 
 	// UserLabels: User-provided labels, represented as a dictionary where
@@ -2597,7 +2599,8 @@
 
 // User: A Cloud SQL user resource.
 type User struct {
-	// Etag: HTTP 1.1 Entity tag for the resource.
+	// Etag: This field is deprecated and will be removed from a future
+	// version of the API.
 	Etag string `json:"etag,omitempty"`
 
 	// Host: The host name from which the user can connect. For insert
@@ -2615,7 +2618,7 @@
 	Kind string `json:"kind,omitempty"`
 
 	// Name: The name of the user in the Cloud SQL instance. Can be omitted
-	// for update since it is already specified on the URL.
+	// for update since it is already specified in the URL.
 	Name string `json:"name,omitempty"`
 
 	// Password: The password for the user.
@@ -3154,8 +3157,8 @@
 }
 
 // List: Lists all backup runs associated with a given instance and
-// configuration in the reverse chronological order of the enqueued
-// time.
+// configuration in the reverse chronological order of the backup
+// initiation time.
 func (r *BackupRunsService) List(project string, instance string) *BackupRunsListCall {
 	c := &BackupRunsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3274,7 +3277,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Lists all backup runs associated with a given instance and configuration in the reverse chronological order of the enqueued time.",
+	//   "description": "Lists all backup runs associated with a given instance and configuration in the reverse chronological order of the backup initiation time.",
 	//   "httpMethod": "GET",
 	//   "id": "sql.backupRuns.list",
 	//   "parameterOrder": [
@@ -4268,8 +4271,8 @@
 }
 
 // DatabaseVersion sets the optional parameter "databaseVersion":
-// Database version for flag retrieval. Flags are specific to the
-// database version.
+// Database type and version you want to retrieve flags for. By default,
+// this method returns flags for all database types and versions.
 func (c *FlagsListCall) DatabaseVersion(databaseVersion string) *FlagsListCall {
 	c.urlParams_.Set("databaseVersion", databaseVersion)
 	return c
@@ -4372,7 +4375,7 @@
 	//   "id": "sql.flags.list",
 	//   "parameters": {
 	//     "databaseVersion": {
-	//       "description": "Database version for flag retrieval. Flags are specific to the database version.",
+	//       "description": "Database type and version you want to retrieve flags for. By default, this method returns flags for all database types and versions.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
@@ -9132,16 +9135,22 @@
 }
 
 // Update: Updates an existing user in a Cloud SQL instance.
-func (r *UsersService) Update(project string, instance string, host string, name string, user *User) *UsersUpdateCall {
+func (r *UsersService) Update(project string, instance string, name string, user *User) *UsersUpdateCall {
 	c := &UsersUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
 	c.instance = instance
-	c.urlParams_.Set("host", host)
 	c.urlParams_.Set("name", name)
 	c.user = user
 	return c
 }
 
+// Host sets the optional parameter "host": Host of the user in the
+// instance.
+func (c *UsersUpdateCall) Host(host string) *UsersUpdateCall {
+	c.urlParams_.Set("host", host)
+	return c
+}
+
 // Fields allows partial responses to be retrieved. See
 // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
 // for more information.
@@ -9236,14 +9245,12 @@
 	//   "parameterOrder": [
 	//     "project",
 	//     "instance",
-	//     "host",
 	//     "name"
 	//   ],
 	//   "parameters": {
 	//     "host": {
 	//       "description": "Host of the user in the instance.",
 	//       "location": "query",
-	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "instance": {
diff --git a/storage/v1/storage-api.json b/storage/v1/storage-api.json
index 44bcd81..1ea73ec 100644
--- a/storage/v1/storage-api.json
+++ b/storage/v1/storage-api.json
@@ -26,7 +26,7 @@
   "description": "Stores and retrieves potentially large, immutable data objects.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/storage/docs/json_api/",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/xdKZYE7J0j8r4Yn83tamAAsa-ZE\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/akd8i6K-8A6ohXFVzxQZomL5PpA\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
     "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
@@ -1573,7 +1573,7 @@
           ],
           "parameters": {
             "destinationBucket": {
-              "description": "Name of the bucket in which to store the new object.",
+              "description": "Name of the bucket containing the source objects. The destination object is stored in this bucket.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -2766,7 +2766,7 @@
       }
     }
   },
-  "revision": "20180824",
+  "revision": "20180905",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Bucket": {
@@ -2911,7 +2911,7 @@
                         "type": "boolean"
                       },
                       "matchesPattern": {
-                        "description": "A regular expression that satisfies the RE2 syntax language. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the \"Early Access\" launch stage and is only available to a whitelisted set of users; that means that this feature may changed in backward-incompatible ways and that it is not guaranteed to be released.",
+                        "description": "A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the \"Early Access\" launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.",
                         "type": "string"
                       },
                       "matchesStorageClass": {
@@ -3253,7 +3253,7 @@
                     "storage.objects.compose"
                   ]
                 },
-                "description": "The source object's name. The source object's bucket is implicitly the destination bucket.",
+                "description": "The source object's name. All source objects must reside in the same bucket.",
                 "type": "string"
               },
               "objectPreconditions": {
diff --git a/storage/v1/storage-gen.go b/storage/v1/storage-gen.go
index 71356de..279344d 100644
--- a/storage/v1/storage-gen.go
+++ b/storage/v1/storage-gen.go
@@ -549,13 +549,12 @@
 	// matches archived objects.
 	IsLive *bool `json:"isLive,omitempty"`
 
-	// MatchesPattern: A regular expression that satisfies the RE2 syntax
-	// language. This condition is satisfied when the name of the object
-	// matches the RE2 pattern. Note: This feature is currently in the
-	// "Early Access" launch stage and is only available to a whitelisted
-	// set of users; that means that this feature may changed in
-	// backward-incompatible ways and that it is not guaranteed to be
-	// released.
+	// MatchesPattern: A regular expression that satisfies the RE2 syntax.
+	// This condition is satisfied when the name of the object matches the
+	// RE2 pattern. Note: This feature is currently in the "Early Access"
+	// launch stage and is only available to a whitelisted set of users;
+	// that means that this feature may be changed in backward-incompatible
+	// ways and that it is not guaranteed to be released.
 	MatchesPattern string `json:"matchesPattern,omitempty"`
 
 	// MatchesStorageClass: Objects having any of the storage classes
@@ -1067,8 +1066,8 @@
 	// Generation: The generation of this object to use as the source.
 	Generation int64 `json:"generation,omitempty,string"`
 
-	// Name: The source object's name. The source object's bucket is
-	// implicitly the destination bucket.
+	// Name: The source object's name. All source objects must reside in the
+	// same bucket.
 	Name string `json:"name,omitempty"`
 
 	// ObjectPreconditions: Conditions that must be met for this operation
@@ -7661,7 +7660,7 @@
 	//   ],
 	//   "parameters": {
 	//     "destinationBucket": {
-	//       "description": "Name of the bucket in which to store the new object.",
+	//       "description": "Name of the bucket containing the source objects. The destination object is stored in this bucket.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
diff --git a/storage/v1beta2/storage-api.json b/storage/v1beta2/storage-api.json
index e65d446..dfce6cf 100644
--- a/storage/v1beta2/storage-api.json
+++ b/storage/v1beta2/storage-api.json
@@ -20,7 +20,7 @@
   "description": "Lets you store and retrieve potentially-large, immutable data objects.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/storage/docs/json_api/",
-  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/HYG9EPvfiUP7tMescl4OWXAYThs\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/IGI-eBwDd7fi4jdIKOTuY8L_lfo\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
     "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
@@ -1010,7 +1010,7 @@
           ],
           "parameters": {
             "destinationBucket": {
-              "description": "Name of the bucket in which to store the new object.",
+              "description": "Name of the bucket containing the source objects. The destination object is stored in this bucket.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -1677,7 +1677,7 @@
       }
     }
   },
-  "revision": "20180404",
+  "revision": "20180905",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Bucket": {
@@ -2073,7 +2073,7 @@
                     "storage.objects.compose"
                   ]
                 },
-                "description": "The source object's name. The source object's bucket is implicitly the destination bucket.",
+                "description": "The source object's name. All source objects must reside in the same bucket.",
                 "type": "string"
               },
               "objectPreconditions": {
diff --git a/storage/v1beta2/storage-gen.go b/storage/v1beta2/storage-gen.go
index 11f4b6b..ad552e8 100644
--- a/storage/v1beta2/storage-gen.go
+++ b/storage/v1beta2/storage-gen.go
@@ -807,8 +807,8 @@
 	// Generation: The generation of this object to use as the source.
 	Generation int64 `json:"generation,omitempty,string"`
 
-	// Name: The source object's name. The source object's bucket is
-	// implicitly the destination bucket.
+	// Name: The source object's name. All source objects must reside in the
+	// same bucket.
 	Name string `json:"name,omitempty"`
 
 	// ObjectPreconditions: Conditions that must be met for this operation
@@ -5107,7 +5107,7 @@
 	//   ],
 	//   "parameters": {
 	//     "destinationBucket": {
-	//       "description": "Name of the bucket in which to store the new object.",
+	//       "description": "Name of the bucket containing the source objects. The destination object is stored in this bucket.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
diff --git a/storagetransfer/v1/storagetransfer-api.json b/storagetransfer/v1/storagetransfer-api.json
index 7e7a573..b42a4c9 100644
--- a/storagetransfer/v1/storagetransfer-api.json
+++ b/storagetransfer/v1/storagetransfer-api.json
@@ -419,7 +419,7 @@
       }
     }
   },
-  "revision": "20180528",
+  "revision": "20180910",
   "rootUrl": "https://storagetransfer.googleapis.com/",
   "schemas": {
     "AwsAccessKey": {
@@ -453,7 +453,7 @@
       "type": "object"
     },
     "Date": {
-      "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+      "description": "Represents a whole calendar date, for example date of birth. The time of day\nand time zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day can be 0 to\nrepresent a year and month where the day is not significant, for example\ncredit card expiration date. The year can be 0 to represent a month and day\nindependent of year, for example anniversary date. Related types are\ngoogle.type.TimeOfDay and `google.protobuf.Timestamp`.",
       "id": "Date",
       "properties": {
         "day": {
diff --git a/storagetransfer/v1/storagetransfer-gen.go b/storagetransfer/v1/storagetransfer-gen.go
index 34c0b87..e8e24ba 100644
--- a/storagetransfer/v1/storagetransfer-gen.go
+++ b/storagetransfer/v1/storagetransfer-gen.go
@@ -187,19 +187,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Date: Represents a whole calendar date, e.g. date of birth. The time
-// of day and
-// time zone are either specified elsewhere or are not significant. The
-// date
-// is relative to the Proleptic Gregorian Calendar. The day may be 0
+// Date: Represents a whole calendar date, for example date of birth.
+// The time of day
+// and time zone are either specified elsewhere or are not significant.
+// The date
+// is relative to the Proleptic Gregorian Calendar. The day can be 0
 // to
-// represent a year and month where the day is not significant, e.g.
-// credit card
-// expiration date. The year may be 0 to represent a month and day
-// independent
-// of year, e.g. anniversary date. Related types are
-// google.type.TimeOfDay
-// and `google.protobuf.Timestamp`.
+// represent a year and month where the day is not significant, for
+// example
+// credit card expiration date. The year can be 0 to represent a month
+// and day
+// independent of year, for example anniversary date. Related types
+// are
+// google.type.TimeOfDay and `google.protobuf.Timestamp`.
 type Date struct {
 	// Day: Day of month. Must be from 1 to 31 and valid for the year and
 	// month, or 0
diff --git a/testing/v1/testing-api.json b/testing/v1/testing-api.json
index abf3715..c55b2c0 100644
--- a/testing/v1/testing-api.json
+++ b/testing/v1/testing-api.json
@@ -246,6 +246,7 @@
               "enum": [
                 "ENVIRONMENT_TYPE_UNSPECIFIED",
                 "ANDROID",
+                "IOS",
                 "NETWORK_CONFIGURATION",
                 "PROVIDED_SOFTWARE"
               ],
@@ -271,7 +272,7 @@
       }
     }
   },
-  "revision": "20180901",
+  "revision": "20180913",
   "rootUrl": "https://testing.googleapis.com/",
   "schemas": {
     "Account": {
@@ -791,7 +792,7 @@
       "type": "object"
     },
     "Date": {
-      "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+      "description": "Represents a whole calendar date, for example date of birth. The time of day\nand time zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day can be 0 to\nrepresent a year and month where the day is not significant, for example\ncredit card expiration date. The year can be 0 to represent a month and day\nindependent of year, for example anniversary date. Related types are\ngoogle.type.TimeOfDay and `google.protobuf.Timestamp`.",
       "id": "Date",
       "properties": {
         "day": {
@@ -851,6 +852,10 @@
         "androidDevice": {
           "$ref": "AndroidDevice",
           "description": "An Android device which must be used with an Android test."
+        },
+        "iosDevice": {
+          "$ref": "IosDevice",
+          "description": "An iOS device which must be used with an iOS test."
         }
       },
       "type": "object"
@@ -866,6 +871,10 @@
         "androidMatrix": {
           "$ref": "AndroidMatrix",
           "description": "A matrix of Android devices."
+        },
+        "iosDeviceList": {
+          "$ref": "IosDeviceList",
+          "description": "A list of iOS devices."
         }
       },
       "type": "object"
@@ -949,6 +958,179 @@
       },
       "type": "object"
     },
+    "IosDevice": {
+      "description": "A single iOS device.",
+      "id": "IosDevice",
+      "properties": {
+        "iosModelId": {
+          "description": "Required. The id of the iOS device to be used.\nUse the EnvironmentDiscoveryService to get supported options.",
+          "type": "string"
+        },
+        "iosVersionId": {
+          "description": "Required. The id of the iOS major software version to be used.\nUse the EnvironmentDiscoveryService to get supported options.",
+          "type": "string"
+        },
+        "locale": {
+          "description": "Required. The locale the test device used for testing.\nUse the EnvironmentDiscoveryService to get supported options.",
+          "type": "string"
+        },
+        "orientation": {
+          "description": "Required. How the device is oriented during the test.\nUse the EnvironmentDiscoveryService to get supported options.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "IosDeviceCatalog": {
+      "description": "The currently supported iOS devices.",
+      "id": "IosDeviceCatalog",
+      "properties": {
+        "models": {
+          "description": "Output only. The set of supported iOS device models.",
+          "items": {
+            "$ref": "IosModel"
+          },
+          "type": "array"
+        },
+        "runtimeConfiguration": {
+          "$ref": "IosRuntimeConfiguration",
+          "description": "Output only. The set of supported runtime configurations."
+        },
+        "versions": {
+          "description": "Output only. The set of supported iOS software versions.",
+          "items": {
+            "$ref": "IosVersion"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "IosDeviceList": {
+      "description": "A list of iOS device configurations in which the test is to be executed.",
+      "id": "IosDeviceList",
+      "properties": {
+        "iosDevices": {
+          "description": "Required. A list of iOS devices",
+          "items": {
+            "$ref": "IosDevice"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "IosModel": {
+      "description": "A description of an iOS device tests may be run on.",
+      "id": "IosModel",
+      "properties": {
+        "deviceCapabilities": {
+          "description": "Output only. Device capabilities.\nCopied from\nhttps://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "id": {
+          "description": "Output only. The unique opaque id for this model.\nUse this for invoking the TestExecutionService.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only. The human-readable name for this device model.\nExamples: \"iPhone 4s\", \"iPad Mini 2\"",
+          "type": "string"
+        },
+        "supportedVersionIds": {
+          "description": "Output only. The set of iOS major software versions this device supports.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "tags": {
+          "description": "Output only. Tags for this dimension.\nExamples: \"default\", \"preview\", \"deprecated\"",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "IosRuntimeConfiguration": {
+      "description": "iOS configuration that can be selected at the time a test is run.",
+      "id": "IosRuntimeConfiguration",
+      "properties": {
+        "locales": {
+          "description": "Output only. The set of available locales.",
+          "items": {
+            "$ref": "Locale"
+          },
+          "type": "array"
+        },
+        "orientations": {
+          "description": "Output only. The set of available orientations.",
+          "items": {
+            "$ref": "Orientation"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "IosTestSetup": {
+      "description": "A description of how to set up an iOS device prior to a test.",
+      "id": "IosTestSetup",
+      "properties": {
+        "networkProfile": {
+          "description": "Optional. The network traffic profile used for running the test.\nAvailable network profiles can be queried by using the\nNETWORK_CONFIGURATION environment type when calling\nTestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "IosVersion": {
+      "description": "An iOS version",
+      "id": "IosVersion",
+      "properties": {
+        "id": {
+          "description": "Output only. An opaque id for this iOS version.\nUse this id to invoke the TestExecutionService.",
+          "type": "string"
+        },
+        "majorVersion": {
+          "description": "Output only. An integer representing the major iOS version.\nExamples: \"8\", \"9\"",
+          "format": "int32",
+          "type": "integer"
+        },
+        "minorVersion": {
+          "description": "Output only. An integer representing the minor iOS version.\nExamples: \"1\", \"2\"",
+          "format": "int32",
+          "type": "integer"
+        },
+        "tags": {
+          "description": "Output only. Tags for this dimension.\nExamples: \"default\", \"preview\", \"deprecated\"",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "IosXcTest": {
+      "description": "A test of an iOS application that uses the XCTest framework.\nXcode supports the option to \"build for testing\", which generates an\n.xctestrun file that contains a test specification (arguments, test methods,\netc). This test type accepts a zip file containing the .xctestrun file and\nthe corresponding contents of the Build/Products directory that contains all\nthe binaries needed to run the tests.",
+      "id": "IosXcTest",
+      "properties": {
+        "testsZip": {
+          "$ref": "FileReference",
+          "description": "Required. The .zip containing the .xctestrun file and the contents of the\nDerivedData/Build/Products directory.\nThe .xctestrun file in this zip is ignored if the xctestrun field is\nspecified."
+        },
+        "xctestrun": {
+          "$ref": "FileReference",
+          "description": "Optional. An .xctestrun file that will override the .xctestrun file in the\ntests zip. Because the .xctestrun file contains environment variables along\nwith test methods to run and/or ignore, this can be useful for sharding\ntests. Default is taken from the tests zip."
+        }
+      },
+      "type": "object"
+    },
     "LauncherActivityIntent": {
       "description": "Specifies an intent that starts the main launcher activity.",
       "id": "LauncherActivityIntent",
@@ -1187,6 +1369,10 @@
           "$ref": "AndroidDeviceCatalog",
           "description": "Android devices suitable for running Android Instrumentation Tests."
         },
+        "iosDeviceCatalog": {
+          "$ref": "IosDeviceCatalog",
+          "description": "Supported iOS devices"
+        },
         "networkConfigurationCatalog": {
           "$ref": "NetworkConfigurationCatalog",
           "description": "Supported network configurations"
@@ -1302,6 +1488,11 @@
             "SCENARIO_LABEL_MALFORMED",
             "SCENARIO_NOT_DECLARED",
             "DEVICE_ADMIN_RECEIVER",
+            "MALFORMED_XC_TEST_ZIP",
+            "BUILT_FOR_IOS_SIMULATOR",
+            "NO_TESTS_IN_XC_TEST_ZIP",
+            "USE_DESTINATION_ARTIFACTS",
+            "TEST_NOT_APP_HOSTED",
             "TEST_ONLY_APK",
             "MALFORMED_IPA",
             "NO_CODE_APK",
@@ -1328,6 +1519,11 @@
             "There was an error when parsing a label's value.",
             "The request contains a scenario number that was not declared in the\nmanifest.",
             "Device administrator applications are not allowed.",
+            "The zipped XCTest was malformed. The zip did not contain a single\n.xctestrun file and the contents of the DerivedData/Build/Products\ndirectory.",
+            "The zipped XCTest was built for the iOS simulator rather than for a\nphysical device.",
+            "The .xctestrun file did not specify any test targets.",
+            "One or more of the test targets defined in the .xctestrun file specifies\n\"UseDestinationArtifacts\", which is disallowed.",
+            "XC tests which run on physical devices must have\n\"IsAppHostedTestBundle\" == \"true\" in the xctestrun file.",
             "The APK is marked as \"testOnly\".\nNOT USED",
             "The input IPA could not be parsed.\nNOT USED",
             "APK contains no code.\nSee also\nhttps://developer.android.com/guide/topics/manifest/application-element.html#code",
@@ -1468,6 +1664,14 @@
           "description": "Disables video recording; may reduce test latency.",
           "type": "boolean"
         },
+        "iosTestSetup": {
+          "$ref": "IosTestSetup",
+          "description": "Optional. Test setup requirements for iOS."
+        },
+        "iosXcTest": {
+          "$ref": "IosXcTest",
+          "description": "An iOS XCTest, via an .xctestrun file"
+        },
         "testSetup": {
           "$ref": "TestSetup",
           "description": "Test setup requirements for Android e.g. files to install, bootstrap\nscripts.\nOptional"
diff --git a/testing/v1/testing-gen.go b/testing/v1/testing-gen.go
index d376849..4aa60b3 100644
--- a/testing/v1/testing-gen.go
+++ b/testing/v1/testing-gen.go
@@ -1040,19 +1040,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Date: Represents a whole calendar date, e.g. date of birth. The time
-// of day and
-// time zone are either specified elsewhere or are not significant. The
-// date
-// is relative to the Proleptic Gregorian Calendar. The day may be 0
+// Date: Represents a whole calendar date, for example date of birth.
+// The time of day
+// and time zone are either specified elsewhere or are not significant.
+// The date
+// is relative to the Proleptic Gregorian Calendar. The day can be 0
 // to
-// represent a year and month where the day is not significant, e.g.
-// credit card
-// expiration date. The year may be 0 to represent a month and day
-// independent
-// of year, e.g. anniversary date. Related types are
-// google.type.TimeOfDay
-// and `google.protobuf.Timestamp`.
+// represent a year and month where the day is not significant, for
+// example
+// credit card expiration date. The year can be 0 to represent a month
+// and day
+// independent of year, for example anniversary date. Related types
+// are
+// google.type.TimeOfDay and `google.protobuf.Timestamp`.
 type Date struct {
 	// Day: Day of month. Must be from 1 to 31 and valid for the year and
 	// month, or 0
@@ -1179,6 +1179,9 @@
 	// test.
 	AndroidDevice *AndroidDevice `json:"androidDevice,omitempty"`
 
+	// IosDevice: An iOS device which must be used with an iOS test.
+	IosDevice *IosDevice `json:"iosDevice,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "AndroidDevice") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -1213,6 +1216,9 @@
 	// AndroidMatrix: A matrix of Android devices.
 	AndroidMatrix *AndroidMatrix `json:"androidMatrix,omitempty"`
 
+	// IosDeviceList: A list of iOS devices.
+	IosDeviceList *IosDeviceList `json:"iosDeviceList,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "AndroidDeviceList")
 	// to unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -1416,6 +1422,327 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// IosDevice: A single iOS device.
+type IosDevice struct {
+	// IosModelId: Required. The id of the iOS device to be used.
+	// Use the EnvironmentDiscoveryService to get supported options.
+	IosModelId string `json:"iosModelId,omitempty"`
+
+	// IosVersionId: Required. The id of the iOS major software version to
+	// be used.
+	// Use the EnvironmentDiscoveryService to get supported options.
+	IosVersionId string `json:"iosVersionId,omitempty"`
+
+	// Locale: Required. The locale the test device used for testing.
+	// Use the EnvironmentDiscoveryService to get supported options.
+	Locale string `json:"locale,omitempty"`
+
+	// Orientation: Required. How the device is oriented during the
+	// test.
+	// Use the EnvironmentDiscoveryService to get supported options.
+	Orientation string `json:"orientation,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "IosModelId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "IosModelId") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosDevice) MarshalJSON() ([]byte, error) {
+	type NoMethod IosDevice
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosDeviceCatalog: The currently supported iOS devices.
+type IosDeviceCatalog struct {
+	// Models: Output only. The set of supported iOS device models.
+	Models []*IosModel `json:"models,omitempty"`
+
+	// RuntimeConfiguration: Output only. The set of supported runtime
+	// configurations.
+	RuntimeConfiguration *IosRuntimeConfiguration `json:"runtimeConfiguration,omitempty"`
+
+	// Versions: Output only. The set of supported iOS software versions.
+	Versions []*IosVersion `json:"versions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Models") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Models") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosDeviceCatalog) MarshalJSON() ([]byte, error) {
+	type NoMethod IosDeviceCatalog
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosDeviceList: A list of iOS device configurations in which the test
+// is to be executed.
+type IosDeviceList struct {
+	// IosDevices: Required. A list of iOS devices
+	IosDevices []*IosDevice `json:"iosDevices,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "IosDevices") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "IosDevices") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosDeviceList) MarshalJSON() ([]byte, error) {
+	type NoMethod IosDeviceList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosModel: A description of an iOS device tests may be run on.
+type IosModel struct {
+	// DeviceCapabilities: Output only. Device capabilities.
+	// Copied
+	// from
+	// https://developer.apple.com/library/archive/documentation/DeviceI
+	// nformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/
+	// DeviceCompatibilityMatrix.html
+	DeviceCapabilities []string `json:"deviceCapabilities,omitempty"`
+
+	// Id: Output only. The unique opaque id for this model.
+	// Use this for invoking the TestExecutionService.
+	Id string `json:"id,omitempty"`
+
+	// Name: Output only. The human-readable name for this device
+	// model.
+	// Examples: "iPhone 4s", "iPad Mini 2"
+	Name string `json:"name,omitempty"`
+
+	// SupportedVersionIds: Output only. The set of iOS major software
+	// versions this device supports.
+	SupportedVersionIds []string `json:"supportedVersionIds,omitempty"`
+
+	// Tags: Output only. Tags for this dimension.
+	// Examples: "default", "preview", "deprecated"
+	Tags []string `json:"tags,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DeviceCapabilities")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DeviceCapabilities") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosModel) MarshalJSON() ([]byte, error) {
+	type NoMethod IosModel
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosRuntimeConfiguration: iOS configuration that can be selected at
+// the time a test is run.
+type IosRuntimeConfiguration struct {
+	// Locales: Output only. The set of available locales.
+	Locales []*Locale `json:"locales,omitempty"`
+
+	// Orientations: Output only. The set of available orientations.
+	Orientations []*Orientation `json:"orientations,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Locales") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Locales") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosRuntimeConfiguration) MarshalJSON() ([]byte, error) {
+	type NoMethod IosRuntimeConfiguration
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosTestSetup: A description of how to set up an iOS device prior to a
+// test.
+type IosTestSetup struct {
+	// NetworkProfile: Optional. The network traffic profile used for
+	// running the test.
+	// Available network profiles can be queried by using
+	// the
+	// NETWORK_CONFIGURATION environment type when
+	// calling
+	// TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
+	NetworkProfile string `json:"networkProfile,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "NetworkProfile") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NetworkProfile") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosTestSetup) MarshalJSON() ([]byte, error) {
+	type NoMethod IosTestSetup
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosVersion: An iOS version
+type IosVersion struct {
+	// Id: Output only. An opaque id for this iOS version.
+	// Use this id to invoke the TestExecutionService.
+	Id string `json:"id,omitempty"`
+
+	// MajorVersion: Output only. An integer representing the major iOS
+	// version.
+	// Examples: "8", "9"
+	MajorVersion int64 `json:"majorVersion,omitempty"`
+
+	// MinorVersion: Output only. An integer representing the minor iOS
+	// version.
+	// Examples: "1", "2"
+	MinorVersion int64 `json:"minorVersion,omitempty"`
+
+	// Tags: Output only. Tags for this dimension.
+	// Examples: "default", "preview", "deprecated"
+	Tags []string `json:"tags,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Id") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosVersion) MarshalJSON() ([]byte, error) {
+	type NoMethod IosVersion
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// IosXcTest: A test of an iOS application that uses the XCTest
+// framework.
+// Xcode supports the option to "build for testing", which generates
+// an
+// .xctestrun file that contains a test specification (arguments, test
+// methods,
+// etc). This test type accepts a zip file containing the .xctestrun
+// file and
+// the corresponding contents of the Build/Products directory that
+// contains all
+// the binaries needed to run the tests.
+type IosXcTest struct {
+	// TestsZip: Required. The .zip containing the .xctestrun file and the
+	// contents of the
+	// DerivedData/Build/Products directory.
+	// The .xctestrun file in this zip is ignored if the xctestrun field
+	// is
+	// specified.
+	TestsZip *FileReference `json:"testsZip,omitempty"`
+
+	// Xctestrun: Optional. An .xctestrun file that will override the
+	// .xctestrun file in the
+	// tests zip. Because the .xctestrun file contains environment variables
+	// along
+	// with test methods to run and/or ignore, this can be useful for
+	// sharding
+	// tests. Default is taken from the tests zip.
+	Xctestrun *FileReference `json:"xctestrun,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "TestsZip") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "TestsZip") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IosXcTest) MarshalJSON() ([]byte, error) {
+	type NoMethod IosXcTest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // LauncherActivityIntent: Specifies an intent that starts the main
 // launcher activity.
 type LauncherActivityIntent struct {
@@ -1926,6 +2253,9 @@
 	// Instrumentation Tests.
 	AndroidDeviceCatalog *AndroidDeviceCatalog `json:"androidDeviceCatalog,omitempty"`
 
+	// IosDeviceCatalog: Supported iOS devices
+	IosDeviceCatalog *IosDeviceCatalog `json:"iosDeviceCatalog,omitempty"`
+
 	// NetworkConfigurationCatalog: Supported network configurations
 	NetworkConfigurationCatalog *NetworkConfigurationCatalog `json:"networkConfigurationCatalog,omitempty"`
 
@@ -2145,6 +2475,22 @@
 	// manifest.
 	//   "DEVICE_ADMIN_RECEIVER" - Device administrator applications are not
 	// allowed.
+	//   "MALFORMED_XC_TEST_ZIP" - The zipped XCTest was malformed. The zip
+	// did not contain a single
+	// .xctestrun file and the contents of the
+	// DerivedData/Build/Products
+	// directory.
+	//   "BUILT_FOR_IOS_SIMULATOR" - The zipped XCTest was built for the iOS
+	// simulator rather than for a
+	// physical device.
+	//   "NO_TESTS_IN_XC_TEST_ZIP" - The .xctestrun file did not specify any
+	// test targets.
+	//   "USE_DESTINATION_ARTIFACTS" - One or more of the test targets
+	// defined in the .xctestrun file specifies
+	// "UseDestinationArtifacts", which is disallowed.
+	//   "TEST_NOT_APP_HOSTED" - XC tests which run on physical devices must
+	// have
+	// "IsAppHostedTestBundle" == "true" in the xctestrun file.
 	//   "TEST_ONLY_APK" - The APK is marked as "testOnly".
 	// NOT USED
 	//   "MALFORMED_IPA" - The input IPA could not be parsed.
@@ -2378,6 +2724,12 @@
 	// latency.
 	DisableVideoRecording bool `json:"disableVideoRecording,omitempty"`
 
+	// IosTestSetup: Optional. Test setup requirements for iOS.
+	IosTestSetup *IosTestSetup `json:"iosTestSetup,omitempty"`
+
+	// IosXcTest: An iOS XCTest, via an .xctestrun file
+	IosXcTest *IosXcTest `json:"iosXcTest,omitempty"`
+
 	// TestSetup: Test setup requirements for Android e.g. files to install,
 	// bootstrap
 	// scripts.
@@ -3320,6 +3672,7 @@
 	//       "enum": [
 	//         "ENVIRONMENT_TYPE_UNSPECIFIED",
 	//         "ANDROID",
+	//         "IOS",
 	//         "NETWORK_CONFIGURATION",
 	//         "PROVIDED_SOFTWARE"
 	//       ],
diff --git a/vision/v1/vision-api.json b/vision/v1/vision-api.json
index 2fe6c18..e06d7b1 100644
--- a/vision/v1/vision-api.json
+++ b/vision/v1/vision-api.json
@@ -315,7 +315,7 @@
       }
     }
   },
-  "revision": "20180809",
+  "revision": "20180907",
   "rootUrl": "https://vision.googleapis.com/",
   "schemas": {
     "AnnotateFileResponse": {
@@ -403,6 +403,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -1025,7 +1032,8 @@
             "SAFE_SEARCH_DETECTION",
             "IMAGE_PROPERTIES",
             "CROP_HINTS",
-            "WEB_DETECTION"
+            "WEB_DETECTION",
+            "OBJECT_LOCALIZATION"
           ],
           "enumDescriptions": [
             "Unspecified feature type.",
@@ -1038,7 +1046,8 @@
             "Run Safe Search to detect potentially unsafe\nor undesirable content.",
             "Compute a set of image properties, such as the\nimage's dominant colors.",
             "Run crop hints.",
-            "Run web detection."
+            "Run web detection.",
+            "Run localizer for object detection."
           ],
           "type": "string"
         }
@@ -1130,6 +1139,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -1703,6 +1719,34 @@
       },
       "type": "object"
     },
+    "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "GoogleCloudVisionV1p1beta1BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "GoogleCloudVisionV1p1beta1LocationInfo": {
       "description": "Detected entity location information.",
       "id": "GoogleCloudVisionV1p1beta1LocationInfo",
@@ -2322,6 +2366,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -2902,6 +2953,34 @@
       },
       "type": "object"
     },
+    "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "GoogleCloudVisionV1p2beta1BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "GoogleCloudVisionV1p2beta1LocationInfo": {
       "description": "Detected entity location information.",
       "id": "GoogleCloudVisionV1p2beta1LocationInfo",
@@ -4451,7 +4530,7 @@
           "description": "The Product."
         },
         "score": {
-          "description": "A confidence level on the match, ranging from 0 (no confidence) to\n1 (full confidence).\n\nThis field is returned only if `view` is set to `FULL` in\nthe request.",
+          "description": "A confidence level on the match, ranging from 0 (no confidence) to\n1 (full confidence).",
           "format": "float",
           "type": "number"
         }
@@ -5130,6 +5209,34 @@
       },
       "type": "object"
     },
+    "LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "LocationInfo": {
       "description": "Detected entity location information.",
       "id": "LocationInfo",
diff --git a/vision/v1/vision-gen.go b/vision/v1/vision-gen.go
index 9320895..a389781 100644
--- a/vision/v1/vision-gen.go
+++ b/vision/v1/vision-gen.go
@@ -247,6 +247,11 @@
 	// successfully.
 	LandmarkAnnotations []*EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -1470,6 +1475,7 @@
 	// image's dominant colors.
 	//   "CROP_HINTS" - Run crop hints.
 	//   "WEB_DETECTION" - Run web detection.
+	//   "OBJECT_LOCALIZATION" - Run localizer for object detection.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "MaxResults") to
@@ -1650,6 +1656,11 @@
 	// successfully.
 	LandmarkAnnotations []*GoogleCloudVisionV1p1beta1EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*GoogleCloudVisionV1p1beta1EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -2597,6 +2608,66 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation: Set of detected
+// objects with bounding boxes.
+type GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *GoogleCloudVisionV1p1beta1BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // GoogleCloudVisionV1p1beta1LocationInfo: Detected entity location
 // information.
 type GoogleCloudVisionV1p1beta1LocationInfo struct {
@@ -3720,6 +3791,11 @@
 	// successfully.
 	LandmarkAnnotations []*GoogleCloudVisionV1p2beta1EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*GoogleCloudVisionV1p2beta1EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -4671,6 +4747,66 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation: Set of detected
+// objects with bounding boxes.
+type GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *GoogleCloudVisionV1p2beta1BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // GoogleCloudVisionV1p2beta1LocationInfo: Detected entity location
 // information.
 type GoogleCloudVisionV1p2beta1LocationInfo struct {
@@ -7474,9 +7610,6 @@
 	// Score: A confidence level on the match, ranging from 0 (no
 	// confidence) to
 	// 1 (full confidence).
-	//
-	// This field is returned only if `view` is set to `FULL` in
-	// the request.
 	Score float64 `json:"score,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Image") to
@@ -8766,6 +8899,66 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// LocalizedObjectAnnotation: Set of detected objects with bounding
+// boxes.
+type LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // LocationInfo: Detected entity location information.
 type LocationInfo struct {
 	// LatLng: lat/long location coordinates.
diff --git a/vision/v1p1beta1/vision-api.json b/vision/v1p1beta1/vision-api.json
index 0c44f54..df6240c 100644
--- a/vision/v1p1beta1/vision-api.json
+++ b/vision/v1p1beta1/vision-api.json
@@ -154,7 +154,7 @@
       }
     }
   },
-  "revision": "20180809",
+  "revision": "20180907",
   "rootUrl": "https://vision.googleapis.com/",
   "schemas": {
     "AnnotateFileResponse": {
@@ -220,6 +220,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -828,6 +835,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -1446,7 +1460,8 @@
             "SAFE_SEARCH_DETECTION",
             "IMAGE_PROPERTIES",
             "CROP_HINTS",
-            "WEB_DETECTION"
+            "WEB_DETECTION",
+            "OBJECT_LOCALIZATION"
           ],
           "enumDescriptions": [
             "Unspecified feature type.",
@@ -1459,7 +1474,8 @@
             "Run Safe Search to detect potentially unsafe\nor undesirable content.",
             "Compute a set of image properties, such as the\nimage's dominant colors.",
             "Run crop hints.",
-            "Run web detection."
+            "Run web detection.",
+            "Run localizer for object detection."
           ],
           "type": "string"
         }
@@ -1602,6 +1618,34 @@
       },
       "type": "object"
     },
+    "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "GoogleCloudVisionV1p1beta1BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "GoogleCloudVisionV1p1beta1LocationInfo": {
       "description": "Detected entity location information.",
       "id": "GoogleCloudVisionV1p1beta1LocationInfo",
@@ -2232,6 +2276,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -2812,6 +2863,34 @@
       },
       "type": "object"
     },
+    "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "GoogleCloudVisionV1p2beta1BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "GoogleCloudVisionV1p2beta1LocationInfo": {
       "description": "Detected entity location information.",
       "id": "GoogleCloudVisionV1p2beta1LocationInfo",
@@ -4361,7 +4440,7 @@
           "description": "The Product."
         },
         "score": {
-          "description": "A confidence level on the match, ranging from 0 (no confidence) to\n1 (full confidence).\n\nThis field is returned only if `view` is set to `FULL` in\nthe request.",
+          "description": "A confidence level on the match, ranging from 0 (no confidence) to\n1 (full confidence).",
           "format": "float",
           "type": "number"
         }
@@ -4950,6 +5029,34 @@
       },
       "type": "object"
     },
+    "LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "LocationInfo": {
       "description": "Detected entity location information.",
       "id": "LocationInfo",
diff --git a/vision/v1p1beta1/vision-gen.go b/vision/v1p1beta1/vision-gen.go
index 6d8721c..a167d36 100644
--- a/vision/v1p1beta1/vision-gen.go
+++ b/vision/v1p1beta1/vision-gen.go
@@ -175,6 +175,11 @@
 	// successfully.
 	LandmarkAnnotations []*EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -1355,6 +1360,11 @@
 	// successfully.
 	LandmarkAnnotations []*GoogleCloudVisionV1p1beta1EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*GoogleCloudVisionV1p1beta1EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -2337,6 +2347,7 @@
 	// image's dominant colors.
 	//   "CROP_HINTS" - Run crop hints.
 	//   "WEB_DETECTION" - Run web detection.
+	//   "OBJECT_LOCALIZATION" - Run localizer for object detection.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "MaxResults") to
@@ -2729,6 +2740,66 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation: Set of detected
+// objects with bounding boxes.
+type GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *GoogleCloudVisionV1p1beta1BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // GoogleCloudVisionV1p1beta1LocationInfo: Detected entity location
 // information.
 type GoogleCloudVisionV1p1beta1LocationInfo struct {
@@ -3883,6 +3954,11 @@
 	// successfully.
 	LandmarkAnnotations []*GoogleCloudVisionV1p2beta1EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*GoogleCloudVisionV1p2beta1EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -4834,6 +4910,66 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation: Set of detected
+// objects with bounding boxes.
+type GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *GoogleCloudVisionV1p2beta1BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // GoogleCloudVisionV1p2beta1LocationInfo: Detected entity location
 // information.
 type GoogleCloudVisionV1p2beta1LocationInfo struct {
@@ -7637,9 +7773,6 @@
 	// Score: A confidence level on the match, ranging from 0 (no
 	// confidence) to
 	// 1 (full confidence).
-	//
-	// This field is returned only if `view` is set to `FULL` in
-	// the request.
 	Score float64 `json:"score,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Image") to
@@ -8707,6 +8840,66 @@
 	return nil
 }
 
+// LocalizedObjectAnnotation: Set of detected objects with bounding
+// boxes.
+type LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // LocationInfo: Detected entity location information.
 type LocationInfo struct {
 	// LatLng: lat/long location coordinates.
diff --git a/vision/v1p2beta1/vision-api.json b/vision/v1p2beta1/vision-api.json
index a1fb45e..b2cc229 100644
--- a/vision/v1p2beta1/vision-api.json
+++ b/vision/v1p2beta1/vision-api.json
@@ -154,7 +154,7 @@
       }
     }
   },
-  "revision": "20180809",
+  "revision": "20180907",
   "rootUrl": "https://vision.googleapis.com/",
   "schemas": {
     "AnnotateFileResponse": {
@@ -220,6 +220,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -806,6 +813,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -1379,6 +1393,34 @@
       },
       "type": "object"
     },
+    "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "GoogleCloudVisionV1p1beta1BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "GoogleCloudVisionV1p1beta1LocationInfo": {
       "description": "Detected entity location information.",
       "id": "GoogleCloudVisionV1p1beta1LocationInfo",
@@ -2020,6 +2062,13 @@
           },
           "type": "array"
         },
+        "localizedObjectAnnotations": {
+          "description": "If present, localized object detection has completed successfully.\nThis will be sorted descending by confidence score.",
+          "items": {
+            "$ref": "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation"
+          },
+          "type": "array"
+        },
         "logoAnnotations": {
           "description": "If present, logo detection has completed successfully.",
           "items": {
@@ -2645,7 +2694,8 @@
             "SAFE_SEARCH_DETECTION",
             "IMAGE_PROPERTIES",
             "CROP_HINTS",
-            "WEB_DETECTION"
+            "WEB_DETECTION",
+            "OBJECT_LOCALIZATION"
           ],
           "enumDescriptions": [
             "Unspecified feature type.",
@@ -2658,7 +2708,8 @@
             "Run Safe Search to detect potentially unsafe\nor undesirable content.",
             "Compute a set of image properties, such as the\nimage's dominant colors.",
             "Run crop hints.",
-            "Run web detection."
+            "Run web detection.",
+            "Run localizer for object detection."
           ],
           "type": "string"
         }
@@ -2801,6 +2852,34 @@
       },
       "type": "object"
     },
+    "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "GoogleCloudVisionV1p2beta1BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "GoogleCloudVisionV1p2beta1LocationInfo": {
       "description": "Detected entity location information.",
       "id": "GoogleCloudVisionV1p2beta1LocationInfo",
@@ -4361,7 +4440,7 @@
           "description": "The Product."
         },
         "score": {
-          "description": "A confidence level on the match, ranging from 0 (no confidence) to\n1 (full confidence).\n\nThis field is returned only if `view` is set to `FULL` in\nthe request.",
+          "description": "A confidence level on the match, ranging from 0 (no confidence) to\n1 (full confidence).",
           "format": "float",
           "type": "number"
         }
@@ -4950,6 +5029,34 @@
       },
       "type": "object"
     },
+    "LocalizedObjectAnnotation": {
+      "description": "Set of detected objects with bounding boxes.",
+      "id": "LocalizedObjectAnnotation",
+      "properties": {
+        "boundingPoly": {
+          "$ref": "BoundingPoly",
+          "description": "Image region to which this object belongs. This must be populated."
+        },
+        "languageCode": {
+          "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+          "type": "string"
+        },
+        "mid": {
+          "description": "Object ID that should align with EntityAnnotation mid.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Object name, expressed in its `language_code` language.",
+          "type": "string"
+        },
+        "score": {
+          "description": "Score of the result. Range [0, 1].",
+          "format": "float",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
     "LocationInfo": {
       "description": "Detected entity location information.",
       "id": "LocationInfo",
diff --git a/vision/v1p2beta1/vision-gen.go b/vision/v1p2beta1/vision-gen.go
index 0fa981c..5c90d3a 100644
--- a/vision/v1p2beta1/vision-gen.go
+++ b/vision/v1p2beta1/vision-gen.go
@@ -175,6 +175,11 @@
 	// successfully.
 	LandmarkAnnotations []*EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -1319,6 +1324,11 @@
 	// successfully.
 	LandmarkAnnotations []*GoogleCloudVisionV1p1beta1EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*GoogleCloudVisionV1p1beta1EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -2266,6 +2276,66 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation: Set of detected
+// objects with bounding boxes.
+type GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *GoogleCloudVisionV1p1beta1BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod GoogleCloudVisionV1p1beta1LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // GoogleCloudVisionV1p1beta1LocationInfo: Detected entity location
 // information.
 type GoogleCloudVisionV1p1beta1LocationInfo struct {
@@ -3425,6 +3495,11 @@
 	// successfully.
 	LandmarkAnnotations []*GoogleCloudVisionV1p2beta1EntityAnnotation `json:"landmarkAnnotations,omitempty"`
 
+	// LocalizedObjectAnnotations: If present, localized object detection
+	// has completed successfully.
+	// This will be sorted descending by confidence score.
+	LocalizedObjectAnnotations []*GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation `json:"localizedObjectAnnotations,omitempty"`
+
 	// LogoAnnotations: If present, logo detection has completed
 	// successfully.
 	LogoAnnotations []*GoogleCloudVisionV1p2beta1EntityAnnotation `json:"logoAnnotations,omitempty"`
@@ -4411,6 +4486,7 @@
 	// image's dominant colors.
 	//   "CROP_HINTS" - Run crop hints.
 	//   "WEB_DETECTION" - Run web detection.
+	//   "OBJECT_LOCALIZATION" - Run localizer for object detection.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "MaxResults") to
@@ -4803,6 +4879,66 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation: Set of detected
+// objects with bounding boxes.
+type GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *GoogleCloudVisionV1p2beta1BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod GoogleCloudVisionV1p2beta1LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // GoogleCloudVisionV1p2beta1LocationInfo: Detected entity location
 // information.
 type GoogleCloudVisionV1p2beta1LocationInfo struct {
@@ -7637,9 +7773,6 @@
 	// Score: A confidence level on the match, ranging from 0 (no
 	// confidence) to
 	// 1 (full confidence).
-	//
-	// This field is returned only if `view` is set to `FULL` in
-	// the request.
 	Score float64 `json:"score,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Image") to
@@ -8707,6 +8840,66 @@
 	return nil
 }
 
+// LocalizedObjectAnnotation: Set of detected objects with bounding
+// boxes.
+type LocalizedObjectAnnotation struct {
+	// BoundingPoly: Image region to which this object belongs. This must be
+	// populated.
+	BoundingPoly *BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn".
+	// For more
+	// information,
+	// see
+	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Mid: Object ID that should align with EntityAnnotation mid.
+	Mid string `json:"mid,omitempty"`
+
+	// Name: Object name, expressed in its `language_code` language.
+	Name string `json:"name,omitempty"`
+
+	// Score: Score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BoundingPoly") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *LocalizedObjectAnnotation) MarshalJSON() ([]byte, error) {
+	type NoMethod LocalizedObjectAnnotation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *LocalizedObjectAnnotation) UnmarshalJSON(data []byte) error {
+	type NoMethod LocalizedObjectAnnotation
+	var s1 struct {
+		Score gensupport.JSONFloat64 `json:"score"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Score = float64(s1.Score)
+	return nil
+}
+
 // LocationInfo: Detected entity location information.
 type LocationInfo struct {
 	// LatLng: lat/long location coordinates.