all: autogenerated update (2019-03-22)

Add:
- cloudtasks/v2

Update:
- adexchangebuyer2/v2beta1
- analyticsreporting/v4
- androidenterprise/v1
- appengine/v1
- binaryauthorization/v1beta1
- cloudprivatecatalogproducer/v1beta1
- cloudresourcemanager/v1
- cloudresourcemanager/v1beta1
- cloudresourcemanager/v2
- cloudresourcemanager/v2beta1
- cloudscheduler/v1beta1
- cloudsearch/v1
- cloudshell/v1
- cloudshell/v1alpha1
- cloudtrace/v2
- containeranalysis/v1alpha1
- containeranalysis/v1beta1
- content/v2
- content/v2.1
- dialogflow/v2beta1
- docs/v1
- firebaserules/v1
- healthcare/v1alpha
- healthcare/v1alpha2
- iam/v1
- jobs/v3p1beta1
- logging/v2
- logging/v2beta1
- ml/v1
- monitoring/v3
- oauth2/v1
- oauth2/v2
- people/v1
- servicecontrol/v1
- servicemanagement/v1
diff --git a/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json b/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
index 26f42ed..feeef40 100644
--- a/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
+++ b/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
@@ -2521,7 +2521,7 @@
       }
     }
   },
-  "revision": "20190311",
+  "revision": "20190320",
   "rootUrl": "https://adexchangebuyer.googleapis.com/",
   "schemas": {
     "AbsoluteDateRange": {
@@ -2996,6 +2996,8 @@
           "description": "All attributes for the ads that may be shown from this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
           "enumDescriptions": [
             "Do not use. This is a placeholder value only.",
+            "The creative is of type image/rich media. For pretargeting.",
+            "The creative is of video type Adobe Flash FLV. For pretargeting.",
             "The creative is tagged.",
             "The creative is cookie targeted.",
             "The creative is user interest targeted.",
@@ -3018,11 +3020,16 @@
             "The creative is MRAID.",
             "The creative is Flash.",
             "The creative is HTML5.",
+            "The creative has an instream VAST video type of skippable instream video.\nFor pretargeting.",
             "The creative is SSL.",
             "The creative is non-SSL.",
             "The creative is an interstitial.",
+            "The creative has an instream VAST video type of non-skippable instream\nvideo. For pretargeting.",
             "The creative is eligible for native.",
+            "The creative has an instream VAST video type of non-VPAID. For\npretargeting.",
             "The creative is not eligible for native.",
+            "The creative has an interstitial size of any interstitial. For\npretargeting.",
+            "The creative has an interstitial size of non interstitial. For\npretargeting.",
             "The video type is in-banner video.",
             "The creative can dynamically resize to fill a variety of slot sizes.",
             "The open measurement SDK is supported."
@@ -3030,6 +3037,8 @@
           "items": {
             "enum": [
               "ATTRIBUTE_UNSPECIFIED",
+              "IMAGE_RICH_MEDIA",
+              "ADOBE_FLASH_FLV",
               "IS_TAGGED",
               "IS_COOKIE_TARGETED",
               "IS_USER_INTEREST_TARGETED",
@@ -3052,11 +3061,16 @@
               "RICH_MEDIA_CAPABILITY_TYPE_MRAID",
               "RICH_MEDIA_CAPABILITY_TYPE_FLASH",
               "RICH_MEDIA_CAPABILITY_TYPE_HTML5",
+              "SKIPPABLE_INSTREAM_VIDEO",
               "RICH_MEDIA_CAPABILITY_TYPE_SSL",
               "RICH_MEDIA_CAPABILITY_TYPE_NON_SSL",
               "RICH_MEDIA_CAPABILITY_TYPE_INTERSTITIAL",
+              "NON_SKIPPABLE_INSTREAM_VIDEO",
               "NATIVE_ELIGIBILITY_ELIGIBLE",
+              "NON_VPAID",
               "NATIVE_ELIGIBILITY_NOT_ELIGIBLE",
+              "ANY_INTERSTITIAL",
+              "NON_INTERSTITIAL",
               "IN_BANNER_VIDEO",
               "RENDERING_SIZELESS_ADX",
               "OMSDK_1_0"
diff --git a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
index b488981..138e9e7 100644
--- a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
+++ b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
@@ -1388,6 +1388,10 @@
 	// Possible values:
 	//   "ATTRIBUTE_UNSPECIFIED" - Do not use. This is a placeholder value
 	// only.
+	//   "IMAGE_RICH_MEDIA" - The creative is of type image/rich media. For
+	// pretargeting.
+	//   "ADOBE_FLASH_FLV" - The creative is of video type Adobe Flash FLV.
+	// For pretargeting.
 	//   "IS_TAGGED" - The creative is tagged.
 	//   "IS_COOKIE_TARGETED" - The creative is cookie targeted.
 	//   "IS_USER_INTEREST_TARGETED" - The creative is user interest
@@ -1417,14 +1421,29 @@
 	//   "RICH_MEDIA_CAPABILITY_TYPE_MRAID" - The creative is MRAID.
 	//   "RICH_MEDIA_CAPABILITY_TYPE_FLASH" - The creative is Flash.
 	//   "RICH_MEDIA_CAPABILITY_TYPE_HTML5" - The creative is HTML5.
+	//   "SKIPPABLE_INSTREAM_VIDEO" - The creative has an instream VAST
+	// video type of skippable instream video.
+	// For pretargeting.
 	//   "RICH_MEDIA_CAPABILITY_TYPE_SSL" - The creative is SSL.
 	//   "RICH_MEDIA_CAPABILITY_TYPE_NON_SSL" - The creative is non-SSL.
 	//   "RICH_MEDIA_CAPABILITY_TYPE_INTERSTITIAL" - The creative is an
 	// interstitial.
+	//   "NON_SKIPPABLE_INSTREAM_VIDEO" - The creative has an instream VAST
+	// video type of non-skippable instream
+	// video. For pretargeting.
 	//   "NATIVE_ELIGIBILITY_ELIGIBLE" - The creative is eligible for
 	// native.
+	//   "NON_VPAID" - The creative has an instream VAST video type of
+	// non-VPAID. For
+	// pretargeting.
 	//   "NATIVE_ELIGIBILITY_NOT_ELIGIBLE" - The creative is not eligible
 	// for native.
+	//   "ANY_INTERSTITIAL" - The creative has an interstitial size of any
+	// interstitial. For
+	// pretargeting.
+	//   "NON_INTERSTITIAL" - The creative has an interstitial size of non
+	// interstitial. For
+	// pretargeting.
 	//   "IN_BANNER_VIDEO" - The video type is in-banner video.
 	//   "RENDERING_SIZELESS_ADX" - The creative can dynamically resize to
 	// fill a variety of slot sizes.
diff --git a/analyticsreporting/v4/analyticsreporting-api.json b/analyticsreporting/v4/analyticsreporting-api.json
index 903847d..13489d1 100644
--- a/analyticsreporting/v4/analyticsreporting-api.json
+++ b/analyticsreporting/v4/analyticsreporting-api.json
@@ -129,11 +129,121 @@
           ]
         }
       }
+    },
+    "userActivity": {
+      "methods": {
+        "search": {
+          "description": "Returns User Activity data.",
+          "flatPath": "v4/userActivity:search",
+          "httpMethod": "POST",
+          "id": "analyticsreporting.userActivity.search",
+          "parameterOrder": [],
+          "parameters": {},
+          "path": "v4/userActivity:search",
+          "request": {
+            "$ref": "SearchUserActivityRequest"
+          },
+          "response": {
+            "$ref": "SearchUserActivityResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/analytics",
+            "https://www.googleapis.com/auth/analytics.readonly"
+          ]
+        }
+      }
     }
   },
-  "revision": "20190313",
+  "revision": "20190318",
   "rootUrl": "https://analyticsreporting.googleapis.com/",
   "schemas": {
+    "Activity": {
+      "description": "An Activity represents data for an activity of a user. Note that an\nActivity is different from a hit.\nA hit might result in multiple Activity's. For example, if a hit\nincludes a transaction and a goal completion, there will be two\nActivity protos for this hit, one for ECOMMERCE and one for GOAL.\nConversely, multiple hits can also construct one Activity. In classic\ne-commerce, data for one transaction might be sent through multiple hits.\nThese hits will be merged into one ECOMMERCE Activity.",
+      "id": "Activity",
+      "properties": {
+        "activityTime": {
+          "description": "Timestamp of the activity.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "activityType": {
+          "description": "Type of this activity.",
+          "enum": [
+            "ACTIVITY_TYPE_UNSPECIFIED",
+            "PAGEVIEW",
+            "SCREENVIEW",
+            "GOAL",
+            "ECOMMERCE",
+            "EVENT"
+          ],
+          "enumDescriptions": [
+            "ActivityType will never have this value in the response. Using this type in\nthe request will result in an error.",
+            "Used when the activity resulted out of a visitor viewing a page.",
+            "Used when the activity resulted out of a visitor using an application on a\nmobile device.",
+            "Used to denote that a goal type activity.",
+            "An e-commerce transaction was performed by the visitor on the page.",
+            "Used when the activity is an event."
+          ],
+          "type": "string"
+        },
+        "appview": {
+          "$ref": "ScreenviewData",
+          "description": "This will be set if `activity_type` equals `SCREEN_VIEW`."
+        },
+        "campaign": {
+          "description": "For manual campaign tracking, it is the value of the utm_campaign campaign\ntracking parameter. For AdWords autotagging, it is the name(s) of the\nonline ad campaign(s) you use for the property. If you use neither, its\nvalue is (not set).",
+          "type": "string"
+        },
+        "channelGrouping": {
+          "description": "The Channel Group associated with an end user's session for this View\n(defined by the View's Channel Groupings).",
+          "type": "string"
+        },
+        "customDimension": {
+          "description": "A list of all custom dimensions associated with this activity.",
+          "items": {
+            "$ref": "CustomDimension"
+          },
+          "type": "array"
+        },
+        "ecommerce": {
+          "$ref": "EcommerceData",
+          "description": "This will be set if `activity_type` equals `ECOMMERCE`."
+        },
+        "event": {
+          "$ref": "EventData",
+          "description": "This field contains all the details pertaining to an event and will be\nset if `activity_type` equals `EVENT`."
+        },
+        "goals": {
+          "$ref": "GoalSetData",
+          "description": "This field contains a list of all the goals that were reached in this\nactivity when `activity_type` equals `GOAL`."
+        },
+        "hostname": {
+          "description": "The hostname from which the tracking request was made.",
+          "type": "string"
+        },
+        "keyword": {
+          "description": "For manual campaign tracking, it is the value of the utm_term campaign\ntracking parameter. For AdWords traffic, it contains the best matching\ntargeting criteria. For the display network, where multiple targeting\ncriteria could have caused the ad to show up, it returns the best matching\ntargeting criteria as selected by Ads. This could be display_keyword, site\nplacement, boomuserlist, user_interest, age, or gender. Otherwise its value\nis (not set).",
+          "type": "string"
+        },
+        "landingPagePath": {
+          "description": "The first page in users' sessions, or the landing page.",
+          "type": "string"
+        },
+        "medium": {
+          "description": "The type of referrals. For manual campaign tracking, it is the value of the\nutm_medium campaign tracking parameter. For AdWords autotagging, it is cpc.\nIf users came from a search engine detected by Google Analytics, it is\norganic. If the referrer is not a search engine, it is referral. If users\ncame directly to the property and document.referrer is empty, its value is\n(none).",
+          "type": "string"
+        },
+        "pageview": {
+          "$ref": "PageviewData",
+          "description": "This will be set if `activity_type` equals `PAGEVIEW`. This field\ncontains all the details about the visitor and the page that was visited."
+        },
+        "source": {
+          "description": "The source of referrals. For manual campaign tracking, it is the value of\nthe utm_source campaign tracking parameter. For AdWords autotagging, it is\ngoogle. If you use neither, it is the domain of the source\n(e.g., document.referrer) referring the users. It may also contain a port\naddress. If users arrived without a referrer, its value is (direct).",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Cohort": {
       "description": "Defines a cohort. A cohort is a group of users who share a common\ncharacteristic. For example, all users with the same acquisition date\nbelong to the same cohort.",
       "id": "Cohort",
@@ -197,6 +307,22 @@
       },
       "type": "object"
     },
+    "CustomDimension": {
+      "description": "Custom dimension.",
+      "id": "CustomDimension",
+      "properties": {
+        "index": {
+          "description": "Slot number of custom dimension.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "value": {
+          "description": "Value of the custom dimension. Default value (i.e. empty string) indicates\nclearing sesion/visitor scope custom dimension value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "DateRange": {
       "description": "A contiguous set of days: startDate, startDate + 1 day, ..., endDate.\nThe start and end dates are specified in\n[ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format `YYYY-MM-DD`.",
       "id": "DateRange",
@@ -353,6 +479,93 @@
       },
       "type": "object"
     },
+    "EcommerceData": {
+      "description": "E-commerce details associated with the user activity.",
+      "id": "EcommerceData",
+      "properties": {
+        "actionType": {
+          "description": "Action associated with this e-commerce action.",
+          "enum": [
+            "UNKNOWN",
+            "CLICK",
+            "DETAILS_VIEW",
+            "ADD_TO_CART",
+            "REMOVE_FROM_CART",
+            "CHECKOUT",
+            "PAYMENT",
+            "REFUND",
+            "CHECKOUT_OPTION"
+          ],
+          "enumDescriptions": [
+            "Action type is not known.",
+            "Click through of product lists.",
+            "Product detail views.",
+            "Add product(s) to cart.",
+            "Remove product(s) from cart.",
+            "Check out.",
+            "Completed purchase.",
+            "Refund of purchase.",
+            "Checkout options."
+          ],
+          "type": "string"
+        },
+        "ecommerceType": {
+          "description": "The type of this e-commerce activity.",
+          "enum": [
+            "ECOMMERCE_TYPE_UNSPECIFIED",
+            "CLASSIC",
+            "ENHANCED"
+          ],
+          "enumDescriptions": [
+            "Used when the e-commerce activity type is unspecified.",
+            "Used when activity has classic (non-enhanced) e-commerce information.",
+            "Used when activity has enhanced e-commerce information."
+          ],
+          "type": "string"
+        },
+        "products": {
+          "description": "Details of the products in this transaction.",
+          "items": {
+            "$ref": "ProductData"
+          },
+          "type": "array"
+        },
+        "transaction": {
+          "$ref": "TransactionData",
+          "description": "Transaction details of this e-commerce action."
+        }
+      },
+      "type": "object"
+    },
+    "EventData": {
+      "description": "Represents all the details pertaining to an event.",
+      "id": "EventData",
+      "properties": {
+        "eventAction": {
+          "description": "Type of interaction with the object. Eg: 'play'.",
+          "type": "string"
+        },
+        "eventCategory": {
+          "description": "The object on the page that was interacted with. Eg: 'Video'.",
+          "type": "string"
+        },
+        "eventCount": {
+          "description": "Number of such events in this activity.",
+          "format": "int64",
+          "type": "string"
+        },
+        "eventLabel": {
+          "description": "Label attached with the event.",
+          "type": "string"
+        },
+        "eventValue": {
+          "description": "Numeric value associated with the event.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "GetReportsRequest": {
       "description": "The batch request containing multiple report request.",
       "id": "GetReportsRequest",
@@ -394,6 +607,62 @@
       },
       "type": "object"
     },
+    "GoalData": {
+      "description": "Represents all the details pertaining to a goal.",
+      "id": "GoalData",
+      "properties": {
+        "goalCompletionLocation": {
+          "description": "URL of the page where this goal was completed.",
+          "type": "string"
+        },
+        "goalCompletions": {
+          "description": "Total number of goal completions in this activity.",
+          "format": "int64",
+          "type": "string"
+        },
+        "goalIndex": {
+          "description": "This identifies the goal as configured for the profile.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "goalName": {
+          "description": "Name of the goal.",
+          "type": "string"
+        },
+        "goalPreviousStep1": {
+          "description": "URL of the page one step prior to the goal completion.",
+          "type": "string"
+        },
+        "goalPreviousStep2": {
+          "description": "URL of the page two steps prior to the goal completion.",
+          "type": "string"
+        },
+        "goalPreviousStep3": {
+          "description": "URL of the page three steps prior to the goal completion.",
+          "type": "string"
+        },
+        "goalValue": {
+          "description": "Value in this goal.",
+          "format": "double",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
+    "GoalSetData": {
+      "description": "Represents a set of goals that were reached in an activity.",
+      "id": "GoalSetData",
+      "properties": {
+        "goals": {
+          "description": "All the goals that were reached in the current activity.",
+          "items": {
+            "$ref": "GoalData"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "Metric": {
       "description": "[Metrics](https://support.google.com/analytics/answer/1033861)\nare the quantitative measurements. For example, the metric `ga:users`\nindicates the total number of users for the requested time period.",
       "id": "Metric",
@@ -605,6 +874,21 @@
       },
       "type": "object"
     },
+    "PageviewData": {
+      "description": "Represents details collected when the visitor views a page.",
+      "id": "PageviewData",
+      "properties": {
+        "pagePath": {
+          "description": "The URL of the page that the visitor viewed.",
+          "type": "string"
+        },
+        "pageTitle": {
+          "description": "The title of the page that the visitor viewed.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Pivot": {
       "description": "The Pivot describes the pivot section in the request.\nThe Pivot helps rearrange the information in the table for certain reports\nby pivoting your data on a second dimension.",
       "id": "Pivot",
@@ -701,6 +985,31 @@
       },
       "type": "object"
     },
+    "ProductData": {
+      "description": "Details of the products in an e-commerce transaction.",
+      "id": "ProductData",
+      "properties": {
+        "itemRevenue": {
+          "description": "The total revenue from purchased product items.",
+          "format": "double",
+          "type": "number"
+        },
+        "productName": {
+          "description": "The product name, supplied by the e-commerce tracking application, for\nthe purchased items.",
+          "type": "string"
+        },
+        "productQuantity": {
+          "description": "Total number of this product units in the transaction.",
+          "format": "int64",
+          "type": "string"
+        },
+        "productSku": {
+          "description": "Unique code that represents the product.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Report": {
       "description": "The data response corresponding to the request.",
       "id": "Report",
@@ -935,6 +1244,107 @@
       },
       "type": "object"
     },
+    "ScreenviewData": {
+      "id": "ScreenviewData",
+      "properties": {
+        "appName": {
+          "description": "The application name.",
+          "type": "string"
+        },
+        "mobileDeviceBranding": {
+          "description": "Mobile manufacturer or branded name. Eg: \"Google\", \"Apple\" etc.",
+          "type": "string"
+        },
+        "mobileDeviceModel": {
+          "description": "Mobile device model. Eg: \"Pixel\", \"iPhone\" etc.",
+          "type": "string"
+        },
+        "screenName": {
+          "description": "The name of the screen.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "SearchUserActivityRequest": {
+      "description": "The request to fetch User Report from Reporting API `userActivity:get` call.",
+      "id": "SearchUserActivityRequest",
+      "properties": {
+        "activityTypes": {
+          "description": "Set of all activity types being requested. Only acvities matching these\ntypes will be returned in the response. If empty, all activies will be\nreturned.",
+          "enumDescriptions": [
+            "ActivityType will never have this value in the response. Using this type in\nthe request will result in an error.",
+            "Used when the activity resulted out of a visitor viewing a page.",
+            "Used when the activity resulted out of a visitor using an application on a\nmobile device.",
+            "Used to denote that a goal type activity.",
+            "An e-commerce transaction was performed by the visitor on the page.",
+            "Used when the activity is an event."
+          ],
+          "items": {
+            "enum": [
+              "ACTIVITY_TYPE_UNSPECIFIED",
+              "PAGEVIEW",
+              "SCREENVIEW",
+              "GOAL",
+              "ECOMMERCE",
+              "EVENT"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "dateRange": {
+          "$ref": "DateRange",
+          "description": "Date range for which to retrieve the user activity. If a date range is not\nprovided, the default date range is (startDate: current date - 7 days,\nendDate: current date - 1 day)."
+        },
+        "pageSize": {
+          "description": "Page size is for paging and specifies the maximum number of returned rows.\nPage size should be \u003e 0. If the value is 0 or if the field isn't specified,\nthe request returns the default of 1000 rows per page.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "pageToken": {
+          "description": "A continuation token to get the next page of the results. Adding this to\nthe request will return the rows after the pageToken. The pageToken should\nbe the value returned in the nextPageToken parameter in the response to\nthe [SearchUserActivityRequest](#SearchUserActivityRequest) request.",
+          "type": "string"
+        },
+        "user": {
+          "$ref": "User",
+          "description": "Required. Unique user Id to query for. Every\n[SearchUserActivityRequest](#SearchUserActivityRequest) must contain this\nfield."
+        },
+        "viewId": {
+          "description": "Required. The Analytics\n[view ID](https://support.google.com/analytics/answer/1009618)\nfrom which to retrieve data. Every\n[SearchUserActivityRequest](#SearchUserActivityRequest) must contain the\n`viewId`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "SearchUserActivityResponse": {
+      "description": "The response from `userActivity:get` call.",
+      "id": "SearchUserActivityResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "This token should be passed to\n[SearchUserActivityRequest](#SearchUserActivityRequest) to retrieve the\nnext page.",
+          "type": "string"
+        },
+        "sampleRate": {
+          "description": "This field represents the\n[sampling rate](https://support.google.com/analytics/answer/2637192) for\nthe given request and is a number between 0.0 to 1.0. See\n[developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)\nfor details.",
+          "format": "double",
+          "type": "number"
+        },
+        "sessions": {
+          "description": "Each record represents a session (device details, duration, etc).",
+          "items": {
+            "$ref": "UserActivitySession"
+          },
+          "type": "array"
+        },
+        "totalRows": {
+          "description": "Total rows returned by this query (across different pages).",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "Segment": {
       "description": "The segment definition, if the report needs to be segmented.\nA Segment is a subset of the Analytics data. For example, of the entire\nset of users, one Segment might be users from a particular country or city.",
       "id": "Segment",
@@ -1174,6 +1584,91 @@
         }
       },
       "type": "object"
+    },
+    "TransactionData": {
+      "description": "Represents details collected when the visitor performs a transaction on the\npage.",
+      "id": "TransactionData",
+      "properties": {
+        "transactionId": {
+          "description": "The transaction ID, supplied by the e-commerce tracking method, for the\npurchase in the shopping cart.",
+          "type": "string"
+        },
+        "transactionRevenue": {
+          "description": "The total sale revenue (excluding shipping and tax) of the transaction.",
+          "format": "double",
+          "type": "number"
+        },
+        "transactionShipping": {
+          "description": "Total cost of shipping.",
+          "format": "double",
+          "type": "number"
+        },
+        "transactionTax": {
+          "description": "Total tax for the transaction.",
+          "format": "double",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
+    "User": {
+      "description": "Contains information to identify a particular user uniquely.",
+      "id": "User",
+      "properties": {
+        "type": {
+          "description": "Type of the user in the request. The field `userId` is associated with this\ntype.",
+          "enum": [
+            "USER_ID_TYPE_UNSPECIFIED",
+            "USER_ID",
+            "CLIENT_ID"
+          ],
+          "enumDescriptions": [
+            "When the User Id Type is not specified, the default type used will be\nCLIENT_ID.",
+            "A single user, like a signed-in user account, that may interact with\ncontent across one or more devices and / or browser instances.",
+            "Analytics assigned client_id."
+          ],
+          "type": "string"
+        },
+        "userId": {
+          "description": "Unique Id of the user for which the data is being requested.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "UserActivitySession": {
+      "description": "This represents a user session performed on a specific device at a certain\ntime over a period of time.",
+      "id": "UserActivitySession",
+      "properties": {
+        "activities": {
+          "description": "Represents a detailed view into each of the activity in this session.",
+          "items": {
+            "$ref": "Activity"
+          },
+          "type": "array"
+        },
+        "dataSource": {
+          "description": "The data source of a hit. By default, hits sent from analytics.js are\nreported as \"web\" and hits sent from the mobile SDKs are reported as \"app\".\nThese values can be overridden in the Measurement Protocol.",
+          "type": "string"
+        },
+        "deviceCategory": {
+          "description": "The type of device used: \"mobile\", \"tablet\" etc.",
+          "type": "string"
+        },
+        "platform": {
+          "description": "Platform on which the activity happened: \"android\", \"ios\" etc.",
+          "type": "string"
+        },
+        "sessionDate": {
+          "description": "Date of this session in ISO-8601 format.",
+          "type": "string"
+        },
+        "sessionId": {
+          "description": "Unique ID of the session.",
+          "type": "string"
+        }
+      },
+      "type": "object"
     }
   },
   "servicePath": "",
diff --git a/analyticsreporting/v4/analyticsreporting-gen.go b/analyticsreporting/v4/analyticsreporting-gen.go
index ee9f7a6..a3d1bc4 100644
--- a/analyticsreporting/v4/analyticsreporting-gen.go
+++ b/analyticsreporting/v4/analyticsreporting-gen.go
@@ -120,6 +120,7 @@
 	}
 	s := &Service{client: client, BasePath: basePath}
 	s.Reports = NewReportsService(s)
+	s.UserActivity = NewUserActivityService(s)
 	return s, nil
 }
 
@@ -129,6 +130,8 @@
 	UserAgent string // optional additional User-Agent fragment
 
 	Reports *ReportsService
+
+	UserActivity *UserActivityService
 }
 
 func (s *Service) userAgent() string {
@@ -147,6 +150,158 @@
 	s *Service
 }
 
+func NewUserActivityService(s *Service) *UserActivityService {
+	rs := &UserActivityService{s: s}
+	return rs
+}
+
+type UserActivityService struct {
+	s *Service
+}
+
+// Activity: An Activity represents data for an activity of a user. Note
+// that an
+// Activity is different from a hit.
+// A hit might result in multiple Activity's. For example, if a
+// hit
+// includes a transaction and a goal completion, there will be
+// two
+// Activity protos for this hit, one for ECOMMERCE and one for
+// GOAL.
+// Conversely, multiple hits can also construct one Activity. In
+// classic
+// e-commerce, data for one transaction might be sent through multiple
+// hits.
+// These hits will be merged into one ECOMMERCE Activity.
+type Activity struct {
+	// ActivityTime: Timestamp of the activity.
+	ActivityTime string `json:"activityTime,omitempty"`
+
+	// ActivityType: Type of this activity.
+	//
+	// Possible values:
+	//   "ACTIVITY_TYPE_UNSPECIFIED" - ActivityType will never have this
+	// value in the response. Using this type in
+	// the request will result in an error.
+	//   "PAGEVIEW" - Used when the activity resulted out of a visitor
+	// viewing a page.
+	//   "SCREENVIEW" - Used when the activity resulted out of a visitor
+	// using an application on a
+	// mobile device.
+	//   "GOAL" - Used to denote that a goal type activity.
+	//   "ECOMMERCE" - An e-commerce transaction was performed by the
+	// visitor on the page.
+	//   "EVENT" - Used when the activity is an event.
+	ActivityType string `json:"activityType,omitempty"`
+
+	// Appview: This will be set if `activity_type` equals `SCREEN_VIEW`.
+	Appview *ScreenviewData `json:"appview,omitempty"`
+
+	// Campaign: For manual campaign tracking, it is the value of the
+	// utm_campaign campaign
+	// tracking parameter. For AdWords autotagging, it is the name(s) of
+	// the
+	// online ad campaign(s) you use for the property. If you use neither,
+	// its
+	// value is (not set).
+	Campaign string `json:"campaign,omitempty"`
+
+	// ChannelGrouping: The Channel Group associated with an end user's
+	// session for this View
+	// (defined by the View's Channel Groupings).
+	ChannelGrouping string `json:"channelGrouping,omitempty"`
+
+	// CustomDimension: A list of all custom dimensions associated with this
+	// activity.
+	CustomDimension []*CustomDimension `json:"customDimension,omitempty"`
+
+	// Ecommerce: This will be set if `activity_type` equals `ECOMMERCE`.
+	Ecommerce *EcommerceData `json:"ecommerce,omitempty"`
+
+	// Event: This field contains all the details pertaining to an event and
+	// will be
+	// set if `activity_type` equals `EVENT`.
+	Event *EventData `json:"event,omitempty"`
+
+	// Goals: This field contains a list of all the goals that were reached
+	// in this
+	// activity when `activity_type` equals `GOAL`.
+	Goals *GoalSetData `json:"goals,omitempty"`
+
+	// Hostname: The hostname from which the tracking request was made.
+	Hostname string `json:"hostname,omitempty"`
+
+	// Keyword: For manual campaign tracking, it is the value of the
+	// utm_term campaign
+	// tracking parameter. For AdWords traffic, it contains the best
+	// matching
+	// targeting criteria. For the display network, where multiple
+	// targeting
+	// criteria could have caused the ad to show up, it returns the best
+	// matching
+	// targeting criteria as selected by Ads. This could be display_keyword,
+	// site
+	// placement, boomuserlist, user_interest, age, or gender. Otherwise its
+	// value
+	// is (not set).
+	Keyword string `json:"keyword,omitempty"`
+
+	// LandingPagePath: The first page in users' sessions, or the landing
+	// page.
+	LandingPagePath string `json:"landingPagePath,omitempty"`
+
+	// Medium: The type of referrals. For manual campaign tracking, it is
+	// the value of the
+	// utm_medium campaign tracking parameter. For AdWords autotagging, it
+	// is cpc.
+	// If users came from a search engine detected by Google Analytics, it
+	// is
+	// organic. If the referrer is not a search engine, it is referral. If
+	// users
+	// came directly to the property and document.referrer is empty, its
+	// value is
+	// (none).
+	Medium string `json:"medium,omitempty"`
+
+	// Pageview: This will be set if `activity_type` equals `PAGEVIEW`. This
+	// field
+	// contains all the details about the visitor and the page that was
+	// visited.
+	Pageview *PageviewData `json:"pageview,omitempty"`
+
+	// Source: The source of referrals. For manual campaign tracking, it is
+	// the value of
+	// the utm_source campaign tracking parameter. For AdWords autotagging,
+	// it is
+	// google. If you use neither, it is the domain of the source
+	// (e.g., document.referrer) referring the users. It may also contain a
+	// port
+	// address. If users arrived without a referrer, its value is (direct).
+	Source string `json:"source,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActivityTime") 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. "ActivityTime") 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 *Activity) MarshalJSON() ([]byte, error) {
+	type NoMethod Activity
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Cohort: Defines a cohort. A cohort is a group of users who share a
 // common
 // characteristic. For example, all users with the same acquisition
@@ -335,6 +490,39 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// CustomDimension: Custom dimension.
+type CustomDimension struct {
+	// Index: Slot number of custom dimension.
+	Index int64 `json:"index,omitempty"`
+
+	// Value: Value of the custom dimension. Default value (i.e. empty
+	// string) indicates
+	// clearing sesion/visitor scope custom dimension value.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Index") 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. "Index") 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 *CustomDimension) MarshalJSON() ([]byte, error) {
+	type NoMethod CustomDimension
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // DateRange: A contiguous set of days: startDate, startDate + 1 day,
 // ..., endDate.
 // The start and end dates are specified
@@ -659,6 +847,103 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// EcommerceData: E-commerce details associated with the user activity.
+type EcommerceData struct {
+	// ActionType: Action associated with this e-commerce action.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Action type is not known.
+	//   "CLICK" - Click through of product lists.
+	//   "DETAILS_VIEW" - Product detail views.
+	//   "ADD_TO_CART" - Add product(s) to cart.
+	//   "REMOVE_FROM_CART" - Remove product(s) from cart.
+	//   "CHECKOUT" - Check out.
+	//   "PAYMENT" - Completed purchase.
+	//   "REFUND" - Refund of purchase.
+	//   "CHECKOUT_OPTION" - Checkout options.
+	ActionType string `json:"actionType,omitempty"`
+
+	// EcommerceType: The type of this e-commerce activity.
+	//
+	// Possible values:
+	//   "ECOMMERCE_TYPE_UNSPECIFIED" - Used when the e-commerce activity
+	// type is unspecified.
+	//   "CLASSIC" - Used when activity has classic (non-enhanced)
+	// e-commerce information.
+	//   "ENHANCED" - Used when activity has enhanced e-commerce
+	// information.
+	EcommerceType string `json:"ecommerceType,omitempty"`
+
+	// Products: Details of the products in this transaction.
+	Products []*ProductData `json:"products,omitempty"`
+
+	// Transaction: Transaction details of this e-commerce action.
+	Transaction *TransactionData `json:"transaction,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionType") 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. "ActionType") 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 *EcommerceData) MarshalJSON() ([]byte, error) {
+	type NoMethod EcommerceData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// EventData: Represents all the details pertaining to an event.
+type EventData struct {
+	// EventAction: Type of interaction with the object. Eg: 'play'.
+	EventAction string `json:"eventAction,omitempty"`
+
+	// EventCategory: The object on the page that was interacted with. Eg:
+	// 'Video'.
+	EventCategory string `json:"eventCategory,omitempty"`
+
+	// EventCount: Number of such events in this activity.
+	EventCount int64 `json:"eventCount,omitempty,string"`
+
+	// EventLabel: Label attached with the event.
+	EventLabel string `json:"eventLabel,omitempty"`
+
+	// EventValue: Numeric value associated with the event.
+	EventValue int64 `json:"eventValue,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "EventAction") 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. "EventAction") 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 *EventData) MarshalJSON() ([]byte, error) {
+	type NoMethod EventData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // GetReportsRequest: The batch request containing multiple report
 // request.
 type GetReportsRequest struct {
@@ -751,6 +1036,104 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GoalData: Represents all the details pertaining to a goal.
+type GoalData struct {
+	// GoalCompletionLocation: URL of the page where this goal was
+	// completed.
+	GoalCompletionLocation string `json:"goalCompletionLocation,omitempty"`
+
+	// GoalCompletions: Total number of goal completions in this activity.
+	GoalCompletions int64 `json:"goalCompletions,omitempty,string"`
+
+	// GoalIndex: This identifies the goal as configured for the profile.
+	GoalIndex int64 `json:"goalIndex,omitempty"`
+
+	// GoalName: Name of the goal.
+	GoalName string `json:"goalName,omitempty"`
+
+	// GoalPreviousStep1: URL of the page one step prior to the goal
+	// completion.
+	GoalPreviousStep1 string `json:"goalPreviousStep1,omitempty"`
+
+	// GoalPreviousStep2: URL of the page two steps prior to the goal
+	// completion.
+	GoalPreviousStep2 string `json:"goalPreviousStep2,omitempty"`
+
+	// GoalPreviousStep3: URL of the page three steps prior to the goal
+	// completion.
+	GoalPreviousStep3 string `json:"goalPreviousStep3,omitempty"`
+
+	// GoalValue: Value in this goal.
+	GoalValue float64 `json:"goalValue,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "GoalCompletionLocation") 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. "GoalCompletionLocation")
+	// 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 *GoalData) MarshalJSON() ([]byte, error) {
+	type NoMethod GoalData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *GoalData) UnmarshalJSON(data []byte) error {
+	type NoMethod GoalData
+	var s1 struct {
+		GoalValue gensupport.JSONFloat64 `json:"goalValue"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.GoalValue = float64(s1.GoalValue)
+	return nil
+}
+
+// GoalSetData: Represents a set of goals that were reached in an
+// activity.
+type GoalSetData struct {
+	// Goals: All the goals that were reached in the current activity.
+	Goals []*GoalData `json:"goals,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Goals") 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. "Goals") 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 *GoalSetData) MarshalJSON() ([]byte, error) {
+	type NoMethod GoalSetData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Metric:
 // [Metrics](https://support.google.com/analytics/answer/1033861)
 // are the quantitative measurements. For example, the metric
@@ -1103,6 +1486,38 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// PageviewData: Represents details collected when the visitor views a
+// page.
+type PageviewData struct {
+	// PagePath: The URL of the page that the visitor viewed.
+	PagePath string `json:"pagePath,omitempty"`
+
+	// PageTitle: The title of the page that the visitor viewed.
+	PageTitle string `json:"pageTitle,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PagePath") 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. "PagePath") 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 *PageviewData) MarshalJSON() ([]byte, error) {
+	type NoMethod PageviewData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Pivot: The Pivot describes the pivot section in the request.
 // The Pivot helps rearrange the information in the table for certain
 // reports
@@ -1286,6 +1701,60 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ProductData: Details of the products in an e-commerce transaction.
+type ProductData struct {
+	// ItemRevenue: The total revenue from purchased product items.
+	ItemRevenue float64 `json:"itemRevenue,omitempty"`
+
+	// ProductName: The product name, supplied by the e-commerce tracking
+	// application, for
+	// the purchased items.
+	ProductName string `json:"productName,omitempty"`
+
+	// ProductQuantity: Total number of this product units in the
+	// transaction.
+	ProductQuantity int64 `json:"productQuantity,omitempty,string"`
+
+	// ProductSku: Unique code that represents the product.
+	ProductSku string `json:"productSku,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ItemRevenue") 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. "ItemRevenue") 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 *ProductData) MarshalJSON() ([]byte, error) {
+	type NoMethod ProductData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *ProductData) UnmarshalJSON(data []byte) error {
+	type NoMethod ProductData
+	var s1 struct {
+		ItemRevenue gensupport.JSONFloat64 `json:"itemRevenue"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.ItemRevenue = float64(s1.ItemRevenue)
+	return nil
+}
+
 // Report: The data response corresponding to the request.
 type Report struct {
 	// ColumnHeader: The column headers.
@@ -1680,6 +2149,197 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type ScreenviewData struct {
+	// AppName: The application name.
+	AppName string `json:"appName,omitempty"`
+
+	// MobileDeviceBranding: Mobile manufacturer or branded name. Eg:
+	// "Google", "Apple" etc.
+	MobileDeviceBranding string `json:"mobileDeviceBranding,omitempty"`
+
+	// MobileDeviceModel: Mobile device model. Eg: "Pixel", "iPhone" etc.
+	MobileDeviceModel string `json:"mobileDeviceModel,omitempty"`
+
+	// ScreenName: The name of the screen.
+	ScreenName string `json:"screenName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AppName") 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. "AppName") 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 *ScreenviewData) MarshalJSON() ([]byte, error) {
+	type NoMethod ScreenviewData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// SearchUserActivityRequest: The request to fetch User Report from
+// Reporting API `userActivity:get` call.
+type SearchUserActivityRequest struct {
+	// ActivityTypes: Set of all activity types being requested. Only
+	// acvities matching these
+	// types will be returned in the response. If empty, all activies will
+	// be
+	// returned.
+	//
+	// Possible values:
+	//   "ACTIVITY_TYPE_UNSPECIFIED" - ActivityType will never have this
+	// value in the response. Using this type in
+	// the request will result in an error.
+	//   "PAGEVIEW" - Used when the activity resulted out of a visitor
+	// viewing a page.
+	//   "SCREENVIEW" - Used when the activity resulted out of a visitor
+	// using an application on a
+	// mobile device.
+	//   "GOAL" - Used to denote that a goal type activity.
+	//   "ECOMMERCE" - An e-commerce transaction was performed by the
+	// visitor on the page.
+	//   "EVENT" - Used when the activity is an event.
+	ActivityTypes []string `json:"activityTypes,omitempty"`
+
+	// DateRange: Date range for which to retrieve the user activity. If a
+	// date range is not
+	// provided, the default date range is (startDate: current date - 7
+	// days,
+	// endDate: current date - 1 day).
+	DateRange *DateRange `json:"dateRange,omitempty"`
+
+	// PageSize: Page size is for paging and specifies the maximum number of
+	// returned rows.
+	// Page size should be > 0. If the value is 0 or if the field isn't
+	// specified,
+	// the request returns the default of 1000 rows per page.
+	PageSize int64 `json:"pageSize,omitempty"`
+
+	// PageToken: A continuation token to get the next page of the results.
+	// Adding this to
+	// the request will return the rows after the pageToken. The pageToken
+	// should
+	// be the value returned in the nextPageToken parameter in the response
+	// to
+	// the [SearchUserActivityRequest](#SearchUserActivityRequest) request.
+	PageToken string `json:"pageToken,omitempty"`
+
+	// User: Required. Unique user Id to query for.
+	// Every
+	// [SearchUserActivityRequest](#SearchUserActivityRequest) must contain
+	// this
+	// field.
+	User *User `json:"user,omitempty"`
+
+	// ViewId: Required. The Analytics
+	// [view ID](https://support.google.com/analytics/answer/1009618)
+	// from which to retrieve data.
+	// Every
+	// [SearchUserActivityRequest](#SearchUserActivityRequest) must contain
+	// the
+	// `viewId`.
+	ViewId string `json:"viewId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActivityTypes") 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. "ActivityTypes") 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 *SearchUserActivityRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod SearchUserActivityRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// SearchUserActivityResponse: The response from `userActivity:get`
+// call.
+type SearchUserActivityResponse struct {
+	// NextPageToken: This token should be passed
+	// to
+	// [SearchUserActivityRequest](#SearchUserActivityRequest) to retrieve
+	// the
+	// next page.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// SampleRate: This field represents the
+	// [sampling rate](https://support.google.com/analytics/answer/2637192)
+	// for
+	// the given request and is a number between 0.0 to 1.0. See
+	// [developer
+	// guide](/analytics/devguides/reporting/core/v4/basics#sampling)
+	// for details.
+	SampleRate float64 `json:"sampleRate,omitempty"`
+
+	// Sessions: Each record represents a session (device details, duration,
+	// etc).
+	Sessions []*UserActivitySession `json:"sessions,omitempty"`
+
+	// TotalRows: Total rows returned by this query (across different
+	// pages).
+	TotalRows int64 `json:"totalRows,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 *SearchUserActivityResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod SearchUserActivityResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *SearchUserActivityResponse) UnmarshalJSON(data []byte) error {
+	type NoMethod SearchUserActivityResponse
+	var s1 struct {
+		SampleRate gensupport.JSONFloat64 `json:"sampleRate"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.SampleRate = float64(s1.SampleRate)
+	return nil
+}
+
 // Segment: The segment definition, if the report needs to be
 // segmented.
 // A Segment is a subset of the Analytics data. For example, of the
@@ -2142,6 +2802,159 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// TransactionData: Represents details collected when the visitor
+// performs a transaction on the
+// page.
+type TransactionData struct {
+	// TransactionId: The transaction ID, supplied by the e-commerce
+	// tracking method, for the
+	// purchase in the shopping cart.
+	TransactionId string `json:"transactionId,omitempty"`
+
+	// TransactionRevenue: The total sale revenue (excluding shipping and
+	// tax) of the transaction.
+	TransactionRevenue float64 `json:"transactionRevenue,omitempty"`
+
+	// TransactionShipping: Total cost of shipping.
+	TransactionShipping float64 `json:"transactionShipping,omitempty"`
+
+	// TransactionTax: Total tax for the transaction.
+	TransactionTax float64 `json:"transactionTax,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "TransactionId") 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. "TransactionId") 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 *TransactionData) MarshalJSON() ([]byte, error) {
+	type NoMethod TransactionData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *TransactionData) UnmarshalJSON(data []byte) error {
+	type NoMethod TransactionData
+	var s1 struct {
+		TransactionRevenue  gensupport.JSONFloat64 `json:"transactionRevenue"`
+		TransactionShipping gensupport.JSONFloat64 `json:"transactionShipping"`
+		TransactionTax      gensupport.JSONFloat64 `json:"transactionTax"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.TransactionRevenue = float64(s1.TransactionRevenue)
+	s.TransactionShipping = float64(s1.TransactionShipping)
+	s.TransactionTax = float64(s1.TransactionTax)
+	return nil
+}
+
+// User: Contains information to identify a particular user uniquely.
+type User struct {
+	// Type: Type of the user in the request. The field `userId` is
+	// associated with this
+	// type.
+	//
+	// Possible values:
+	//   "USER_ID_TYPE_UNSPECIFIED" - When the User Id Type is not
+	// specified, the default type used will be
+	// CLIENT_ID.
+	//   "USER_ID" - A single user, like a signed-in user account, that may
+	// interact with
+	// content across one or more devices and / or browser instances.
+	//   "CLIENT_ID" - Analytics assigned client_id.
+	Type string `json:"type,omitempty"`
+
+	// UserId: Unique Id of the user for which the data is being requested.
+	UserId string `json:"userId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Type") 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. "Type") 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 *User) MarshalJSON() ([]byte, error) {
+	type NoMethod User
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// UserActivitySession: This represents a user session performed on a
+// specific device at a certain
+// time over a period of time.
+type UserActivitySession struct {
+	// Activities: Represents a detailed view into each of the activity in
+	// this session.
+	Activities []*Activity `json:"activities,omitempty"`
+
+	// DataSource: The data source of a hit. By default, hits sent from
+	// analytics.js are
+	// reported as "web" and hits sent from the mobile SDKs are reported as
+	// "app".
+	// These values can be overridden in the Measurement Protocol.
+	DataSource string `json:"dataSource,omitempty"`
+
+	// DeviceCategory: The type of device used: "mobile", "tablet" etc.
+	DeviceCategory string `json:"deviceCategory,omitempty"`
+
+	// Platform: Platform on which the activity happened: "android", "ios"
+	// etc.
+	Platform string `json:"platform,omitempty"`
+
+	// SessionDate: Date of this session in ISO-8601 format.
+	SessionDate string `json:"sessionDate,omitempty"`
+
+	// SessionId: Unique ID of the session.
+	SessionId string `json:"sessionId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Activities") 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. "Activities") 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 *UserActivitySession) MarshalJSON() ([]byte, error) {
+	type NoMethod UserActivitySession
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // method id "analyticsreporting.reports.batchGet":
 
 type ReportsBatchGetCall struct {
@@ -2266,3 +3079,149 @@
 	// }
 
 }
+
+// method id "analyticsreporting.userActivity.search":
+
+type UserActivitySearchCall struct {
+	s                         *Service
+	searchuseractivityrequest *SearchUserActivityRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// Search: Returns User Activity data.
+func (r *UserActivityService) Search(searchuseractivityrequest *SearchUserActivityRequest) *UserActivitySearchCall {
+	c := &UserActivitySearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.searchuseractivityrequest = searchuseractivityrequest
+	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 *UserActivitySearchCall) Fields(s ...googleapi.Field) *UserActivitySearchCall {
+	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 *UserActivitySearchCall) Context(ctx context.Context) *UserActivitySearchCall {
+	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 *UserActivitySearchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *UserActivitySearchCall) 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.searchuseractivityrequest)
+	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, "v4/userActivity:search")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "analyticsreporting.userActivity.search" call.
+// Exactly one of *SearchUserActivityResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *SearchUserActivityResponse.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 *UserActivitySearchCall) Do(opts ...googleapi.CallOption) (*SearchUserActivityResponse, 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 := &SearchUserActivityResponse{
+		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": "Returns User Activity data.",
+	//   "flatPath": "v4/userActivity:search",
+	//   "httpMethod": "POST",
+	//   "id": "analyticsreporting.userActivity.search",
+	//   "parameterOrder": [],
+	//   "parameters": {},
+	//   "path": "v4/userActivity:search",
+	//   "request": {
+	//     "$ref": "SearchUserActivityRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "SearchUserActivityResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/analytics",
+	//     "https://www.googleapis.com/auth/analytics.readonly"
+	//   ]
+	// }
+
+}
+
+// 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 *UserActivitySearchCall) Pages(ctx context.Context, f func(*SearchUserActivityResponse) error) error {
+	c.ctx_ = ctx
+	defer func(pt string) { c.searchuseractivityrequest.PageToken = pt }(c.searchuseractivityrequest.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.searchuseractivityrequest.PageToken = x.NextPageToken
+	}
+}
diff --git a/androidenterprise/v1/androidenterprise-api.json b/androidenterprise/v1/androidenterprise-api.json
index d65e24d..6cf7547 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/psKDiISfxUEa5MGtkMDFTk4XUmg\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/6lcnxNsebL6KFpum0g-qiNemtCY\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -2911,7 +2911,7 @@
       }
     }
   },
-  "revision": "20190130",
+  "revision": "20190313",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Administrator": {
@@ -4222,6 +4222,10 @@
           "$ref": "AutoInstallPolicy",
           "description": "The auto-install policy for the product."
         },
+        "managedConfiguration": {
+          "$ref": "ManagedConfiguration",
+          "description": "The managed configuration for the product."
+        },
         "productId": {
           "description": "The ID of the product. For example, \"app:com.google.android.gm\".",
           "type": "string"
diff --git a/androidenterprise/v1/androidenterprise-gen.go b/androidenterprise/v1/androidenterprise-gen.go
index 39debce..6a61bec 100644
--- a/androidenterprise/v1/androidenterprise-gen.go
+++ b/androidenterprise/v1/androidenterprise-gen.go
@@ -2768,6 +2768,9 @@
 	// AutoInstallPolicy: The auto-install policy for the product.
 	AutoInstallPolicy *AutoInstallPolicy `json:"autoInstallPolicy,omitempty"`
 
+	// ManagedConfiguration: The managed configuration for the product.
+	ManagedConfiguration *ManagedConfiguration `json:"managedConfiguration,omitempty"`
+
 	// ProductId: The ID of the product. For example,
 	// "app:com.google.android.gm".
 	ProductId string `json:"productId,omitempty"`
diff --git a/api-list.json b/api-list.json
index e07cf08..e3ccb5c 100644
--- a/api-list.json
+++ b/api-list.json
@@ -275,7 +275,7 @@
    "id": "analyticsreporting:v4",
    "name": "analyticsreporting",
    "version": "v4",
-   "title": "Google Analytics Reporting API",
+   "title": "Analytics Reporting API",
    "description": "Accesses Analytics report data.",
    "discoveryRestUrl": "https://analyticsreporting.googleapis.com/$discovery/rest?version=v4",
    "icons": {
@@ -1056,6 +1056,21 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "cloudtasks:v2",
+   "name": "cloudtasks",
+   "version": "v2",
+   "title": "Cloud Tasks API",
+   "description": "Manages the execution of large numbers of distributed requests.",
+   "discoveryRestUrl": "https://cloudtasks.googleapis.com/$discovery/rest?version=v2",
+   "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/tasks/",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "cloudtasks:v2beta2",
    "name": "cloudtasks",
    "version": "v2beta2",
@@ -1082,7 +1097,7 @@
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
    },
    "documentationLink": "https://cloud.google.com/tasks/",
-   "preferred": true
+   "preferred": false
   },
   {
    "kind": "discovery#directoryItem",
@@ -2037,7 +2052,7 @@
    "name": "healthcare",
    "version": "v1alpha",
    "title": "Cloud Healthcare API",
-   "description": "",
+   "description": "Manage, store, and access healthcare data in Google Cloud Platform.",
    "discoveryRestUrl": "https://healthcare.googleapis.com/$discovery/rest?version=v1alpha",
    "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
@@ -2052,7 +2067,7 @@
    "name": "healthcare",
    "version": "v1alpha2",
    "title": "Cloud Healthcare API",
-   "description": "",
+   "description": "Manage, store, and access healthcare data in Google Cloud Platform.",
    "discoveryRestUrl": "https://healthcare.googleapis.com/$discovery/rest?version=v1alpha2",
    "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
diff --git a/appengine/v1/appengine-api.json b/appengine/v1/appengine-api.json
index c15cf76..23b116a 100644
--- a/appengine/v1/appengine-api.json
+++ b/appengine/v1/appengine-api.json
@@ -1572,7 +1572,7 @@
       }
     }
   },
-  "revision": "20190214",
+  "revision": "20190315",
   "rootUrl": "https://appengine.googleapis.com/",
   "schemas": {
     "ApiConfigHandler": {
@@ -2173,6 +2173,10 @@
         "splitHealthChecks": {
           "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed.",
           "type": "boolean"
+        },
+        "useContainerOptimizedOs": {
+          "description": "If true, use Container-Optimized OS (https://cloud.google.com/container-optimized-os/) base image for VMs, rather than a base Debian image.",
+          "type": "boolean"
         }
       },
       "type": "object"
@@ -3524,6 +3528,10 @@
           "description": "Whether to deploy this version in a container on a virtual machine.",
           "type": "boolean"
         },
+        "vpcAccessConnector": {
+          "$ref": "VpcAccessConnector",
+          "description": "Enables VPC connectivity for standard apps."
+        },
         "zones": {
           "description": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
           "items": {
@@ -3554,6 +3562,17 @@
       },
       "type": "object"
     },
+    "VpcAccessConnector": {
+      "description": "VPC access connector specification.",
+      "id": "VpcAccessConnector",
+      "properties": {
+        "name": {
+          "description": "Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "ZipInfo": {
       "description": "The zip file information for a zip deployment.",
       "id": "ZipInfo",
diff --git a/appengine/v1/appengine-gen.go b/appengine/v1/appengine-gen.go
index 17593cf..af28d84 100644
--- a/appengine/v1/appengine-gen.go
+++ b/appengine/v1/appengine-gen.go
@@ -1360,6 +1360,11 @@
 	// always true, this setting can be removed.
 	SplitHealthChecks bool `json:"splitHealthChecks,omitempty"`
 
+	// UseContainerOptimizedOs: If true, use Container-Optimized OS
+	// (https://cloud.google.com/container-optimized-os/) base image for
+	// VMs, rather than a base Debian image.
+	UseContainerOptimizedOs bool `json:"useContainerOptimizedOs,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "SplitHealthChecks")
 	// to unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -3532,6 +3537,9 @@
 	// machine.
 	Vm bool `json:"vm,omitempty"`
 
+	// VpcAccessConnector: Enables VPC connectivity for standard apps.
+	VpcAccessConnector *VpcAccessConnector `json:"vpcAccessConnector,omitempty"`
+
 	// Zones: The Google Compute Engine zones that are supported by this
 	// version in the App Engine flexible environment. Deprecated.
 	Zones []string `json:"zones,omitempty"`
@@ -3612,6 +3620,35 @@
 	return nil
 }
 
+// VpcAccessConnector: VPC access connector specification.
+type VpcAccessConnector struct {
+	// Name: Full Serverless VPC Access Connector name e.g.
+	// /projects/my-project/locations/us-central1/connectors/c1.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") 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. "Name") 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 *VpcAccessConnector) MarshalJSON() ([]byte, error) {
+	type NoMethod VpcAccessConnector
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // ZipInfo: The zip file information for a zip deployment.
 type ZipInfo struct {
 	// FilesCount: An estimate of the number of files in a zip for a zip
diff --git a/binaryauthorization/v1beta1/binaryauthorization-api.json b/binaryauthorization/v1beta1/binaryauthorization-api.json
index 6319e87..abde3a4 100644
--- a/binaryauthorization/v1beta1/binaryauthorization-api.json
+++ b/binaryauthorization/v1beta1/binaryauthorization-api.json
@@ -481,7 +481,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190320",
   "rootUrl": "https://binaryauthorization.googleapis.com/",
   "schemas": {
     "AdmissionRule": {
@@ -578,6 +578,10 @@
         "id": {
           "description": "The ID of this public key.\nSignatures verified by BinAuthz must include the ID of the public key that\ncan be used to verify them, and that ID must match the contents of this\nfield exactly.\nAdditional restrictions on this field can be imposed based on which public\nkey type is encapsulated. See the documentation on `public_key` cases below\nfor details.",
           "type": "string"
+        },
+        "pkixPublicKey": {
+          "$ref": "PkixPublicKey",
+          "description": "A raw PKIX SubjectPublicKeyInfo format public key.\n\nNOTE: `id` may be explicitly provided by the caller when using this\ntype of public key, but it MUST be a valid RFC3986 URI. If `id` is left\nblank, a default one will be computed based on the digest of the DER\nencoding of the public key."
         }
       },
       "type": "object"
@@ -588,7 +592,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
@@ -675,6 +679,49 @@
       },
       "type": "object"
     },
+    "PkixPublicKey": {
+      "description": "A public key in the PkixPublicKey format (see\nhttps://tools.ietf.org/html/rfc5280#section-4.1.2.7 for details).\nPublic keys of this type are typically textually encoded using the PEM\nformat.",
+      "id": "PkixPublicKey",
+      "properties": {
+        "publicKeyPem": {
+          "description": "A PEM-encoded public key, as described in\nhttps://tools.ietf.org/html/rfc7468#section-13",
+          "type": "string"
+        },
+        "signatureAlgorithm": {
+          "description": "The signature algorithm used to verify a message against a signature using\nthis key.\nThese signature algorithm must match the structure and any object\nidentifiers encoded in `public_key_pem` (i.e. this algorithm must match\nthat of the public key).",
+          "enum": [
+            "SIGNATURE_ALGORITHM_UNSPECIFIED",
+            "RSA_PSS_2048_SHA256",
+            "RSA_PSS_3072_SHA256",
+            "RSA_PSS_4096_SHA256",
+            "RSA_PSS_4096_SHA512",
+            "RSA_SIGN_PKCS1_2048_SHA256",
+            "RSA_SIGN_PKCS1_3072_SHA256",
+            "RSA_SIGN_PKCS1_4096_SHA256",
+            "RSA_SIGN_PKCS1_4096_SHA512",
+            "ECDSA_P256_SHA256",
+            "ECDSA_P384_SHA384",
+            "ECDSA_P521_SHA512"
+          ],
+          "enumDescriptions": [
+            "Not specified.",
+            "RSASSA-PSS 2048 bit key with a SHA256 digest.",
+            "RSASSA-PSS 3072 bit key with a SHA256 digest.",
+            "RSASSA-PSS 4096 bit key with a SHA256 digest.",
+            "RSASSA-PSS 4096 bit key with a SHA512 digest.",
+            "RSASSA-PKCS1-v1_5 with a 2048 bit key and a SHA256 digest.",
+            "RSASSA-PKCS1-v1_5 with a 3072 bit key and a SHA256 digest.",
+            "RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA256 digest.",
+            "RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA512 digest.",
+            "ECDSA on the NIST P-256 curve with a SHA256 digest.",
+            "ECDSA on the NIST P-384 curve with a SHA384 digest.",
+            "ECDSA on the NIST P-521 curve with a SHA512 digest."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Policy": {
       "description": "A policy for container image binary authorization.",
       "id": "Policy",
@@ -701,6 +748,20 @@
           "description": "Optional. A descriptive comment.",
           "type": "string"
         },
+        "globalPolicyEvaluationMode": {
+          "description": "Optional. Controls the evaluation of a Google-maintained global admission\npolicy for common system-level images. Images not covered by the global\npolicy will be subject to the project admission policy. This setting\nhas no effect when specified inside a global admission policy.",
+          "enum": [
+            "GLOBAL_POLICY_EVALUATION_MODE_UNSPECIFIED",
+            "ENABLE",
+            "DISABLE"
+          ],
+          "enumDescriptions": [
+            "Not specified: DISABLE is assumed.",
+            "Enables global policy evaluation.",
+            "Disables global policy evaluation."
+          ],
+          "type": "string"
+        },
         "name": {
           "description": "Output only. The resource name, in the format `projects/*/policy`. There is\nat most one policy per project.",
           "type": "string"
diff --git a/binaryauthorization/v1beta1/binaryauthorization-gen.go b/binaryauthorization/v1beta1/binaryauthorization-gen.go
index ecc6948..cced595 100644
--- a/binaryauthorization/v1beta1/binaryauthorization-gen.go
+++ b/binaryauthorization/v1beta1/binaryauthorization-gen.go
@@ -357,6 +357,18 @@
 	// for details.
 	Id string `json:"id,omitempty"`
 
+	// PkixPublicKey: A raw PKIX SubjectPublicKeyInfo format public
+	// key.
+	//
+	// NOTE: `id` may be explicitly provided by the caller when using
+	// this
+	// type of public key, but it MUST be a valid RFC3986 URI. If `id` is
+	// left
+	// blank, a default one will be computed based on the digest of the
+	// DER
+	// encoding of the public key.
+	PkixPublicKey *PkixPublicKey `json:"pkixPublicKey,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g.
 	// "AsciiArmoredPgpPublicKey") to unconditionally include in API
 	// requests. By default, fields with empty values are omitted from API
@@ -384,8 +396,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
@@ -672,6 +683,77 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// PkixPublicKey: A public key in the PkixPublicKey format
+// (see
+// https://tools.ietf.org/html/rfc5280#section-4.1.2.7 for
+// details).
+// Public keys of this type are typically textually encoded using the
+// PEM
+// format.
+type PkixPublicKey struct {
+	// PublicKeyPem: A PEM-encoded public key, as described
+	// in
+	// https://tools.ietf.org/html/rfc7468#section-13
+	PublicKeyPem string `json:"publicKeyPem,omitempty"`
+
+	// SignatureAlgorithm: The signature algorithm used to verify a message
+	// against a signature using
+	// this key.
+	// These signature algorithm must match the structure and any
+	// object
+	// identifiers encoded in `public_key_pem` (i.e. this algorithm must
+	// match
+	// that of the public key).
+	//
+	// Possible values:
+	//   "SIGNATURE_ALGORITHM_UNSPECIFIED" - Not specified.
+	//   "RSA_PSS_2048_SHA256" - RSASSA-PSS 2048 bit key with a SHA256
+	// digest.
+	//   "RSA_PSS_3072_SHA256" - RSASSA-PSS 3072 bit key with a SHA256
+	// digest.
+	//   "RSA_PSS_4096_SHA256" - RSASSA-PSS 4096 bit key with a SHA256
+	// digest.
+	//   "RSA_PSS_4096_SHA512" - RSASSA-PSS 4096 bit key with a SHA512
+	// digest.
+	//   "RSA_SIGN_PKCS1_2048_SHA256" - RSASSA-PKCS1-v1_5 with a 2048 bit
+	// key and a SHA256 digest.
+	//   "RSA_SIGN_PKCS1_3072_SHA256" - RSASSA-PKCS1-v1_5 with a 3072 bit
+	// key and a SHA256 digest.
+	//   "RSA_SIGN_PKCS1_4096_SHA256" - RSASSA-PKCS1-v1_5 with a 4096 bit
+	// key and a SHA256 digest.
+	//   "RSA_SIGN_PKCS1_4096_SHA512" - RSASSA-PKCS1-v1_5 with a 4096 bit
+	// key and a SHA512 digest.
+	//   "ECDSA_P256_SHA256" - ECDSA on the NIST P-256 curve with a SHA256
+	// digest.
+	//   "ECDSA_P384_SHA384" - ECDSA on the NIST P-384 curve with a SHA384
+	// digest.
+	//   "ECDSA_P521_SHA512" - ECDSA on the NIST P-521 curve with a SHA512
+	// digest.
+	SignatureAlgorithm string `json:"signatureAlgorithm,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PublicKeyPem") 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. "PublicKeyPem") 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 *PkixPublicKey) MarshalJSON() ([]byte, error) {
+	type NoMethod PkixPublicKey
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Policy: A policy for container image binary authorization.
 type Policy struct {
 	// AdmissionWhitelistPatterns: Optional. Admission policy whitelisting.
@@ -704,6 +786,21 @@
 	// Description: Optional. A descriptive comment.
 	Description string `json:"description,omitempty"`
 
+	// GlobalPolicyEvaluationMode: Optional. Controls the evaluation of a
+	// Google-maintained global admission
+	// policy for common system-level images. Images not covered by the
+	// global
+	// policy will be subject to the project admission policy. This
+	// setting
+	// has no effect when specified inside a global admission policy.
+	//
+	// Possible values:
+	//   "GLOBAL_POLICY_EVALUATION_MODE_UNSPECIFIED" - Not specified:
+	// DISABLE is assumed.
+	//   "ENABLE" - Enables global policy evaluation.
+	//   "DISABLE" - Disables global policy evaluation.
+	GlobalPolicyEvaluationMode string `json:"globalPolicyEvaluationMode,omitempty"`
+
 	// Name: Output only. The resource name, in the format
 	// `projects/*/policy`. There is
 	// at most one policy per project.
diff --git a/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-api.json b/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-api.json
index b5ca42d..656a395 100644
--- a/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-api.json
+++ b/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-api.json
@@ -967,7 +967,7 @@
       }
     }
   },
-  "revision": "20190309",
+  "revision": "20190316",
   "rootUrl": "https://cloudprivatecatalogproducer.googleapis.com/",
   "schemas": {
     "GoogleCloudPrivatecatalogproducerV1beta1Association": {
@@ -1259,7 +1259,7 @@
       "properties": {
         "condition": {
           "$ref": "GoogleTypeExpr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-gen.go b/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-gen.go
index bd7730b..1ce3481 100644
--- a/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-gen.go
+++ b/cloudprivatecatalogproducer/v1beta1/cloudprivatecatalogproducer-gen.go
@@ -1036,8 +1036,7 @@
 
 // GoogleIamV1Binding: Associates `members` with a `role`.
 type GoogleIamV1Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
diff --git a/cloudresourcemanager/v1/cloudresourcemanager-api.json b/cloudresourcemanager/v1/cloudresourcemanager-api.json
index 2a7da9d..107c39e 100644
--- a/cloudresourcemanager/v1/cloudresourcemanager-api.json
+++ b/cloudresourcemanager/v1/cloudresourcemanager-api.json
@@ -1170,7 +1170,7 @@
       }
     }
   },
-  "revision": "20190304",
+  "revision": "20190318",
   "rootUrl": "https://cloudresourcemanager.googleapis.com/",
   "schemas": {
     "Ancestor": {
@@ -1238,7 +1238,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
@@ -1987,7 +1987,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/cloudresourcemanager/v1/cloudresourcemanager-gen.go b/cloudresourcemanager/v1/cloudresourcemanager-gen.go
index 3a83067..d98e883 100644
--- a/cloudresourcemanager/v1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v1/cloudresourcemanager-gen.go
@@ -379,8 +379,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
@@ -2315,20 +2314,20 @@
 }
 
 // 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:
+// 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
+// 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
diff --git a/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json b/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json
index ba2bda8..eff7831 100644
--- a/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json
+++ b/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json
@@ -565,7 +565,7 @@
       }
     }
   },
-  "revision": "20190304",
+  "revision": "20190318",
   "rootUrl": "https://cloudresourcemanager.googleapis.com/",
   "schemas": {
     "Ancestor": {
@@ -633,7 +633,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go b/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
index bfc06e4..d38f52a 100644
--- a/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
@@ -343,8 +343,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
diff --git a/cloudresourcemanager/v2/cloudresourcemanager-api.json b/cloudresourcemanager/v2/cloudresourcemanager-api.json
index 1e0dc1e..0bffab0 100644
--- a/cloudresourcemanager/v2/cloudresourcemanager-api.json
+++ b/cloudresourcemanager/v2/cloudresourcemanager-api.json
@@ -449,7 +449,7 @@
       }
     }
   },
-  "revision": "20190304",
+  "revision": "20190318",
   "rootUrl": "https://cloudresourcemanager.googleapis.com/",
   "schemas": {
     "AuditConfig": {
@@ -506,7 +506,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
@@ -786,7 +786,7 @@
           "type": "string"
         },
         "query": {
-          "description": "Search criteria used to select the Folders to return.\nIf no search criteria is specified then all accessible folders will be\nreturned.\n\nQuery expressions can be used to restrict results based upon displayName,\nlifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe displayName field in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n|Query | Description|\n|----- | -----------|\n|displayName=Test* | Folders whose display name starts with \"Test\".|\n|lifecycleState=ACTIVE | Folders whose lifecycleState is ACTIVE.|\n|parent=folders/123 | Folders whose parent is \"folders/123\".|\n|parent=folders/123 AND lifecycleState=ACTIVE | Active folders whose parent is \"folders/123\".|\n|displayName=\\\\\"Test String\\\\\"|Folders whose display name includes both \"Test\" and \"String\".|",
+          "description": "Search criteria used to select the Folders to return.\nIf no search criteria is specified then all accessible folders will be\nreturned.\n\nQuery expressions can be used to restrict results based upon displayName,\nlifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe displayName field in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n|Query | Description|\n|----- | -----------|\n|displayName=Test* | Folders whose display name starts with \"Test\".|\n|lifecycleState=ACTIVE | Folders whose lifecycleState is ACTIVE.|\n|parent=folders/123 | Folders whose parent is \"folders/123\".|\n|parent=folders/123 AND lifecycleState=ACTIVE | Active folders whose parent\nis \"folders/123\".| |displayName=\\\\\"Test String\\\\\"|Folders whose display\nname includes both \"Test\" and \"String\".|",
           "type": "string"
         }
       },
@@ -827,7 +827,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/cloudresourcemanager/v2/cloudresourcemanager-gen.go b/cloudresourcemanager/v2/cloudresourcemanager-gen.go
index ea6a68c..ecbfffe 100644
--- a/cloudresourcemanager/v2/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v2/cloudresourcemanager-gen.go
@@ -315,8 +315,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
@@ -953,9 +952,10 @@
 	// |parent=folders/123 | Folders whose parent is
 	// "folders/123".|
 	// |parent=folders/123 AND lifecycleState=ACTIVE | Active folders whose
-	// parent is "folders/123".|
-	// |displayName=\\"Test String\\"|Folders whose display name includes
-	// both "Test" and "String".|
+	// parent
+	// is "folders/123".| |displayName=\\"Test String\\"|Folders whose
+	// display
+	// name includes both "Test" and "String".|
 	Query string `json:"query,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "PageSize") to
@@ -1063,20 +1063,20 @@
 }
 
 // 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:
+// 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
+// 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
diff --git a/cloudresourcemanager/v2beta1/cloudresourcemanager-api.json b/cloudresourcemanager/v2beta1/cloudresourcemanager-api.json
index b9b35c4..ed5391c 100644
--- a/cloudresourcemanager/v2beta1/cloudresourcemanager-api.json
+++ b/cloudresourcemanager/v2beta1/cloudresourcemanager-api.json
@@ -449,7 +449,7 @@
       }
     }
   },
-  "revision": "20190304",
+  "revision": "20190318",
   "rootUrl": "https://cloudresourcemanager.googleapis.com/",
   "schemas": {
     "AuditConfig": {
@@ -506,7 +506,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
@@ -786,7 +786,7 @@
           "type": "string"
         },
         "query": {
-          "description": "Search criteria used to select the Folders to return.\nIf no search criteria is specified then all accessible folders will be\nreturned.\n\nQuery expressions can be used to restrict results based upon displayName,\nlifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe displayName field in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n|Query | Description|\n|----- | -----------|\n|displayName=Test* | Folders whose display name starts with \"Test\".|\n|lifecycleState=ACTIVE | Folders whose lifecycleState is ACTIVE.|\n|parent=folders/123 | Folders whose parent is \"folders/123\".|\n|parent=folders/123 AND lifecycleState=ACTIVE | Active folders whose parent is \"folders/123\".|\n|displayName=\\\\\"Test String\\\\\"|Folders whose display name includes both \"Test\" and \"String\".|",
+          "description": "Search criteria used to select the Folders to return.\nIf no search criteria is specified then all accessible folders will be\nreturned.\n\nQuery expressions can be used to restrict results based upon displayName,\nlifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe displayName field in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n|Query | Description|\n|----- | -----------|\n|displayName=Test* | Folders whose display name starts with \"Test\".|\n|lifecycleState=ACTIVE | Folders whose lifecycleState is ACTIVE.|\n|parent=folders/123 | Folders whose parent is \"folders/123\".|\n|parent=folders/123 AND lifecycleState=ACTIVE | Active folders whose parent\nis \"folders/123\".| |displayName=\\\\\"Test String\\\\\"|Folders whose display\nname includes both \"Test\" and \"String\".|",
           "type": "string"
         }
       },
@@ -827,7 +827,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go b/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
index cb4db71..4b6b8b1 100644
--- a/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
@@ -315,8 +315,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
@@ -953,9 +952,10 @@
 	// |parent=folders/123 | Folders whose parent is
 	// "folders/123".|
 	// |parent=folders/123 AND lifecycleState=ACTIVE | Active folders whose
-	// parent is "folders/123".|
-	// |displayName=\\"Test String\\"|Folders whose display name includes
-	// both "Test" and "String".|
+	// parent
+	// is "folders/123".| |displayName=\\"Test String\\"|Folders whose
+	// display
+	// name includes both "Test" and "String".|
 	Query string `json:"query,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "PageSize") to
@@ -1063,20 +1063,20 @@
 }
 
 // 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:
+// 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
+// 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
diff --git a/cloudscheduler/v1beta1/cloudscheduler-api.json b/cloudscheduler/v1beta1/cloudscheduler-api.json
index a83e5d3..3858036 100644
--- a/cloudscheduler/v1beta1/cloudscheduler-api.json
+++ b/cloudscheduler/v1beta1/cloudscheduler-api.json
@@ -417,7 +417,7 @@
       }
     }
   },
-  "revision": "20190302",
+  "revision": "20190315",
   "rootUrl": "https://cloudscheduler.googleapis.com/",
   "schemas": {
     "AppEngineHttpTarget": {
@@ -795,7 +795,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/cloudscheduler/v1beta1/cloudscheduler-gen.go b/cloudscheduler/v1beta1/cloudscheduler-gen.go
index 6697166..4a404da 100644
--- a/cloudscheduler/v1beta1/cloudscheduler-gen.go
+++ b/cloudscheduler/v1beta1/cloudscheduler-gen.go
@@ -1054,20 +1054,20 @@
 }
 
 // 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:
+// 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
+// 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
diff --git a/cloudsearch/v1/cloudsearch-api.json b/cloudsearch/v1/cloudsearch-api.json
index 730d665..2f76c4d 100644
--- a/cloudsearch/v1/cloudsearch-api.json
+++ b/cloudsearch/v1/cloudsearch-api.json
@@ -765,7 +765,7 @@
                   ],
                   "parameters": {
                     "name": {
-                      "description": "Name of the Data Source to start a resumable upload.\nFormat: datasources/{source_id}",
+                      "description": "Name of the Item to start a resumable upload.\nFormat: datasources/{source_id}/items/{item_id}.",
                       "location": "path",
                       "pattern": "^datasources/[^/]+/items/[^/]+$",
                       "required": true,
@@ -1300,7 +1300,7 @@
     "stats": {
       "methods": {
         "getIndex": {
-          "description": "Gets indexed item statistics aggreggated across all data sources.",
+          "description": "Gets indexed item statistics aggreggated across all data sources. This\nAPI only returns statistics for previous dates; it doesn't return\nstatistics for the current day.",
           "flatPath": "v1/stats/index",
           "httpMethod": "GET",
           "id": "cloudsearch.stats.getIndex",
@@ -1429,7 +1429,7 @@
       }
     }
   },
-  "revision": "20190305",
+  "revision": "20190321",
   "rootUrl": "https://cloudsearch.googleapis.com/",
   "schemas": {
     "BooleanOperatorOptions": {
@@ -1510,7 +1510,7 @@
       "type": "object"
     },
     "DataSource": {
-      "description": "Frontend protos implement autoconverters for this message type. If you add\nfields to this proto, please add corresponding fields to the frontend proto\nwith the same names.\nLINT.IfChange",
+      "description": "Datasource is a logical namespace for items to be indexed.\nAll items must belong to a datasource.  This is the prerequisite before\nitems can be indexed into Cloud Search.",
       "id": "DataSource",
       "properties": {
         "disableModifications": {
@@ -1544,7 +1544,7 @@
           "type": "string"
         },
         "operationIds": {
-          "description": "IDs of the Long Running Operations (LROs) currently running for this schema.",
+          "description": "IDs of the Long Running Operations (LROs) currently running for this\nschema.",
           "items": {
             "type": "string"
           },
@@ -1959,12 +1959,12 @@
       "id": "FacetBucket",
       "properties": {
         "count": {
-          "description": "Number of results that match the bucket value.",
+          "description": "Number of results that match the bucket value. Counts are only returned\nfor searches when count accuracy is ensured. Can be empty.",
           "format": "int32",
           "type": "integer"
         },
         "percentage": {
-          "description": "Percent of results that match the bucket value. This value is between\n(0-100].\nThis may not be accurate and is a best effort estimate.",
+          "description": "Percent of results that match the bucket value. This value is between\n(0-100]. Percentages are returned for all searches, but are an estimate.\nBecause percentages are always returned, you should render percentages\ninstead of counts.",
           "format": "int32",
           "type": "integer"
         },
@@ -1978,6 +1978,11 @@
       "description": "Specifies operators to return facet results for. There will be one\nFacetResult for every source_name/object_type/operator_name combination.",
       "id": "FacetOptions",
       "properties": {
+        "numFacetBuckets": {
+          "description": "Maximum number of facet buckets that should be returned for this facet.\nDefaults to 10.\nMaximum value is 100.",
+          "format": "int32",
+          "type": "integer"
+        },
         "objectType": {
           "description": "If object_type is set, only those objects of that type will be used to\ncompute facets. If empty, then all objects will be used to compute facets.",
           "type": "string"
@@ -1998,7 +2003,7 @@
       "id": "FacetResult",
       "properties": {
         "buckets": {
-          "description": "FacetBuckets for values in response containing atleast a single result.",
+          "description": "FacetBuckets for values in response containing at least a single result.",
           "items": {
             "$ref": "FacetBucket"
           },
@@ -3805,7 +3810,7 @@
       "id": "ScoringConfig",
       "properties": {
         "disableFreshness": {
-          "description": "Whether to use freshness as a ranking signal. By default, freshness is used\nas a ranking signal.",
+          "description": "Whether to use freshness as a ranking signal. By default, freshness is used\nas a ranking signal. Note that this setting is not available in the Admin\nUI.",
           "type": "boolean"
         },
         "disablePersonalization": {
@@ -4051,7 +4056,7 @@
           "type": "string"
         },
         "url": {
-          "description": "The URL of the result.",
+          "description": "The URL of the search result. The URL contains a Google redirect to the\nactual item.",
           "type": "string"
         }
       },
@@ -4250,7 +4255,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/cloudsearch/v1/cloudsearch-gen.go b/cloudsearch/v1/cloudsearch-gen.go
index 1b8ef30..c4695ac 100644
--- a/cloudsearch/v1/cloudsearch-gen.go
+++ b/cloudsearch/v1/cloudsearch-gen.go
@@ -583,12 +583,11 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DataSource: Frontend protos implement autoconverters for this message
-// type. If you add
-// fields to this proto, please add corresponding fields to the frontend
-// proto
-// with the same names.
-// LINT.IfChange
+// DataSource: Datasource is a logical namespace for items to be
+// indexed.
+// All items must belong to a datasource.  This is the prerequisite
+// before
+// items can be indexed into Cloud Search.
 type DataSource struct {
 	// DisableModifications: If true, Indexing API rejects any modification
 	// calls to this datasource
@@ -627,7 +626,8 @@
 	Name string `json:"name,omitempty"`
 
 	// OperationIds: IDs of the Long Running Operations (LROs) currently
-	// running for this schema.
+	// running for this
+	// schema.
 	OperationIds []string `json:"operationIds,omitempty"`
 
 	// ShortName: A short name or alias for the source.  This value will be
@@ -1593,13 +1593,18 @@
 // type of the field bucketed.
 // FacetBucket is currently used only for returning the response object.
 type FacetBucket struct {
-	// Count: Number of results that match the bucket value.
+	// Count: Number of results that match the bucket value. Counts are only
+	// returned
+	// for searches when count accuracy is ensured. Can be empty.
 	Count int64 `json:"count,omitempty"`
 
 	// Percentage: Percent of results that match the bucket value. This
 	// value is between
-	// (0-100].
-	// This may not be accurate and is a best effort estimate.
+	// (0-100]. Percentages are returned for all searches, but are an
+	// estimate.
+	// Because percentages are always returned, you should render
+	// percentages
+	// instead of counts.
 	Percentage int64 `json:"percentage,omitempty"`
 
 	Value *Value `json:"value,omitempty"`
@@ -1632,6 +1637,12 @@
 // FacetResult for every source_name/object_type/operator_name
 // combination.
 type FacetOptions struct {
+	// NumFacetBuckets: Maximum number of facet buckets that should be
+	// returned for this facet.
+	// Defaults to 10.
+	// Maximum value is 100.
+	NumFacetBuckets int64 `json:"numFacetBuckets,omitempty"`
+
 	// ObjectType: If object_type is set, only those objects of that type
 	// will be used to
 	// compute facets. If empty, then all objects will be used to compute
@@ -1648,7 +1659,7 @@
 	// If empty, all data sources will be used.
 	SourceName string `json:"sourceName,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "ObjectType") to
+	// ForceSendFields is a list of field names (e.g. "NumFacetBuckets") 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
@@ -1656,12 +1667,13 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "ObjectType") 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. "NumFacetBuckets") 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:"-"`
 }
 
@@ -1673,7 +1685,7 @@
 
 // FacetResult: Source specific facet response
 type FacetResult struct {
-	// Buckets: FacetBuckets for values in response containing atleast a
+	// Buckets: FacetBuckets for values in response containing at least a
 	// single result.
 	Buckets []*FacetBucket `json:"buckets,omitempty"`
 
@@ -5066,7 +5078,9 @@
 type ScoringConfig struct {
 	// DisableFreshness: Whether to use freshness as a ranking signal. By
 	// default, freshness is used
-	// as a ranking signal.
+	// as a ranking signal. Note that this setting is not available in the
+	// Admin
+	// UI.
 	DisableFreshness bool `json:"disableFreshness,omitempty"`
 
 	// DisablePersonalization: Whether to personalize the results. By
@@ -5434,7 +5448,9 @@
 	// Title: Title of the search result.
 	Title string `json:"title,omitempty"`
 
-	// Url: The URL of the result.
+	// Url: The URL of the search result. The URL contains a Google redirect
+	// to the
+	// actual item.
 	Url string `json:"url,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "ClusteredResults") to
@@ -5814,20 +5830,20 @@
 }
 
 // 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:
+// 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
+// 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
@@ -9549,7 +9565,7 @@
 	//   ],
 	//   "parameters": {
 	//     "name": {
-	//       "description": "Name of the Data Source to start a resumable upload.\nFormat: datasources/{source_id}",
+	//       "description": "Name of the Item to start a resumable upload.\nFormat: datasources/{source_id}/items/{item_id}.",
 	//       "location": "path",
 	//       "pattern": "^datasources/[^/]+/items/[^/]+$",
 	//       "required": true,
@@ -12127,7 +12143,10 @@
 }
 
 // GetIndex: Gets indexed item statistics aggreggated across all data
-// sources.
+// sources. This
+// API only returns statistics for previous dates; it doesn't
+// return
+// statistics for the current day.
 func (r *StatsService) GetIndex() *StatsGetIndexCall {
 	c := &StatsGetIndexCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	return c
@@ -12270,7 +12289,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets indexed item statistics aggreggated across all data sources.",
+	//   "description": "Gets indexed item statistics aggreggated across all data sources. This\nAPI only returns statistics for previous dates; it doesn't return\nstatistics for the current day.",
 	//   "flatPath": "v1/stats/index",
 	//   "httpMethod": "GET",
 	//   "id": "cloudsearch.stats.getIndex",
diff --git a/cloudshell/v1/cloudshell-api.json b/cloudshell/v1/cloudshell-api.json
index 76328a1..d5f8783 100644
--- a/cloudshell/v1/cloudshell-api.json
+++ b/cloudshell/v1/cloudshell-api.json
@@ -228,7 +228,7 @@
       }
     }
   },
-  "revision": "20180602",
+  "revision": "20190318",
   "rootUrl": "https://cloudshell.googleapis.com/",
   "schemas": {
     "CancelOperationRequest": {
@@ -422,7 +422,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/cloudshell/v1/cloudshell-gen.go b/cloudshell/v1/cloudshell-gen.go
index 52b48fb..b0b8c64 100644
--- a/cloudshell/v1/cloudshell-gen.go
+++ b/cloudshell/v1/cloudshell-gen.go
@@ -501,20 +501,20 @@
 }
 
 // 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:
+// 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
+// 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
diff --git a/cloudshell/v1alpha1/cloudshell-api.json b/cloudshell/v1alpha1/cloudshell-api.json
index 29184b6..997d50a 100644
--- a/cloudshell/v1alpha1/cloudshell-api.json
+++ b/cloudshell/v1alpha1/cloudshell-api.json
@@ -287,7 +287,7 @@
       }
     }
   },
-  "revision": "20190227",
+  "revision": "20190318",
   "rootUrl": "https://cloudshell.googleapis.com/",
   "schemas": {
     "AuthorizeEnvironmentRequest": {
@@ -495,7 +495,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/cloudshell/v1alpha1/cloudshell-gen.go b/cloudshell/v1alpha1/cloudshell-gen.go
index 2650199..48a24d5 100644
--- a/cloudshell/v1alpha1/cloudshell-gen.go
+++ b/cloudshell/v1alpha1/cloudshell-gen.go
@@ -588,20 +588,20 @@
 }
 
 // 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:
+// 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
+// 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
diff --git a/cloudtasks/v2/cloudtasks-api.json b/cloudtasks/v2/cloudtasks-api.json
new file mode 100644
index 0000000..2abbee9
--- /dev/null
+++ b/cloudtasks/v2/cloudtasks-api.json
@@ -0,0 +1,1244 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://cloudtasks.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Cloud Tasks",
+  "description": "Manages the execution of large numbers of distributed requests.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/tasks/",
+  "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": "cloudtasks:v2",
+  "kind": "discovery#restDescription",
+  "name": "cloudtasks",
+  "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": "v2/projects/{projectsId}/locations/{locationsId}",
+              "httpMethod": "GET",
+              "id": "cloudtasks.projects.locations.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "Resource name for the location.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/locations/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v2/{+name}",
+              "response": {
+                "$ref": "Location"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists information about the supported locations for this service.",
+              "flatPath": "v2/projects/{projectsId}/locations",
+              "httpMethod": "GET",
+              "id": "cloudtasks.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": "v2/{+name}/locations",
+              "response": {
+                "$ref": "ListLocationsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          },
+          "resources": {
+            "queues": {
+              "methods": {
+                "create": {
+                  "description": "Creates a queue.\n\nQueues created with this method allow tasks to live for a maximum of 31\ndays. After a task is 31 days old, the task will be deleted regardless of whether\nit was dispatched or not.\n\nWARNING: Using this method may have unintended side effects if you are\nusing an App Engine `queue.yaml` or `queue.xml` file to manage your queues.\nRead\n[Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)\nbefore using this method.",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues",
+                  "httpMethod": "POST",
+                  "id": "cloudtasks.projects.locations.queues.create",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "Required.\n\nThe location name in which the queue will be created.\nFor example: `projects/PROJECT_ID/locations/LOCATION_ID`\n\nThe list of allowed locations can be obtained by calling Cloud\nTasks' implementation of\nListLocations.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+parent}/queues",
+                  "request": {
+                    "$ref": "Queue"
+                  },
+                  "response": {
+                    "$ref": "Queue"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "delete": {
+                  "description": "Deletes a queue.\n\nThis command will delete the queue even if it has tasks in it.\n\nNote: If you delete a queue, a queue with the same name can't be created\nfor 7 days.\n\nWARNING: Using this method may have unintended side effects if you are\nusing an App Engine `queue.yaml` or `queue.xml` file to manage your queues.\nRead\n[Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)\nbefore using this method.",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+                  "httpMethod": "DELETE",
+                  "id": "cloudtasks.projects.locations.queues.delete",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+name}",
+                  "response": {
+                    "$ref": "Empty"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "get": {
+                  "description": "Gets a queue.",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+                  "httpMethod": "GET",
+                  "id": "cloudtasks.projects.locations.queues.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required.\n\nThe resource name of the queue. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+name}",
+                  "response": {
+                    "$ref": "Queue"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "getIamPolicy": {
+                  "description": "Gets the access control policy for a Queue.\nReturns an empty policy if the resource exists and does not have a policy\nset.\n\nAuthorization requires the following\n[Google IAM](https://cloud.google.com/iam) permission on the specified\nresource parent:\n\n* `cloudtasks.queues.getIamPolicy`",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:getIamPolicy",
+                  "httpMethod": "POST",
+                  "id": "cloudtasks.projects.locations.queues.getIamPolicy",
+                  "parameterOrder": [
+                    "resource"
+                  ],
+                  "parameters": {
+                    "resource": {
+                      "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+resource}:getIamPolicy",
+                  "request": {
+                    "$ref": "GetIamPolicyRequest"
+                  },
+                  "response": {
+                    "$ref": "Policy"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists queues.\n\nQueues are returned in lexicographical order.",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues",
+                  "httpMethod": "GET",
+                  "id": "cloudtasks.projects.locations.queues.list",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "filter": {
+                      "description": "`filter` can be used to specify a subset of queues. Any Queue\nfield can be used as a filter and several operators as supported.\nFor example: `\u003c=, \u003c, \u003e=, \u003e, !=, =, :`. The filter syntax is the same as\ndescribed in\n[Stackdriver's Advanced Logs Filters](https://cloud.google.com/logging/docs/view/advanced_filters).\n\nSample filter \"state: PAUSED\".\n\nNote that using filters might cause fewer queues than the\nrequested page_size to be returned.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "pageSize": {
+                      "description": "Requested page size.\n\nThe maximum page size is 9800. If unspecified, the page size will\nbe the maximum. Fewer queues than requested might be returned,\neven if more queues exist; use the\nnext_page_token in the\nresponse to determine if more queues exist.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "A token identifying the page of results to return.\n\nTo request the first page results, page_token must be empty. To\nrequest the next page of results, page_token must be the value of\nnext_page_token returned\nfrom the previous call to ListQueues\nmethod. It is an error to switch the value of the\nfilter while iterating through pages.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "parent": {
+                      "description": "Required.\n\nThe location name.\nFor example: `projects/PROJECT_ID/locations/LOCATION_ID`",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+parent}/queues",
+                  "response": {
+                    "$ref": "ListQueuesResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "patch": {
+                  "description": "Updates a queue.\n\nThis method creates the queue if it does not exist and updates\nthe queue if it does exist.\n\nQueues created with this method allow tasks to live for a maximum of 31\ndays. After a task is 31 days old, the task will be deleted regardless of whether\nit was dispatched or not.\n\nWARNING: Using this method may have unintended side effects if you are\nusing an App Engine `queue.yaml` or `queue.xml` file to manage your queues.\nRead\n[Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)\nbefore using this method.",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+                  "httpMethod": "PATCH",
+                  "id": "cloudtasks.projects.locations.queues.patch",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Caller-specified and required in CreateQueue,\nafter which it becomes output only.\n\nThe queue name.\n\nThe queue name must have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`\n\n* `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),\n   hyphens (-), colons (:), or periods (.).\n   For more information, see\n   [Identifying\n   projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects)\n* `LOCATION_ID` is the canonical ID for the queue's location.\n   The list of available locations can be obtained by calling\n   ListLocations.\n   For more information, see https://cloud.google.com/about/locations/.\n* `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or\n  hyphens (-). The maximum length is 100 characters.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "updateMask": {
+                      "description": "A mask used to specify which fields of the queue are being updated.\n\nIf empty, then all fields will be updated.",
+                      "format": "google-fieldmask",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+name}",
+                  "request": {
+                    "$ref": "Queue"
+                  },
+                  "response": {
+                    "$ref": "Queue"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "pause": {
+                  "description": "Pauses the queue.\n\nIf a queue is paused then the system will stop dispatching tasks\nuntil the queue is resumed via\nResumeQueue. Tasks can still be added\nwhen the queue is paused. A queue is paused if its\nstate is PAUSED.",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:pause",
+                  "httpMethod": "POST",
+                  "id": "cloudtasks.projects.locations.queues.pause",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+name}:pause",
+                  "request": {
+                    "$ref": "PauseQueueRequest"
+                  },
+                  "response": {
+                    "$ref": "Queue"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "purge": {
+                  "description": "Purges a queue by deleting all of its tasks.\n\nAll tasks created before this method is called are permanently deleted.\n\nPurge operations can take up to one minute to take effect. Tasks\nmight be dispatched before the purge takes effect. A purge is irreversible.",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:purge",
+                  "httpMethod": "POST",
+                  "id": "cloudtasks.projects.locations.queues.purge",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+name}:purge",
+                  "request": {
+                    "$ref": "PurgeQueueRequest"
+                  },
+                  "response": {
+                    "$ref": "Queue"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "resume": {
+                  "description": "Resume a queue.\n\nThis method resumes a queue after it has been\nPAUSED or\nDISABLED. The state of a queue is stored\nin the queue's state; after calling this method it\nwill be set to RUNNING.\n\nWARNING: Resuming many high-QPS queues at the same time can\nlead to target overloading. If you are resuming high-QPS\nqueues, follow the 500/50/5 pattern described in\n[Managing Cloud Tasks Scaling Risks](https://cloud.google.com/tasks/docs/manage-cloud-task-scaling).",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:resume",
+                  "httpMethod": "POST",
+                  "id": "cloudtasks.projects.locations.queues.resume",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+name}:resume",
+                  "request": {
+                    "$ref": "ResumeQueueRequest"
+                  },
+                  "response": {
+                    "$ref": "Queue"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "setIamPolicy": {
+                  "description": "Sets the access control policy for a Queue. Replaces any existing\npolicy.\n\nNote: The Cloud Console does not check queue-level IAM permissions yet.\nProject-level permissions are required to use the Cloud Console.\n\nAuthorization requires the following\n[Google IAM](https://cloud.google.com/iam) permission on the specified\nresource parent:\n\n* `cloudtasks.queues.setIamPolicy`",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:setIamPolicy",
+                  "httpMethod": "POST",
+                  "id": "cloudtasks.projects.locations.queues.setIamPolicy",
+                  "parameterOrder": [
+                    "resource"
+                  ],
+                  "parameters": {
+                    "resource": {
+                      "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+resource}:setIamPolicy",
+                  "request": {
+                    "$ref": "SetIamPolicyRequest"
+                  },
+                  "response": {
+                    "$ref": "Policy"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "testIamPermissions": {
+                  "description": "Returns permissions that a caller has on a Queue.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
+                  "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:testIamPermissions",
+                  "httpMethod": "POST",
+                  "id": "cloudtasks.projects.locations.queues.testIamPermissions",
+                  "parameterOrder": [
+                    "resource"
+                  ],
+                  "parameters": {
+                    "resource": {
+                      "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v2/{+resource}:testIamPermissions",
+                  "request": {
+                    "$ref": "TestIamPermissionsRequest"
+                  },
+                  "response": {
+                    "$ref": "TestIamPermissionsResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              },
+              "resources": {
+                "tasks": {
+                  "methods": {
+                    "create": {
+                      "description": "Creates a task and adds it to a queue.\n\nTasks cannot be updated after creation; there is no UpdateTask command.\n\n* For App Engine queues, the maximum task size is\n  100KB.",
+                      "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks",
+                      "httpMethod": "POST",
+                      "id": "cloudtasks.projects.locations.queues.tasks.create",
+                      "parameterOrder": [
+                        "parent"
+                      ],
+                      "parameters": {
+                        "parent": {
+                          "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`\n\nThe queue must already exist.",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "v2/{+parent}/tasks",
+                      "request": {
+                        "$ref": "CreateTaskRequest"
+                      },
+                      "response": {
+                        "$ref": "Task"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    },
+                    "delete": {
+                      "description": "Deletes a task.\n\nA task can be deleted if it is scheduled or dispatched. A task\ncannot be deleted if it has executed successfully or permanently\nfailed.",
+                      "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}",
+                      "httpMethod": "DELETE",
+                      "id": "cloudtasks.projects.locations.queues.tasks.delete",
+                      "parameterOrder": [
+                        "name"
+                      ],
+                      "parameters": {
+                        "name": {
+                          "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "v2/{+name}",
+                      "response": {
+                        "$ref": "Empty"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    },
+                    "get": {
+                      "description": "Gets a task.",
+                      "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}",
+                      "httpMethod": "GET",
+                      "id": "cloudtasks.projects.locations.queues.tasks.get",
+                      "parameterOrder": [
+                        "name"
+                      ],
+                      "parameters": {
+                        "name": {
+                          "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        },
+                        "responseView": {
+                          "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Task resource.",
+                          "enum": [
+                            "VIEW_UNSPECIFIED",
+                            "BASIC",
+                            "FULL"
+                          ],
+                          "location": "query",
+                          "type": "string"
+                        }
+                      },
+                      "path": "v2/{+name}",
+                      "response": {
+                        "$ref": "Task"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    },
+                    "list": {
+                      "description": "Lists the tasks in a queue.\n\nBy default, only the BASIC view is retrieved\ndue to performance considerations;\nresponse_view controls the\nsubset of information which is returned.\n\nThe tasks may be returned in any order. The ordering may change at any\ntime.",
+                      "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks",
+                      "httpMethod": "GET",
+                      "id": "cloudtasks.projects.locations.queues.tasks.list",
+                      "parameterOrder": [
+                        "parent"
+                      ],
+                      "parameters": {
+                        "pageSize": {
+                          "description": "Requested page size. Fewer tasks than requested might be returned.\n\nThe maximum page size is 1000. If unspecified, the page size will\nbe the maximum. Fewer tasks than requested might be returned,\neven if more tasks exist; use\nnext_page_token in the\nresponse to determine if more tasks exist.",
+                          "format": "int32",
+                          "location": "query",
+                          "type": "integer"
+                        },
+                        "pageToken": {
+                          "description": "A token identifying the page of results to return.\n\nTo request the first page results, page_token must be empty. To\nrequest the next page of results, page_token must be the value of\nnext_page_token returned\nfrom the previous call to ListTasks\nmethod.\n\nThe page token is valid for only 2 hours.",
+                          "location": "query",
+                          "type": "string"
+                        },
+                        "parent": {
+                          "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        },
+                        "responseView": {
+                          "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Task resource.",
+                          "enum": [
+                            "VIEW_UNSPECIFIED",
+                            "BASIC",
+                            "FULL"
+                          ],
+                          "location": "query",
+                          "type": "string"
+                        }
+                      },
+                      "path": "v2/{+parent}/tasks",
+                      "response": {
+                        "$ref": "ListTasksResponse"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    },
+                    "run": {
+                      "description": "Forces a task to run now.\n\nWhen this method is called, Cloud Tasks will dispatch the task, even if\nthe task is already running, the queue has reached its RateLimits or\nis PAUSED.\n\nThis command is meant to be used for manual debugging. For\nexample, RunTask can be used to retry a failed\ntask after a fix has been made or to manually force a task to be\ndispatched now.\n\nThe dispatched task is returned. That is, the task that is returned\ncontains the status after the task is dispatched but\nbefore the task is received by its target.\n\nIf Cloud Tasks receives a successful response from the task's\ntarget, then the task will be deleted; otherwise the task's\nschedule_time will be reset to the time that\nRunTask was called plus the retry delay specified\nin the queue's RetryConfig.\n\nRunTask returns\nNOT_FOUND when it is called on a\ntask that has already succeeded or permanently failed.",
+                      "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}:run",
+                      "httpMethod": "POST",
+                      "id": "cloudtasks.projects.locations.queues.tasks.run",
+                      "parameterOrder": [
+                        "name"
+                      ],
+                      "parameters": {
+                        "name": {
+                          "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "v2/{+name}:run",
+                      "request": {
+                        "$ref": "RunTaskRequest"
+                      },
+                      "response": {
+                        "$ref": "Task"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20190314",
+  "rootUrl": "https://cloudtasks.googleapis.com/",
+  "schemas": {
+    "AppEngineHttpRequest": {
+      "description": "App Engine HTTP request.\n\nThe message defines the HTTP request that is sent to an App Engine app when\nthe task is dispatched.\n\nThis proto can only be used for tasks in a queue which has\napp_engine_http_queue set.\n\nUsing AppEngineHttpRequest requires\n[`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control)\nGoogle IAM permission for the project\nand the following scope:\n\n`https://www.googleapis.com/auth/cloud-platform`\n\nThe task will be delivered to the App Engine app which belongs to the same\nproject as the queue. For more information, see\n[How Requests are\nRouted](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed)\nand how routing is affected by\n[dispatch\nfiles](https://cloud.google.com/appengine/docs/python/config/dispatchref).\nTraffic is encrypted during transport and never leaves Google datacenters.\nBecause this traffic is carried over a communication mechanism internal to\nGoogle, you cannot explicitly set the protocol (for example, HTTP or HTTPS).\nThe request to the handler, however, will appear to have used the HTTP\nprotocol.\n\nThe AppEngineRouting used to construct the URL that the task is\ndelivered to can be set at the queue-level or task-level:\n\n* If set,\n   app_engine_routing_override\n   is used for all tasks in the queue, no matter what the setting\n   is for the\n   task-level app_engine_routing.\n\n\nThe `url` that the task will be sent to is:\n\n* `url =` host `+`\n  relative_uri\n\nTasks can be dispatched to secure app handlers, unsecure app handlers, and\nURIs restricted with\n[`login:\nadmin`](https://cloud.google.com/appengine/docs/standard/python/config/appref).\nBecause tasks are not run as any user, they cannot be dispatched to URIs\nrestricted with\n[`login:\nrequired`](https://cloud.google.com/appengine/docs/standard/python/config/appref)\nTask dispatches also do not follow redirects.\n\nThe task attempt has succeeded if the app's request handler returns\nan HTTP response code in the range [`200` - `299`]. `503` is\nconsidered an App Engine system error instead of an application\nerror. Requests returning error `503` will be retried regardless of\nretry configuration and not counted against retry counts.\nAny other response code or a failure to receive a response before the\ndeadline is a failed attempt.",
+      "id": "AppEngineHttpRequest",
+      "properties": {
+        "appEngineRouting": {
+          "$ref": "AppEngineRouting",
+          "description": "Task-level setting for App Engine routing.\n\nIf set,\napp_engine_routing_override\nis used for all tasks in the queue, no matter what the setting is for the\ntask-level app_engine_routing."
+        },
+        "body": {
+          "description": "HTTP request body.\n\nA request body is allowed only if the HTTP method is POST or PUT. It is\nan error to set a body on a task with an incompatible HttpMethod.",
+          "format": "byte",
+          "type": "string"
+        },
+        "headers": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "HTTP request headers.\n\nThis map contains the header field names and values.\nHeaders can be set when the\ntask is created.\nRepeated headers are not supported but a header value can contain commas.\n\nCloud Tasks sets some headers to default values:\n\n* `User-Agent`: By default, this header is\n  `\"AppEngine-Google; (+http://code.google.com/appengine)\"`.\n  This header can be modified, but Cloud Tasks will append\n  `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the\n  modified `User-Agent`.\n\nIf the task has a body, Cloud\nTasks sets the following headers:\n\n* `Content-Type`: By default, the `Content-Type` header is set to\n  `\"application/octet-stream\"`. The default can be overridden by explicitly\n  setting `Content-Type` to a particular media type when the\n  task is created.\n  For example, `Content-Type` can be set to `\"application/json\"`.\n* `Content-Length`: This is computed by Cloud Tasks. This value is\n  output only.   It cannot be changed.\n\nThe headers below cannot be set or overridden:\n\n* `Host`\n* `X-Google-*`\n* `X-AppEngine-*`\n\nIn addition, Cloud Tasks sets some headers when the task is dispatched,\nsuch as headers containing information about the task; see\n[request\nheaders](https://cloud.google.com/appengine/docs/python/taskqueue/push/creating-handlers#reading_request_headers).\nThese headers are set only when the task is dispatched, so they are not\nvisible when the task is returned in a Cloud Tasks response.\n\nAlthough there is no specific limit for the maximum number of headers or\nthe size, there is a limit on the maximum size of the Task. For more\ninformation, see the CreateTask documentation.",
+          "type": "object"
+        },
+        "httpMethod": {
+          "description": "The HTTP method to use for the request. The default is POST.\n\nThe app's request handler for the task's target URL must be able to handle\nHTTP requests with this http_method, otherwise the task attempt will fail\nwith error code 405 (Method Not Allowed). See\n[Writing a push task request\nhandler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler)\nand the documentation for the request handlers in the language your app is\nwritten in e.g.\n[Python Request\nHandler](https://cloud.google.com/appengine/docs/python/tools/webapp/requesthandlerclass).",
+          "enum": [
+            "HTTP_METHOD_UNSPECIFIED",
+            "POST",
+            "GET",
+            "HEAD",
+            "PUT",
+            "DELETE",
+            "PATCH",
+            "OPTIONS"
+          ],
+          "enumDescriptions": [
+            "HTTP method unspecified",
+            "HTTP POST",
+            "HTTP GET",
+            "HTTP HEAD",
+            "HTTP PUT",
+            "HTTP DELETE",
+            "HTTP PATCH",
+            "HTTP OPTIONS"
+          ],
+          "type": "string"
+        },
+        "relativeUri": {
+          "description": "The relative URI.\n\nThe relative URI must begin with \"/\" and must be a valid HTTP relative URI.\nIt can contain a path and query string arguments.\nIf the relative URI is empty, then the root path \"/\" will be used.\nNo spaces are allowed, and the maximum length allowed is 2083 characters.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "AppEngineRouting": {
+      "description": "App Engine Routing.\n\nDefines routing characteristics specific to App Engine - service, version,\nand instance.\n\nFor more information about services, versions, and instances see\n[An Overview of App\nEngine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine),\n[Microservices Architecture on Google App\nEngine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine),\n[App Engine Standard request\nrouting](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed),\nand [App Engine Flex request\nrouting](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
+      "id": "AppEngineRouting",
+      "properties": {
+        "host": {
+          "description": "Output only. The host that the task is sent to.\n\nThe host is constructed from the domain name of the app associated with\nthe queue's project ID (for example \u003capp-id\u003e.appspot.com), and the\nservice, version,\nand instance. Tasks which were created using\nthe App Engine SDK might have a custom domain name.\n\nFor more information, see\n[How Requests are\nRouted](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed).",
+          "type": "string"
+        },
+        "instance": {
+          "description": "App instance.\n\nBy default, the task is sent to an instance which is available when\nthe task is attempted.\n\nRequests can only be sent to a specific instance if\n[manual scaling is used in App Engine\nStandard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes).\nApp Engine Flex does not support instances. For more information, see\n[App Engine Standard request\nrouting](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed)\nand [App Engine Flex request\nrouting](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
+          "type": "string"
+        },
+        "service": {
+          "description": "App service.\n\nBy default, the task is sent to the service which is the default\nservice when the task is attempted.\n\nFor some queues or tasks which were created using the App Engine\nTask Queue API, host is not parsable\ninto service,\nversion, and\ninstance. For example, some tasks\nwhich were created using the App Engine SDK use a custom domain\nname; custom domains are not parsed by Cloud Tasks. If\nhost is not parsable, then\nservice,\nversion, and\ninstance are the empty string.",
+          "type": "string"
+        },
+        "version": {
+          "description": "App version.\n\nBy default, the task is sent to the version which is the default\nversion when the task is attempted.\n\nFor some queues or tasks which were created using the App Engine\nTask Queue API, host is not parsable\ninto service,\nversion, and\ninstance. For example, some tasks\nwhich were created using the App Engine SDK use a custom domain\nname; custom domains are not parsed by Cloud Tasks. If\nhost is not parsable, then\nservice,\nversion, and\ninstance are the empty string.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Attempt": {
+      "description": "The status of a task attempt.",
+      "id": "Attempt",
+      "properties": {
+        "dispatchTime": {
+          "description": "Output only. The time that this attempt was dispatched.\n\n`dispatch_time` will be truncated to the nearest microsecond.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "responseStatus": {
+          "$ref": "Status",
+          "description": "Output only. The response from the worker for this attempt.\n\nIf `response_time` is unset, then the task has not been attempted or is\ncurrently running and the `response_status` field is meaningless."
+        },
+        "responseTime": {
+          "description": "Output only. The time that this attempt response was received.\n\n`response_time` will be truncated to the nearest microsecond.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "scheduleTime": {
+          "description": "Output only. The time that this attempt was scheduled.\n\n`schedule_time` will be truncated to the nearest microsecond.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Binding": {
+      "description": "Associates `members` with a `role`.",
+      "id": "Binding",
+      "properties": {
+        "condition": {
+          "$ref": "Expr",
+          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+        },
+        "members": {
+          "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "role": {
+          "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "CreateTaskRequest": {
+      "description": "Request message for CreateTask.",
+      "id": "CreateTaskRequest",
+      "properties": {
+        "responseView": {
+          "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Task resource.",
+          "enum": [
+            "VIEW_UNSPECIFIED",
+            "BASIC",
+            "FULL"
+          ],
+          "enumDescriptions": [
+            "Unspecified. Defaults to BASIC.",
+            "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the\nbody in AppEngineHttpRequest.\nBodies are desirable to return only when needed, because they\ncan be large and because of the sensitivity of the data that you\nchoose to store in it.",
+            "All information is returned.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue resource."
+          ],
+          "type": "string"
+        },
+        "task": {
+          "$ref": "Task",
+          "description": "Required.\n\nThe task to add.\n\nTask names have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`.\nThe user can optionally specify a task name. If a\nname is not specified then the system will generate a random\nunique task id, which will be set in the task returned in the\nresponse.\n\nIf schedule_time is not set or is in the\npast then Cloud Tasks will set it to the current time.\n\nTask De-duplication:\n\nExplicitly specifying a task ID enables task de-duplication.  If\na task's ID is identical to that of an existing task or a task\nthat was deleted or executed recently then the call will fail\nwith ALREADY_EXISTS.\nIf the task's queue was created using Cloud Tasks, then another task with\nthe same name can't be created for ~1hour after the original task was\ndeleted or executed. If the task's queue was created using queue.yaml or\nqueue.xml, then another task with the same name can't be created\nfor ~9days after the original task was deleted or executed.\n\nBecause there is an extra lookup cost to identify duplicate task\nnames, these CreateTask calls have significantly\nincreased latency. Using hashed strings for the task id or for\nthe prefix of the task id is recommended. Choosing task ids that\nare sequential or have sequential prefixes, for example using a\ntimestamp, causes an increase in latency and error rates in all\ntask commands. The infrastructure relies on an approximately\nuniform distribution of task ids to store and serve tasks\nefficiently."
+        }
+      },
+      "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"
+    },
+    "Expr": {
+      "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) \u003e 0\"",
+      "id": "Expr",
+      "properties": {
+        "description": {
+          "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+          "type": "string"
+        },
+        "expression": {
+          "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
+          "type": "string"
+        },
+        "location": {
+          "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+          "type": "string"
+        },
+        "title": {
+          "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GetIamPolicyRequest": {
+      "description": "Request message for `GetIamPolicy` method.",
+      "id": "GetIamPolicyRequest",
+      "properties": {},
+      "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"
+    },
+    "ListQueuesResponse": {
+      "description": "Response message for ListQueues.",
+      "id": "ListQueuesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "A token to retrieve next page of results.\n\nTo return the next page of results, call\nListQueues with this value as the\npage_token.\n\nIf the next_page_token is empty, there are no more results.\n\nThe page token is valid for only 2 hours.",
+          "type": "string"
+        },
+        "queues": {
+          "description": "The list of queues.",
+          "items": {
+            "$ref": "Queue"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListTasksResponse": {
+      "description": "Response message for listing tasks using ListTasks.",
+      "id": "ListTasksResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "A token to retrieve next page of results.\n\nTo return the next page of results, call\nListTasks with this value as the\npage_token.\n\nIf the next_page_token is empty, there are no more results.",
+          "type": "string"
+        },
+        "tasks": {
+          "description": "The list of tasks.",
+          "items": {
+            "$ref": "Task"
+          },
+          "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"
+    },
+    "PauseQueueRequest": {
+      "description": "Request message for PauseQueue.",
+      "id": "PauseQueueRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "Policy": {
+      "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**JSON Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\"\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\n**YAML Example**\n\n    bindings:\n    - members:\n      - user:mike@example.com\n      - group:admins@example.com\n      - domain:google.com\n      - serviceAccount:my-other-app@appspot.gserviceaccount.com\n      role: roles/owner\n    - members:\n      - user:sean@example.com\n      role: roles/viewer\n\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam/docs).",
+      "id": "Policy",
+      "properties": {
+        "bindings": {
+          "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+          "items": {
+            "$ref": "Binding"
+          },
+          "type": "array"
+        },
+        "etag": {
+          "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+          "format": "byte",
+          "type": "string"
+        },
+        "version": {
+          "description": "Deprecated.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "PurgeQueueRequest": {
+      "description": "Request message for PurgeQueue.",
+      "id": "PurgeQueueRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "Queue": {
+      "description": "A queue is a container of related tasks. Queues are configured to manage\nhow those tasks are dispatched. Configurable properties include rate limits,\nretry options, queue types, and others.",
+      "id": "Queue",
+      "properties": {
+        "appEngineRoutingOverride": {
+          "$ref": "AppEngineRouting",
+          "description": "Overrides for\ntask-level app_engine_routing.\nThese settings apply only to\nApp Engine tasks in this queue.\n\nIf set, `app_engine_routing_override` is used for all\nApp Engine tasks in the queue, no matter what the\nsetting is for the\ntask-level app_engine_routing."
+        },
+        "name": {
+          "description": "Caller-specified and required in CreateQueue,\nafter which it becomes output only.\n\nThe queue name.\n\nThe queue name must have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`\n\n* `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),\n   hyphens (-), colons (:), or periods (.).\n   For more information, see\n   [Identifying\n   projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects)\n* `LOCATION_ID` is the canonical ID for the queue's location.\n   The list of available locations can be obtained by calling\n   ListLocations.\n   For more information, see https://cloud.google.com/about/locations/.\n* `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or\n  hyphens (-). The maximum length is 100 characters.",
+          "type": "string"
+        },
+        "purgeTime": {
+          "description": "Output only. The last time this queue was purged.\n\nAll tasks that were created before this time\nwere purged.\n\nA queue can be purged using PurgeQueue, the\n[App Engine Task Queue SDK, or the Cloud\nConsole](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue).\n\nPurge time will be truncated to the nearest microsecond. Purge\ntime will be unset if the queue has never been purged.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "rateLimits": {
+          "$ref": "RateLimits",
+          "description": "Rate limits for task dispatches.\n\nrate_limits and retry_config are\nrelated because they both control task attempts. However they control task\nattempts in different ways:\n\n* rate_limits controls the total rate of\n  dispatches from a queue (i.e. all traffic dispatched from the\n  queue, regardless of whether the dispatch is from a first\n  attempt or a retry).\n* retry_config controls what happens to\n  particular a task after its first attempt fails. That is,\n  retry_config controls task retries (the\n  second attempt, third attempt, etc).\n\nThe queue's actual dispatch rate is the result of:\n\n* Number of tasks in the queue\n* User-specified throttling: rate_limits,\n  retry_config, and the\n  queue's state.\n* System throttling due to `429` (Too Many Requests) or `503` (Service\n  Unavailable) responses from the worker, high error rates, or to smooth\n  sudden large traffic spikes."
+        },
+        "retryConfig": {
+          "$ref": "RetryConfig",
+          "description": "Settings that determine the retry behavior.\n\n* For tasks created using Cloud Tasks: the queue-level retry settings\n  apply to all tasks in the queue that were created using Cloud Tasks.\n  Retry settings cannot be set on individual tasks.\n* For tasks created using the App Engine SDK: the queue-level retry\n  settings apply to all tasks in the queue which do not have retry settings\n  explicitly set on the task and were created by the App Engine SDK. See\n  [App Engine\n  documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
+        },
+        "state": {
+          "description": "Output only. The state of the queue.\n\n`state` can only be changed by called\nPauseQueue,\nResumeQueue, or uploading\n[queue.yaml/xml](https://cloud.google.com/appengine/docs/python/config/queueref).\nUpdateQueue cannot be used to change `state`.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "RUNNING",
+            "PAUSED",
+            "DISABLED"
+          ],
+          "enumDescriptions": [
+            "Unspecified state.",
+            "The queue is running. Tasks can be dispatched.\n\nIf the queue was created using Cloud Tasks and the queue has\nhad no activity (method calls or task dispatches) for 30 days,\nthe queue may take a few minutes to re-activate. Some method\ncalls may return NOT_FOUND and\ntasks may not be dispatched for a few minutes until the queue\nhas been re-activated.",
+            "Tasks are paused by the user. If the queue is paused then Cloud\nTasks will stop delivering tasks from it, but more tasks can\nstill be added to it by the user.",
+            "The queue is disabled.\n\nA queue becomes `DISABLED` when\n[queue.yaml](https://cloud.google.com/appengine/docs/python/config/queueref)\nor\n[queue.xml](https://cloud.google.com/appengine/docs/standard/java/config/queueref)\nis uploaded which does not contain the queue. You cannot directly disable\na queue.\n\nWhen a queue is disabled, tasks can still be added to a queue\nbut the tasks are not dispatched.\n\nTo permanently delete this queue and all of its tasks, call\nDeleteQueue."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "RateLimits": {
+      "description": "Rate limits.\n\nThis message determines the maximum rate that tasks can be dispatched by a\nqueue, regardless of whether the dispatch is a first task attempt or a retry.\n\nNote: The debugging command, RunTask, will run a task\neven if the queue has reached its RateLimits.",
+      "id": "RateLimits",
+      "properties": {
+        "maxBurstSize": {
+          "description": "Output only. The max burst size.\n\nMax burst size limits how fast tasks in queue are processed when\nmany tasks are in the queue and the rate is high. This field\nallows the queue to have a high rate so processing starts shortly\nafter a task is enqueued, but still limits resource usage when\nmany tasks are enqueued in a short period of time.\n\nThe [token bucket](https://wikipedia.org/wiki/Token_Bucket)\nalgorithm is used to control the rate of task dispatches. Each\nqueue has a token bucket that holds tokens, up to the maximum\nspecified by `max_burst_size`. Each time a task is dispatched, a\ntoken is removed from the bucket. Tasks will be dispatched until\nthe queue's bucket runs out of tokens. The bucket will be\ncontinuously refilled with new tokens based on\nmax_dispatches_per_second.\n\nCloud Tasks will pick the value of `max_burst_size` based on the\nvalue of\nmax_dispatches_per_second.\n\nFor App Engine queues that were created or updated using\n`queue.yaml/xml`, `max_burst_size` is equal to\n[bucket_size](https://cloud.google.com/appengine/docs/standard/python/config/queueref#bucket_size).\nSince `max_burst_size` is output only, if\nUpdateQueue is called on a queue\ncreated by `queue.yaml/xml`, `max_burst_size` will be reset based\non the value of\nmax_dispatches_per_second,\nregardless of whether\nmax_dispatches_per_second\nis updated.\n",
+          "format": "int32",
+          "type": "integer"
+        },
+        "maxConcurrentDispatches": {
+          "description": "The maximum number of concurrent tasks that Cloud Tasks allows\nto be dispatched for this queue. After this threshold has been\nreached, Cloud Tasks stops dispatching tasks until the number of\nconcurrent requests decreases.\n\nIf unspecified when the queue is created, Cloud Tasks will pick the\ndefault.\n\n\nThe maximum allowed value is 5,000.\n\n\nThis field has the same meaning as\n[max_concurrent_requests in\nqueue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests).",
+          "format": "int32",
+          "type": "integer"
+        },
+        "maxDispatchesPerSecond": {
+          "description": "The maximum rate at which tasks are dispatched from this queue.\n\nIf unspecified when the queue is created, Cloud Tasks will pick the\ndefault.\n\n* For App Engine queues, the maximum allowed value\n  is 500.\n\n\nThis field has the same meaning as\n[rate in\nqueue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate).",
+          "format": "double",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
+    "ResumeQueueRequest": {
+      "description": "Request message for ResumeQueue.",
+      "id": "ResumeQueueRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "RetryConfig": {
+      "description": "Retry config.\n\nThese settings determine when a failed task attempt is retried.",
+      "id": "RetryConfig",
+      "properties": {
+        "maxAttempts": {
+          "description": "Number of attempts per task.\n\nCloud Tasks will attempt the task `max_attempts` times (that is, if the\nfirst attempt fails, then there will be `max_attempts - 1` retries). Must\nbe \u003e= -1.\n\nIf unspecified when the queue is created, Cloud Tasks will pick the\ndefault.\n\n-1 indicates unlimited attempts.\n\nThis field has the same meaning as\n[task_retry_limit in\nqueue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+          "format": "int32",
+          "type": "integer"
+        },
+        "maxBackoff": {
+          "description": "A task will be scheduled for retry between\nmin_backoff and\nmax_backoff duration after it fails,\nif the queue's RetryConfig specifies that the task should be\nretried.\n\nIf unspecified when the queue is created, Cloud Tasks will pick the\ndefault.\n\n\n`max_backoff` will be truncated to the nearest second.\n\nThis field has the same meaning as\n[max_backoff_seconds in\nqueue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "maxDoublings": {
+          "description": "The time between retries will double `max_doublings` times.\n\nA task's retry interval starts at\nmin_backoff, then doubles\n`max_doublings` times, then increases linearly, and finally\nretries retries at intervals of\nmax_backoff up to\nmax_attempts times.\n\nFor example, if min_backoff is 10s,\nmax_backoff is 300s, and\n`max_doublings` is 3, then the a task will first be retried in\n10s. The retry interval will double three times, and then\nincrease linearly by 2^3 * 10s.  Finally, the task will retry at\nintervals of max_backoff until the\ntask has been attempted max_attempts\ntimes. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s,\n240s, 300s, 300s, ....\n\nIf unspecified when the queue is created, Cloud Tasks will pick the\ndefault.\n\n\nThis field has the same meaning as\n[max_doublings in\nqueue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+          "format": "int32",
+          "type": "integer"
+        },
+        "maxRetryDuration": {
+          "description": "If positive, `max_retry_duration` specifies the time limit for\nretrying a failed task, measured from when the task was first\nattempted. Once `max_retry_duration` time has passed *and* the\ntask has been attempted max_attempts\ntimes, no further attempts will be made and the task will be\ndeleted.\n\nIf zero, then the task age is unlimited.\n\nIf unspecified when the queue is created, Cloud Tasks will pick the\ndefault.\n\n\n`max_retry_duration` will be truncated to the nearest second.\n\nThis field has the same meaning as\n[task_age_limit in\nqueue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "minBackoff": {
+          "description": "A task will be scheduled for retry between\nmin_backoff and\nmax_backoff duration after it fails,\nif the queue's RetryConfig specifies that the task should be\nretried.\n\nIf unspecified when the queue is created, Cloud Tasks will pick the\ndefault.\n\n\n`min_backoff` will be truncated to the nearest second.\n\nThis field has the same meaning as\n[min_backoff_seconds in\nqueue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "RunTaskRequest": {
+      "description": "Request message for forcing a task to run now using\nRunTask.",
+      "id": "RunTaskRequest",
+      "properties": {
+        "responseView": {
+          "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Task resource.",
+          "enum": [
+            "VIEW_UNSPECIFIED",
+            "BASIC",
+            "FULL"
+          ],
+          "enumDescriptions": [
+            "Unspecified. Defaults to BASIC.",
+            "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the\nbody in AppEngineHttpRequest.\nBodies are desirable to return only when needed, because they\ncan be large and because of the sensitivity of the data that you\nchoose to store in it.",
+            "All information is returned.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue resource."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "SetIamPolicyRequest": {
+      "description": "Request message for `SetIamPolicy` method.",
+      "id": "SetIamPolicyRequest",
+      "properties": {
+        "policy": {
+          "$ref": "Policy",
+          "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+        }
+      },
+      "type": "object"
+    },
+    "Status": {
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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"
+    },
+    "Task": {
+      "description": "A unit of scheduled work.",
+      "id": "Task",
+      "properties": {
+        "appEngineHttpRequest": {
+          "$ref": "AppEngineHttpRequest",
+          "description": "HTTP request that is sent to the App Engine app handler.\n\nAn App Engine task is a task that has AppEngineHttpRequest set."
+        },
+        "createTime": {
+          "description": "Output only. The time that the task was created.\n\n`create_time` will be truncated to the nearest second.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "dispatchCount": {
+          "description": "Output only. The number of attempts dispatched.\n\nThis count includes attempts which have been dispatched but haven't\nreceived a response.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "dispatchDeadline": {
+          "description": "The deadline for requests sent to the worker. If the worker does not\nrespond by this deadline then the request is cancelled and the attempt\nis marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry the\ntask according to the RetryConfig.\n\nNote that when the request is cancelled, Cloud Tasks will stop listing for\nthe response, but whether the worker stops processing depends on the\nworker. For example, if the worker is stuck, it may not react to cancelled\nrequests.\n\nThe default and maximum values depend on the type of request:\n\n\n* For App Engine tasks, 0 indicates that the\n  request has the default deadline. The default deadline depends on the\n  [scaling\n  type](https://cloud.google.com/appengine/docs/standard/go/how-instances-are-managed#instance_scaling)\n  of the service: 10 minutes for standard apps with automatic scaling, 24\n  hours for standard apps with manual and basic scaling, and 60 minutes for\n  flex apps. If the request deadline is set, it must be in the interval [15\n  seconds, 24 hours 15 seconds]. Regardless of the task's\n  `dispatch_deadline`, the app handler will not run for longer than than\n  the service's timeout. We recommend setting the `dispatch_deadline` to\n  at most a few seconds more than the app handler's timeout. For more\n  information see\n  [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-handlers#timeouts).\n\n`dispatch_deadline` will be truncated to the nearest millisecond. The\ndeadline is an approximate deadline.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "firstAttempt": {
+          "$ref": "Attempt",
+          "description": "Output only. The status of the task's first attempt.\n\nOnly dispatch_time will be set.\nThe other Attempt information is not retained by Cloud Tasks."
+        },
+        "lastAttempt": {
+          "$ref": "Attempt",
+          "description": "Output only. The status of the task's last attempt."
+        },
+        "name": {
+          "description": "Optionally caller-specified in CreateTask.\n\nThe task name.\n\nThe task name must have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`\n\n* `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),\n   hyphens (-), colons (:), or periods (.).\n   For more information, see\n   [Identifying\n   projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects)\n* `LOCATION_ID` is the canonical ID for the task's location.\n   The list of available locations can be obtained by calling\n   ListLocations.\n   For more information, see https://cloud.google.com/about/locations/.\n* `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or\n  hyphens (-). The maximum length is 100 characters.\n* `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]),\n  hyphens (-), or underscores (_). The maximum length is 500 characters.",
+          "type": "string"
+        },
+        "responseCount": {
+          "description": "Output only. The number of attempts which have received a response.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "scheduleTime": {
+          "description": "The time when the task is scheduled to be attempted.\n\nFor App Engine queues, this is when the task will be attempted or retried.\n\n`schedule_time` will be truncated to the nearest microsecond.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "view": {
+          "description": "Output only. The view specifies which subset of the Task has\nbeen returned.",
+          "enum": [
+            "VIEW_UNSPECIFIED",
+            "BASIC",
+            "FULL"
+          ],
+          "enumDescriptions": [
+            "Unspecified. Defaults to BASIC.",
+            "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the\nbody in AppEngineHttpRequest.\nBodies are desirable to return only when needed, because they\ncan be large and because of the sensitivity of the data that you\nchoose to store in it.",
+            "All information is returned.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue resource."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "TestIamPermissionsRequest": {
+      "description": "Request message for `TestIamPermissions` method.",
+      "id": "TestIamPermissionsRequest",
+      "properties": {
+        "permissions": {
+          "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "TestIamPermissionsResponse": {
+      "description": "Response message for `TestIamPermissions` method.",
+      "id": "TestIamPermissionsResponse",
+      "properties": {
+        "permissions": {
+          "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Cloud Tasks API",
+  "version": "v2",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/cloudtasks/v2/cloudtasks-gen.go b/cloudtasks/v2/cloudtasks-gen.go
new file mode 100644
index 0000000..f91061b
--- /dev/null
+++ b/cloudtasks/v2/cloudtasks-gen.go
@@ -0,0 +1,5006 @@
+// Copyright 2019 Google LLC.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package cloudtasks provides access to the Cloud Tasks API.
+//
+// This package is DEPRECATED. Use package cloud.google.com/go/cloudtasks/apiv2beta2 instead.
+//
+// For product documentation, see: https://cloud.google.com/tasks/
+//
+// Creating a client
+//
+// Usage example:
+//
+//   import "google.golang.org/api/cloudtasks/v2"
+//   ...
+//   ctx := context.Background()
+//   cloudtasksService, err := cloudtasks.NewService(ctx)
+//
+// In this example, Google Application Default Credentials are used for authentication.
+//
+// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
+//
+// Other authentication options
+//
+// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
+//
+//   cloudtasksService, err := cloudtasks.NewService(ctx, option.WithAPIKey("AIza..."))
+//
+// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
+//
+//   config := &oauth2.Config{...}
+//   // ...
+//   token, err := config.Exchange(ctx, ...)
+//   cloudtasksService, err := cloudtasks.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
+//
+// See https://godoc.org/google.golang.org/api/option/ for details on options.
+package cloudtasks // import "google.golang.org/api/cloudtasks/v2"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	option "google.golang.org/api/option"
+	htransport "google.golang.org/api/transport/http"
+)
+
+// 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
+
+const apiId = "cloudtasks:v2"
+const apiName = "cloudtasks"
+const apiVersion = "v2"
+const basePath = "https://cloudtasks.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"
+)
+
+// NewService creates a new Service.
+func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
+	scopesOption := option.WithScopes(
+		"https://www.googleapis.com/auth/cloud-platform",
+	)
+	// NOTE: prepend, so we don't override user-specified scopes.
+	opts = append([]option.ClientOption{scopesOption}, opts...)
+	client, endpoint, err := htransport.NewClient(ctx, opts...)
+	if err != nil {
+		return nil, err
+	}
+	s, err := New(client)
+	if err != nil {
+		return nil, err
+	}
+	if endpoint != "" {
+		s.BasePath = endpoint
+	}
+	return s, nil
+}
+
+// New creates a new Service. It uses the provided http.Client for requests.
+//
+// Deprecated: please use NewService instead.
+// To provide a custom HTTP client, use option.WithHTTPClient.
+// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
+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.Queues = NewProjectsLocationsQueuesService(s)
+	return rs
+}
+
+type ProjectsLocationsService struct {
+	s *Service
+
+	Queues *ProjectsLocationsQueuesService
+}
+
+func NewProjectsLocationsQueuesService(s *Service) *ProjectsLocationsQueuesService {
+	rs := &ProjectsLocationsQueuesService{s: s}
+	rs.Tasks = NewProjectsLocationsQueuesTasksService(s)
+	return rs
+}
+
+type ProjectsLocationsQueuesService struct {
+	s *Service
+
+	Tasks *ProjectsLocationsQueuesTasksService
+}
+
+func NewProjectsLocationsQueuesTasksService(s *Service) *ProjectsLocationsQueuesTasksService {
+	rs := &ProjectsLocationsQueuesTasksService{s: s}
+	return rs
+}
+
+type ProjectsLocationsQueuesTasksService struct {
+	s *Service
+}
+
+// AppEngineHttpRequest: App Engine HTTP request.
+//
+// The message defines the HTTP request that is sent to an App Engine
+// app when
+// the task is dispatched.
+//
+// This proto can only be used for tasks in a queue which
+// has
+// app_engine_http_queue set.
+//
+// Using AppEngineHttpRequest
+// requires
+// [`appengine.applications.get`](https://cloud.google.com/appen
+// gine/docs/admin-api/access-control)
+// Google IAM permission for the project
+// and the following
+// scope:
+//
+// `https://www.googleapis.com/auth/cloud-platform`
+//
+// The task will be delivered to the App Engine app which belongs to the
+// same
+// project as the queue. For more information, see
+// [How Requests
+// are
+// Routed](https://cloud.google.com/appengine/docs/standard/python/ho
+// w-requests-are-routed)
+// and how routing is affected
+// by
+// [dispatch
+// files](https://cloud.google.com/appengine/docs/python/con
+// fig/dispatchref).
+// Traffic is encrypted during transport and never leaves Google
+// datacenters.
+// Because this traffic is carried over a communication mechanism
+// internal to
+// Google, you cannot explicitly set the protocol (for example, HTTP or
+// HTTPS).
+// The request to the handler, however, will appear to have used the
+// HTTP
+// protocol.
+//
+// The AppEngineRouting used to construct the URL that the task
+// is
+// delivered to can be set at the queue-level or task-level:
+//
+// * If set,
+//    app_engine_routing_override
+//    is used for all tasks in the queue, no matter what the setting
+//    is for the
+//    task-level app_engine_routing.
+//
+//
+// The `url` that the task will be sent to is:
+//
+// * `url =` host `+`
+//   relative_uri
+//
+// Tasks can be dispatched to secure app handlers, unsecure app
+// handlers, and
+// URIs restricted
+// with
+// [`login:
+// admin`](https://cloud.google.com/appengine/docs/standard
+// /python/config/appref).
+// Because tasks are not run as any user, they cannot be dispatched to
+// URIs
+// restricted
+// with
+// [`login:
+// required`](https://cloud.google.com/appengine/docs/stand
+// ard/python/config/appref)
+// Task dispatches also do not follow redirects.
+//
+// The task attempt has succeeded if the app's request handler
+// returns
+// an HTTP response code in the range [`200` - `299`]. `503`
+// is
+// considered an App Engine system error instead of an
+// application
+// error. Requests returning error `503` will be retried regardless
+// of
+// retry configuration and not counted against retry counts.
+// Any other response code or a failure to receive a response before
+// the
+// deadline is a failed attempt.
+type AppEngineHttpRequest struct {
+	// AppEngineRouting: Task-level setting for App Engine routing.
+	//
+	// If set,
+	// app_engine_routing_override
+	// is used for all tasks in the queue, no matter what the setting is for
+	// the
+	// task-level app_engine_routing.
+	AppEngineRouting *AppEngineRouting `json:"appEngineRouting,omitempty"`
+
+	// Body: HTTP request body.
+	//
+	// A request body is allowed only if the HTTP method is POST or PUT. It
+	// is
+	// an error to set a body on a task with an incompatible HttpMethod.
+	Body string `json:"body,omitempty"`
+
+	// Headers: HTTP request headers.
+	//
+	// This map contains the header field names and values.
+	// Headers can be set when the
+	// task is created.
+	// Repeated headers are not supported but a header value can contain
+	// commas.
+	//
+	// Cloud Tasks sets some headers to default values:
+	//
+	// * `User-Agent`: By default, this header is
+	//   "AppEngine-Google; (+http://code.google.com/appengine)".
+	//   This header can be modified, but Cloud Tasks will append
+	//   "AppEngine-Google; (+http://code.google.com/appengine)" to the
+	//   modified `User-Agent`.
+	//
+	// If the task has a body, Cloud
+	// Tasks sets the following headers:
+	//
+	// * `Content-Type`: By default, the `Content-Type` header is set to
+	//   "application/octet-stream". The default can be overridden by
+	// explicitly
+	//   setting `Content-Type` to a particular media type when the
+	//   task is created.
+	//   For example, `Content-Type` can be set to "application/json".
+	// * `Content-Length`: This is computed by Cloud Tasks. This value is
+	//   output only.   It cannot be changed.
+	//
+	// The headers below cannot be set or overridden:
+	//
+	// * `Host`
+	// * `X-Google-*`
+	// * `X-AppEngine-*`
+	//
+	// In addition, Cloud Tasks sets some headers when the task is
+	// dispatched,
+	// such as headers containing information about the task;
+	// see
+	// [request
+	// headers](https://cloud.google.com/appengine/docs/python/t
+	// askqueue/push/creating-handlers#reading_request_headers).
+	// These headers are set only when the task is dispatched, so they are
+	// not
+	// visible when the task is returned in a Cloud Tasks
+	// response.
+	//
+	// Although there is no specific limit for the maximum number of headers
+	// or
+	// the size, there is a limit on the maximum size of the Task. For
+	// more
+	// information, see the CreateTask documentation.
+	Headers map[string]string `json:"headers,omitempty"`
+
+	// HttpMethod: The HTTP method to use for the request. The default is
+	// POST.
+	//
+	// The app's request handler for the task's target URL must be able to
+	// handle
+	// HTTP requests with this http_method, otherwise the task attempt will
+	// fail
+	// with error code 405 (Method Not Allowed). See
+	// [Writing a push task
+	// request
+	// handler](https://cloud.google.com/appengine/docs/java/taskqueu
+	// e/push/creating-handlers#writing_a_push_task_request_handler)
+	// and the documentation for the request handlers in the language your
+	// app is
+	// written in e.g.
+	// [Python
+	// Request
+	// Handler](https://cloud.google.com/appengine/docs/python/tools/
+	// webapp/requesthandlerclass).
+	//
+	// Possible values:
+	//   "HTTP_METHOD_UNSPECIFIED" - HTTP method unspecified
+	//   "POST" - HTTP POST
+	//   "GET" - HTTP GET
+	//   "HEAD" - HTTP HEAD
+	//   "PUT" - HTTP PUT
+	//   "DELETE" - HTTP DELETE
+	//   "PATCH" - HTTP PATCH
+	//   "OPTIONS" - HTTP OPTIONS
+	HttpMethod string `json:"httpMethod,omitempty"`
+
+	// RelativeUri: The relative URI.
+	//
+	// The relative URI must begin with "/" and must be a valid HTTP
+	// relative URI.
+	// It can contain a path and query string arguments.
+	// If the relative URI is empty, then the root path "/" will be used.
+	// No spaces are allowed, and the maximum length allowed is 2083
+	// characters.
+	RelativeUri string `json:"relativeUri,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AppEngineRouting") 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. "AppEngineRouting") 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 *AppEngineHttpRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod AppEngineHttpRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AppEngineRouting: App Engine Routing.
+//
+// Defines routing characteristics specific to App Engine - service,
+// version,
+// and instance.
+//
+// For more information about services, versions, and instances see
+// [An Overview of
+// App
+// Engine](https://cloud.google.com/appengine/docs/python/an-overview
+// -of-app-engine),
+// [Microservices Architecture on Google
+// App
+// Engine](https://cloud.google.com/appengine/docs/python/microservic
+// es-on-app-engine),
+// [App Engine Standard
+// request
+// routing](https://cloud.google.com/appengine/docs/standard/pyth
+// on/how-requests-are-routed),
+// and [App Engine Flex
+// request
+// routing](https://cloud.google.com/appengine/docs/flexible/pyth
+// on/how-requests-are-routed).
+type AppEngineRouting struct {
+	// Host: Output only. The host that the task is sent to.
+	//
+	// The host is constructed from the domain name of the app associated
+	// with
+	// the queue's project ID (for example <app-id>.appspot.com), and
+	// the
+	// service, version,
+	// and instance. Tasks which were created using
+	// the App Engine SDK might have a custom domain name.
+	//
+	// For more information, see
+	// [How Requests
+	// are
+	// Routed](https://cloud.google.com/appengine/docs/standard/python/ho
+	// w-requests-are-routed).
+	Host string `json:"host,omitempty"`
+
+	// Instance: App instance.
+	//
+	// By default, the task is sent to an instance which is available
+	// when
+	// the task is attempted.
+	//
+	// Requests can only be sent to a specific instance if
+	// [manual scaling is used in App
+	// Engine
+	// Standard](https://cloud.google.com/appengine/docs/python/an-ove
+	// rview-of-app-engine?hl=en_US#scaling_types_and_instance_classes).
+	// App Engine Flex does not support instances. For more information,
+	// see
+	// [App Engine Standard
+	// request
+	// routing](https://cloud.google.com/appengine/docs/standard/pyth
+	// on/how-requests-are-routed)
+	// and [App Engine Flex
+	// request
+	// routing](https://cloud.google.com/appengine/docs/flexible/pyth
+	// on/how-requests-are-routed).
+	Instance string `json:"instance,omitempty"`
+
+	// Service: App service.
+	//
+	// By default, the task is sent to the service which is the
+	// default
+	// service when the task is attempted.
+	//
+	// For some queues or tasks which were created using the App Engine
+	// Task Queue API, host is not parsable
+	// into service,
+	// version, and
+	// instance. For example, some tasks
+	// which were created using the App Engine SDK use a custom domain
+	// name; custom domains are not parsed by Cloud Tasks. If
+	// host is not parsable, then
+	// service,
+	// version, and
+	// instance are the empty string.
+	Service string `json:"service,omitempty"`
+
+	// Version: App version.
+	//
+	// By default, the task is sent to the version which is the
+	// default
+	// version when the task is attempted.
+	//
+	// For some queues or tasks which were created using the App Engine
+	// Task Queue API, host is not parsable
+	// into service,
+	// version, and
+	// instance. For example, some tasks
+	// which were created using the App Engine SDK use a custom domain
+	// name; custom domains are not parsed by Cloud Tasks. If
+	// host is not parsable, then
+	// service,
+	// version, and
+	// instance are the empty string.
+	Version string `json:"version,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Host") 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. "Host") 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 *AppEngineRouting) MarshalJSON() ([]byte, error) {
+	type NoMethod AppEngineRouting
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Attempt: The status of a task attempt.
+type Attempt struct {
+	// DispatchTime: Output only. The time that this attempt was
+	// dispatched.
+	//
+	// `dispatch_time` will be truncated to the nearest microsecond.
+	DispatchTime string `json:"dispatchTime,omitempty"`
+
+	// ResponseStatus: Output only. The response from the worker for this
+	// attempt.
+	//
+	// If `response_time` is unset, then the task has not been attempted or
+	// is
+	// currently running and the `response_status` field is meaningless.
+	ResponseStatus *Status `json:"responseStatus,omitempty"`
+
+	// ResponseTime: Output only. The time that this attempt response was
+	// received.
+	//
+	// `response_time` will be truncated to the nearest microsecond.
+	ResponseTime string `json:"responseTime,omitempty"`
+
+	// ScheduleTime: Output only. The time that this attempt was
+	// scheduled.
+	//
+	// `schedule_time` will be truncated to the nearest microsecond.
+	ScheduleTime string `json:"scheduleTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DispatchTime") 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. "DispatchTime") 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 *Attempt) MarshalJSON() ([]byte, error) {
+	type NoMethod Attempt
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Binding: Associates `members` with a `role`.
+type Binding struct {
+	// Condition: Unimplemented. The condition that is associated with this
+	// binding.
+	// NOTE: an unsatisfied condition will not allow user access via
+	// current
+	// binding. Different bindings, including their conditions, are
+	// examined
+	// independently.
+	Condition *Expr `json:"condition,omitempty"`
+
+	// Members: Specifies the identities requesting access for a Cloud
+	// Platform resource.
+	// `members` can have the following values:
+	//
+	// * `allUsers`: A special identifier that represents anyone who is
+	//    on the internet; with or without a Google account.
+	//
+	// * `allAuthenticatedUsers`: A special identifier that represents
+	// anyone
+	//    who is authenticated with a Google account or a service
+	// account.
+	//
+	// * `user:{emailid}`: An email address that represents a specific
+	// Google
+	//    account. For example, `alice@gmail.com` .
+	//
+	//
+	// * `serviceAccount:{emailid}`: An email address that represents a
+	// service
+	//    account. For example,
+	// `my-other-app@appspot.gserviceaccount.com`.
+	//
+	// * `group:{emailid}`: An email address that represents a Google
+	// group.
+	//    For example, `admins@example.com`.
+	//
+	//
+	// * `domain:{domain}`: The G Suite domain (primary) that represents all
+	// the
+	//    users of that domain. For example, `google.com` or
+	// `example.com`.
+	//
+	//
+	Members []string `json:"members,omitempty"`
+
+	// Role: Role that is assigned to `members`.
+	// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+	Role string `json:"role,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Condition") 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. "Condition") 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 *Binding) MarshalJSON() ([]byte, error) {
+	type NoMethod Binding
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CreateTaskRequest: Request message for CreateTask.
+type CreateTaskRequest struct {
+	// ResponseView: The response_view specifies which subset of the Task
+	// will be
+	// returned.
+	//
+	// By default response_view is BASIC; not all
+	// information is retrieved by default because some data, such
+	// as
+	// payloads, might be desirable to return only when needed because
+	// of its large size or because of the sensitivity of data that
+	// it
+	// contains.
+	//
+	// Authorization for FULL requires
+	// `cloudtasks.tasks.fullView` [Google
+	// IAM](https://cloud.google.com/iam/)
+	// permission on the Task resource.
+	//
+	// Possible values:
+	//   "VIEW_UNSPECIFIED" - Unspecified. Defaults to BASIC.
+	//   "BASIC" - The basic view omits fields which can be large or can
+	// contain
+	// sensitive data.
+	//
+	// This view does not include the
+	// body in AppEngineHttpRequest.
+	// Bodies are desirable to return only when needed, because they
+	// can be large and because of the sensitivity of the data that
+	// you
+	// choose to store in it.
+	//   "FULL" - All information is returned.
+	//
+	// Authorization for FULL requires
+	// `cloudtasks.tasks.fullView` [Google
+	// IAM](https://cloud.google.com/iam/)
+	// permission on the Queue resource.
+	ResponseView string `json:"responseView,omitempty"`
+
+	// Task: Required.
+	//
+	// The task to add.
+	//
+	// Task names have the following
+	// format:
+	// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tas
+	// ks/TASK_ID`.
+	// The user can optionally specify a task name. If a
+	// name is not specified then the system will generate a random
+	// unique task id, which will be set in the task returned in
+	// the
+	// response.
+	//
+	// If schedule_time is not set or is in the
+	// past then Cloud Tasks will set it to the current time.
+	//
+	// Task De-duplication:
+	//
+	// Explicitly specifying a task ID enables task de-duplication.  If
+	// a task's ID is identical to that of an existing task or a task
+	// that was deleted or executed recently then the call will fail
+	// with ALREADY_EXISTS.
+	// If the task's queue was created using Cloud Tasks, then another task
+	// with
+	// the same name can't be created for ~1hour after the original task
+	// was
+	// deleted or executed. If the task's queue was created using queue.yaml
+	// or
+	// queue.xml, then another task with the same name can't be created
+	// for ~9days after the original task was deleted or executed.
+	//
+	// Because there is an extra lookup cost to identify duplicate
+	// task
+	// names, these CreateTask calls have significantly
+	// increased latency. Using hashed strings for the task id or for
+	// the prefix of the task id is recommended. Choosing task ids that
+	// are sequential or have sequential prefixes, for example using
+	// a
+	// timestamp, causes an increase in latency and error rates in all
+	// task commands. The infrastructure relies on an approximately
+	// uniform distribution of task ids to store and serve
+	// tasks
+	// efficiently.
+	Task *Task `json:"task,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ResponseView") 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. "ResponseView") 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 *CreateTaskRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod CreateTaskRequest
+	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:"-"`
+}
+
+// Expr: Represents an expression text. Example:
+//
+//     title: "User account presence"
+//     description: "Determines whether the request has a user account"
+//     expression: "size(request.user) > 0"
+type Expr struct {
+	// Description: An optional description of the expression. This is a
+	// longer text which
+	// describes the expression, e.g. when hovered over it in a UI.
+	Description string `json:"description,omitempty"`
+
+	// Expression: Textual representation of an expression in
+	// Common Expression Language syntax.
+	//
+	// The application context of the containing message determines
+	// which
+	// well-known feature set of CEL is supported.
+	Expression string `json:"expression,omitempty"`
+
+	// Location: An optional string indicating the location of the
+	// expression for error
+	// reporting, e.g. a file name and a position in the file.
+	Location string `json:"location,omitempty"`
+
+	// Title: An optional title for the expression, i.e. a short string
+	// describing
+	// its purpose. This can be used e.g. in UIs which allow to enter
+	// the
+	// expression.
+	Title string `json:"title,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 *Expr) MarshalJSON() ([]byte, error) {
+	type NoMethod Expr
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GetIamPolicyRequest: Request message for `GetIamPolicy` method.
+type GetIamPolicyRequest struct {
+}
+
+// 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)
+}
+
+// ListQueuesResponse: Response message for ListQueues.
+type ListQueuesResponse struct {
+	// NextPageToken: A token to retrieve next page of results.
+	//
+	// To return the next page of results, call
+	// ListQueues with this value as the
+	// page_token.
+	//
+	// If the next_page_token is empty, there are no more results.
+	//
+	// The page token is valid for only 2 hours.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Queues: The list of queues.
+	Queues []*Queue `json:"queues,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 *ListQueuesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListQueuesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListTasksResponse: Response message for listing tasks using
+// ListTasks.
+type ListTasksResponse struct {
+	// NextPageToken: A token to retrieve next page of results.
+	//
+	// To return the next page of results, call
+	// ListTasks with this value as the
+	// page_token.
+	//
+	// If the next_page_token is empty, there are no more results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Tasks: The list of tasks.
+	Tasks []*Task `json:"tasks,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 *ListTasksResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListTasksResponse
+	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)
+}
+
+// PauseQueueRequest: Request message for PauseQueue.
+type PauseQueueRequest struct {
+}
+
+// Policy: Defines an Identity and Access Management (IAM) policy. It is
+// used to
+// specify access control policies for Cloud Platform resources.
+//
+//
+// A `Policy` consists of a list of `bindings`. A `binding` binds a list
+// of
+// `members` to a `role`, where the members can be user accounts, Google
+// groups,
+// Google domains, and service accounts. A `role` is a named list of
+// permissions
+// defined by IAM.
+//
+// **JSON Example**
+//
+//     {
+//       "bindings": [
+//         {
+//           "role": "roles/owner",
+//           "members": [
+//             "user:mike@example.com",
+//             "group:admins@example.com",
+//             "domain:google.com",
+//
+// "serviceAccount:my-other-app@appspot.gserviceaccount.com"
+//           ]
+//         },
+//         {
+//           "role": "roles/viewer",
+//           "members": ["user:sean@example.com"]
+//         }
+//       ]
+//     }
+//
+// **YAML Example**
+//
+//     bindings:
+//     - members:
+//       - user:mike@example.com
+//       - group:admins@example.com
+//       - domain:google.com
+//       - serviceAccount:my-other-app@appspot.gserviceaccount.com
+//       role: roles/owner
+//     - members:
+//       - user:sean@example.com
+//       role: roles/viewer
+//
+//
+// For a description of IAM and its features, see the
+// [IAM developer's guide](https://cloud.google.com/iam/docs).
+type Policy struct {
+	// Bindings: Associates a list of `members` to a `role`.
+	// `bindings` with no members will result in an error.
+	Bindings []*Binding `json:"bindings,omitempty"`
+
+	// Etag: `etag` is used for optimistic concurrency control as a way to
+	// help
+	// prevent simultaneous updates of a policy from overwriting each
+	// other.
+	// It is strongly suggested that systems make use of the `etag` in
+	// the
+	// read-modify-write cycle to perform policy updates in order to avoid
+	// race
+	// conditions: An `etag` is returned in the response to `getIamPolicy`,
+	// and
+	// systems are expected to put that etag in the request to
+	// `setIamPolicy` to
+	// ensure that their change will be applied to the same version of the
+	// policy.
+	//
+	// If no `etag` is provided in the call to `setIamPolicy`, then the
+	// existing
+	// policy is overwritten blindly.
+	Etag string `json:"etag,omitempty"`
+
+	// Version: Deprecated.
+	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. "Bindings") 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. "Bindings") 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 *Policy) MarshalJSON() ([]byte, error) {
+	type NoMethod Policy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PurgeQueueRequest: Request message for PurgeQueue.
+type PurgeQueueRequest struct {
+}
+
+// Queue: A queue is a container of related tasks. Queues are configured
+// to manage
+// how those tasks are dispatched. Configurable properties include rate
+// limits,
+// retry options, queue types, and others.
+type Queue struct {
+	// AppEngineRoutingOverride: Overrides for
+	// task-level app_engine_routing.
+	// These settings apply only to
+	// App Engine tasks in this queue.
+	//
+	// If set, `app_engine_routing_override` is used for all
+	// App Engine tasks in the queue, no matter what the
+	// setting is for the
+	// task-level app_engine_routing.
+	AppEngineRoutingOverride *AppEngineRouting `json:"appEngineRoutingOverride,omitempty"`
+
+	// Name: Caller-specified and required in CreateQueue,
+	// after which it becomes output only.
+	//
+	// The queue name.
+	//
+	// The queue name must have the following
+	// format:
+	// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
+	//
+	// *
+	//  `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),
+	//    hyphens (-), colons (:), or periods (.).
+	//    For more information, see
+	//    [Identifying
+	//
+	// projects](https://cloud.google.com/resource-manager/docs/creating-mana
+	// ging-projects#identifying_projects)
+	// * `LOCATION_ID` is the canonical ID for the queue's location.
+	//    The list of available locations can be obtained by calling
+	//    ListLocations.
+	//    For more information, see
+	// https://cloud.google.com/about/locations/.
+	// * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or
+	//   hyphens (-). The maximum length is 100 characters.
+	Name string `json:"name,omitempty"`
+
+	// PurgeTime: Output only. The last time this queue was purged.
+	//
+	// All tasks that were created before this time
+	// were purged.
+	//
+	// A queue can be purged using PurgeQueue, the
+	// [App Engine Task Queue SDK, or the
+	// Cloud
+	// Console](https://cloud.google.com/appengine/docs/standard/python
+	// /taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_que
+	// ue).
+	//
+	// Purge time will be truncated to the nearest microsecond. Purge
+	// time will be unset if the queue has never been purged.
+	PurgeTime string `json:"purgeTime,omitempty"`
+
+	// RateLimits: Rate limits for task dispatches.
+	//
+	// rate_limits and retry_config are
+	// related because they both control task attempts. However they control
+	// task
+	// attempts in different ways:
+	//
+	// * rate_limits controls the total rate of
+	//   dispatches from a queue (i.e. all traffic dispatched from the
+	//   queue, regardless of whether the dispatch is from a first
+	//   attempt or a retry).
+	// * retry_config controls what happens to
+	//   particular a task after its first attempt fails. That is,
+	//   retry_config controls task retries (the
+	//   second attempt, third attempt, etc).
+	//
+	// The queue's actual dispatch rate is the result of:
+	//
+	// * Number of tasks in the queue
+	// * User-specified throttling: rate_limits,
+	//   retry_config, and the
+	//   queue's state.
+	// * System throttling due to `429` (Too Many Requests) or `503`
+	// (Service
+	//   Unavailable) responses from the worker, high error rates, or to
+	// smooth
+	//   sudden large traffic spikes.
+	RateLimits *RateLimits `json:"rateLimits,omitempty"`
+
+	// RetryConfig: Settings that determine the retry behavior.
+	//
+	// * For tasks created using Cloud Tasks: the queue-level retry
+	// settings
+	//   apply to all tasks in the queue that were created using Cloud
+	// Tasks.
+	//   Retry settings cannot be set on individual tasks.
+	// * For tasks created using the App Engine SDK: the queue-level retry
+	//   settings apply to all tasks in the queue which do not have retry
+	// settings
+	//   explicitly set on the task and were created by the App Engine SDK.
+	// See
+	//   [App Engine
+	//
+	// documentation](https://cloud.google.com/appengine/docs/standard/python
+	// /taskqueue/push/retrying-tasks).
+	RetryConfig *RetryConfig `json:"retryConfig,omitempty"`
+
+	// State: Output only. The state of the queue.
+	//
+	// `state` can only be changed by called
+	// PauseQueue,
+	// ResumeQueue, or
+	// uploading
+	// [queue.yaml/xml](https://cloud.google.com/appengine/docs/pyt
+	// hon/config/queueref).
+	// UpdateQueue cannot be used to change `state`.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Unspecified state.
+	//   "RUNNING" - The queue is running. Tasks can be dispatched.
+	//
+	// If the queue was created using Cloud Tasks and the queue has
+	// had no activity (method calls or task dispatches) for 30 days,
+	// the queue may take a few minutes to re-activate. Some method
+	// calls may return NOT_FOUND and
+	// tasks may not be dispatched for a few minutes until the queue
+	// has been re-activated.
+	//   "PAUSED" - Tasks are paused by the user. If the queue is paused
+	// then Cloud
+	// Tasks will stop delivering tasks from it, but more tasks can
+	// still be added to it by the user.
+	//   "DISABLED" - The queue is disabled.
+	//
+	// A queue becomes `DISABLED`
+	// when
+	// [queue.yaml](https://cloud.google.com/appengine/docs/python/confi
+	// g/queueref)
+	// or
+	// [queue.xml](https://cloud.google.com/appengine/docs/sta
+	// ndard/java/config/queueref)
+	// is uploaded which does not contain the queue. You cannot directly
+	// disable
+	// a queue.
+	//
+	// When a queue is disabled, tasks can still be added to a queue
+	// but the tasks are not dispatched.
+	//
+	// To permanently delete this queue and all of its tasks,
+	// call
+	// DeleteQueue.
+	State string `json:"state,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AppEngineRoutingOverride") 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. "AppEngineRoutingOverride")
+	// 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 *Queue) MarshalJSON() ([]byte, error) {
+	type NoMethod Queue
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RateLimits: Rate limits.
+//
+// This message determines the maximum rate that tasks can be dispatched
+// by a
+// queue, regardless of whether the dispatch is a first task attempt or
+// a retry.
+//
+// Note: The debugging command, RunTask, will run a task
+// even if the queue has reached its RateLimits.
+type RateLimits struct {
+	// MaxBurstSize: Output only. The max burst size.
+	//
+	// Max burst size limits how fast tasks in queue are processed when
+	// many tasks are in the queue and the rate is high. This field
+	// allows the queue to have a high rate so processing starts
+	// shortly
+	// after a task is enqueued, but still limits resource usage when
+	// many tasks are enqueued in a short period of time.
+	//
+	// The [token bucket](https://wikipedia.org/wiki/Token_Bucket)
+	// algorithm is used to control the rate of task dispatches. Each
+	// queue has a token bucket that holds tokens, up to the
+	// maximum
+	// specified by `max_burst_size`. Each time a task is dispatched,
+	// a
+	// token is removed from the bucket. Tasks will be dispatched until
+	// the queue's bucket runs out of tokens. The bucket will
+	// be
+	// continuously refilled with new tokens based
+	// on
+	// max_dispatches_per_second.
+	//
+	// Cloud Tasks will pick the value of `max_burst_size` based on
+	// the
+	// value of
+	// max_dispatches_per_second.
+	//
+	// For App Engine queues that were created or updated
+	// using
+	// `queue.yaml/xml`, `max_burst_size` is equal
+	// to
+	// [bucket_size](https://cloud.google.com/appengine/docs/standard/pyth
+	// on/config/queueref#bucket_size).
+	// Since `max_burst_size` is output only, if
+	// UpdateQueue is called on a queue
+	// created by `queue.yaml/xml`, `max_burst_size` will be reset based
+	// on the value of
+	// max_dispatches_per_second,
+	// regardless of whether
+	// max_dispatches_per_second
+	// is updated.
+	//
+	MaxBurstSize int64 `json:"maxBurstSize,omitempty"`
+
+	// MaxConcurrentDispatches: The maximum number of concurrent tasks that
+	// Cloud Tasks allows
+	// to be dispatched for this queue. After this threshold has
+	// been
+	// reached, Cloud Tasks stops dispatching tasks until the number
+	// of
+	// concurrent requests decreases.
+	//
+	// If unspecified when the queue is created, Cloud Tasks will pick
+	// the
+	// default.
+	//
+	//
+	// The maximum allowed value is 5,000.
+	//
+	//
+	// This field has the same meaning as
+	// [max_concurrent_requests
+	// in
+	// queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/py
+	// thon/config/queueref#max_concurrent_requests).
+	MaxConcurrentDispatches int64 `json:"maxConcurrentDispatches,omitempty"`
+
+	// MaxDispatchesPerSecond: The maximum rate at which tasks are
+	// dispatched from this queue.
+	//
+	// If unspecified when the queue is created, Cloud Tasks will pick
+	// the
+	// default.
+	//
+	// * For App Engine queues, the maximum allowed value
+	//   is 500.
+	//
+	//
+	// This field has the same meaning as
+	// [rate
+	// in
+	// queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/py
+	// thon/config/queueref#rate).
+	MaxDispatchesPerSecond float64 `json:"maxDispatchesPerSecond,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MaxBurstSize") 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. "MaxBurstSize") 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 *RateLimits) MarshalJSON() ([]byte, error) {
+	type NoMethod RateLimits
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *RateLimits) UnmarshalJSON(data []byte) error {
+	type NoMethod RateLimits
+	var s1 struct {
+		MaxDispatchesPerSecond gensupport.JSONFloat64 `json:"maxDispatchesPerSecond"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.MaxDispatchesPerSecond = float64(s1.MaxDispatchesPerSecond)
+	return nil
+}
+
+// ResumeQueueRequest: Request message for ResumeQueue.
+type ResumeQueueRequest struct {
+}
+
+// RetryConfig: Retry config.
+//
+// These settings determine when a failed task attempt is retried.
+type RetryConfig struct {
+	// MaxAttempts: Number of attempts per task.
+	//
+	// Cloud Tasks will attempt the task `max_attempts` times (that is, if
+	// the
+	// first attempt fails, then there will be `max_attempts - 1` retries).
+	// Must
+	// be >= -1.
+	//
+	// If unspecified when the queue is created, Cloud Tasks will pick
+	// the
+	// default.
+	//
+	// -1 indicates unlimited attempts.
+	//
+	// This field has the same meaning as
+	// [task_retry_limit
+	// in
+	// queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/py
+	// thon/config/queueref#retry_parameters).
+	MaxAttempts int64 `json:"maxAttempts,omitempty"`
+
+	// MaxBackoff: A task will be scheduled for retry between
+	// min_backoff and
+	// max_backoff duration after it fails,
+	// if the queue's RetryConfig specifies that the task should
+	// be
+	// retried.
+	//
+	// If unspecified when the queue is created, Cloud Tasks will pick
+	// the
+	// default.
+	//
+	//
+	// `max_backoff` will be truncated to the nearest second.
+	//
+	// This field has the same meaning as
+	// [max_backoff_seconds
+	// in
+	// queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/py
+	// thon/config/queueref#retry_parameters).
+	MaxBackoff string `json:"maxBackoff,omitempty"`
+
+	// MaxDoublings: The time between retries will double `max_doublings`
+	// times.
+	//
+	// A task's retry interval starts at
+	// min_backoff, then doubles
+	// `max_doublings` times, then increases linearly, and finally
+	// retries retries at intervals of
+	// max_backoff up to
+	// max_attempts times.
+	//
+	// For example, if min_backoff is 10s,
+	// max_backoff is 300s, and
+	// `max_doublings` is 3, then the a task will first be retried in
+	// 10s. The retry interval will double three times, and then
+	// increase linearly by 2^3 * 10s.  Finally, the task will retry
+	// at
+	// intervals of max_backoff until the
+	// task has been attempted max_attempts
+	// times. Thus, the requests will retry at 10s, 20s, 40s, 80s,
+	// 160s,
+	// 240s, 300s, 300s, ....
+	//
+	// If unspecified when the queue is created, Cloud Tasks will pick
+	// the
+	// default.
+	//
+	//
+	// This field has the same meaning as
+	// [max_doublings
+	// in
+	// queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/py
+	// thon/config/queueref#retry_parameters).
+	MaxDoublings int64 `json:"maxDoublings,omitempty"`
+
+	// MaxRetryDuration: If positive, `max_retry_duration` specifies the
+	// time limit for
+	// retrying a failed task, measured from when the task was
+	// first
+	// attempted. Once `max_retry_duration` time has passed *and* the
+	// task has been attempted max_attempts
+	// times, no further attempts will be made and the task will
+	// be
+	// deleted.
+	//
+	// If zero, then the task age is unlimited.
+	//
+	// If unspecified when the queue is created, Cloud Tasks will pick
+	// the
+	// default.
+	//
+	//
+	// `max_retry_duration` will be truncated to the nearest second.
+	//
+	// This field has the same meaning as
+	// [task_age_limit
+	// in
+	// queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/py
+	// thon/config/queueref#retry_parameters).
+	MaxRetryDuration string `json:"maxRetryDuration,omitempty"`
+
+	// MinBackoff: A task will be scheduled for retry between
+	// min_backoff and
+	// max_backoff duration after it fails,
+	// if the queue's RetryConfig specifies that the task should
+	// be
+	// retried.
+	//
+	// If unspecified when the queue is created, Cloud Tasks will pick
+	// the
+	// default.
+	//
+	//
+	// `min_backoff` will be truncated to the nearest second.
+	//
+	// This field has the same meaning as
+	// [min_backoff_seconds
+	// in
+	// queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/py
+	// thon/config/queueref#retry_parameters).
+	MinBackoff string `json:"minBackoff,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MaxAttempts") 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. "MaxAttempts") 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 *RetryConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod RetryConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RunTaskRequest: Request message for forcing a task to run now
+// using
+// RunTask.
+type RunTaskRequest struct {
+	// ResponseView: The response_view specifies which subset of the Task
+	// will be
+	// returned.
+	//
+	// By default response_view is BASIC; not all
+	// information is retrieved by default because some data, such
+	// as
+	// payloads, might be desirable to return only when needed because
+	// of its large size or because of the sensitivity of data that
+	// it
+	// contains.
+	//
+	// Authorization for FULL requires
+	// `cloudtasks.tasks.fullView` [Google
+	// IAM](https://cloud.google.com/iam/)
+	// permission on the Task resource.
+	//
+	// Possible values:
+	//   "VIEW_UNSPECIFIED" - Unspecified. Defaults to BASIC.
+	//   "BASIC" - The basic view omits fields which can be large or can
+	// contain
+	// sensitive data.
+	//
+	// This view does not include the
+	// body in AppEngineHttpRequest.
+	// Bodies are desirable to return only when needed, because they
+	// can be large and because of the sensitivity of the data that
+	// you
+	// choose to store in it.
+	//   "FULL" - All information is returned.
+	//
+	// Authorization for FULL requires
+	// `cloudtasks.tasks.fullView` [Google
+	// IAM](https://cloud.google.com/iam/)
+	// permission on the Queue resource.
+	ResponseView string `json:"responseView,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ResponseView") 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. "ResponseView") 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 *RunTaskRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod RunTaskRequest
+	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`. The size of
+	// the policy is limited to a few 10s of KB. An empty policy is a
+	// valid policy but certain Cloud Platform services (such as
+	// Projects)
+	// might reject them.
+	Policy *Policy `json:"policy,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Policy") 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. "Policy") 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 *SetIamPolicyRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod SetIamPolicyRequest
+	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)
+}
+
+// Task: A unit of scheduled work.
+type Task struct {
+	// AppEngineHttpRequest: HTTP request that is sent to the App Engine app
+	// handler.
+	//
+	// An App Engine task is a task that has AppEngineHttpRequest set.
+	AppEngineHttpRequest *AppEngineHttpRequest `json:"appEngineHttpRequest,omitempty"`
+
+	// CreateTime: Output only. The time that the task was
+	// created.
+	//
+	// `create_time` will be truncated to the nearest second.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// DispatchCount: Output only. The number of attempts dispatched.
+	//
+	// This count includes attempts which have been dispatched but
+	// haven't
+	// received a response.
+	DispatchCount int64 `json:"dispatchCount,omitempty"`
+
+	// DispatchDeadline: The deadline for requests sent to the worker. If
+	// the worker does not
+	// respond by this deadline then the request is cancelled and the
+	// attempt
+	// is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry
+	// the
+	// task according to the RetryConfig.
+	//
+	// Note that when the request is cancelled, Cloud Tasks will stop
+	// listing for
+	// the response, but whether the worker stops processing depends on
+	// the
+	// worker. For example, if the worker is stuck, it may not react to
+	// cancelled
+	// requests.
+	//
+	// The default and maximum values depend on the type of request:
+	//
+	//
+	// * For App Engine tasks, 0 indicates that the
+	//   request has the default deadline. The default deadline depends on
+	// the
+	//   [scaling
+	//
+	// type](https://cloud.google.com/appengine/docs/standard/go/how-instance
+	// s-are-managed#instance_scaling)
+	//   of the service: 10 minutes for standard apps with automatic
+	// scaling, 24
+	//   hours for standard apps with manual and basic scaling, and 60
+	// minutes for
+	//   flex apps. If the request deadline is set, it must be in the
+	// interval [15
+	//   seconds, 24 hours 15 seconds]. Regardless of the task's
+	//   `dispatch_deadline`, the app handler will not run for longer than
+	// than
+	//   the service's timeout. We recommend setting the `dispatch_deadline`
+	// to
+	//   at most a few seconds more than the app handler's timeout. For
+	// more
+	//   information see
+	//
+	// [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-hand
+	// lers#timeouts).
+	//
+	// `dispatch_deadline` will be truncated to the nearest millisecond.
+	// The
+	// deadline is an approximate deadline.
+	DispatchDeadline string `json:"dispatchDeadline,omitempty"`
+
+	// FirstAttempt: Output only. The status of the task's first
+	// attempt.
+	//
+	// Only dispatch_time will be set.
+	// The other Attempt information is not retained by Cloud Tasks.
+	FirstAttempt *Attempt `json:"firstAttempt,omitempty"`
+
+	// LastAttempt: Output only. The status of the task's last attempt.
+	LastAttempt *Attempt `json:"lastAttempt,omitempty"`
+
+	// Name: Optionally caller-specified in CreateTask.
+	//
+	// The task name.
+	//
+	// The task name must have the following
+	// format:
+	// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tas
+	// ks/TASK_ID`
+	//
+	// * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),
+	//    hyphens (-), colons (:), or periods (.).
+	//    For more information, see
+	//    [Identifying
+	//
+	// projects](https://cloud.google.com/resource-manager/docs/creating-mana
+	// ging-projects#identifying_projects)
+	// * `LOCATION_ID` is the canonical ID for the task's location.
+	//    The list of available locations can be obtained by calling
+	//    ListLocations.
+	//    For more information, see
+	// https://cloud.google.com/about/locations/.
+	// * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or
+	//   hyphens (-). The maximum length is 100 characters.
+	// * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]),
+	//   hyphens (-), or underscores (_). The maximum length is 500
+	// characters.
+	Name string `json:"name,omitempty"`
+
+	// ResponseCount: Output only. The number of attempts which have
+	// received a response.
+	ResponseCount int64 `json:"responseCount,omitempty"`
+
+	// ScheduleTime: The time when the task is scheduled to be
+	// attempted.
+	//
+	// For App Engine queues, this is when the task will be attempted or
+	// retried.
+	//
+	// `schedule_time` will be truncated to the nearest microsecond.
+	ScheduleTime string `json:"scheduleTime,omitempty"`
+
+	// View: Output only. The view specifies which subset of the Task
+	// has
+	// been returned.
+	//
+	// Possible values:
+	//   "VIEW_UNSPECIFIED" - Unspecified. Defaults to BASIC.
+	//   "BASIC" - The basic view omits fields which can be large or can
+	// contain
+	// sensitive data.
+	//
+	// This view does not include the
+	// body in AppEngineHttpRequest.
+	// Bodies are desirable to return only when needed, because they
+	// can be large and because of the sensitivity of the data that
+	// you
+	// choose to store in it.
+	//   "FULL" - All information is returned.
+	//
+	// Authorization for FULL requires
+	// `cloudtasks.tasks.fullView` [Google
+	// IAM](https://cloud.google.com/iam/)
+	// permission on the Queue resource.
+	View string `json:"view,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AppEngineHttpRequest") 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. "AppEngineHttpRequest") 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 *Task) MarshalJSON() ([]byte, error) {
+	type NoMethod Task
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TestIamPermissionsRequest: Request message for `TestIamPermissions`
+// method.
+type TestIamPermissionsRequest struct {
+	// Permissions: The set of permissions to check for the `resource`.
+	// Permissions with
+	// wildcards (such as '*' or 'storage.*') are not allowed. For
+	// more
+	// information see
+	// [IAM
+	// Overview](https://cloud.google.com/iam/docs/overview#permissions).
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Permissions") 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. "Permissions") 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 *TestIamPermissionsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod TestIamPermissionsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TestIamPermissionsResponse: Response message for `TestIamPermissions`
+// method.
+type TestIamPermissionsResponse struct {
+	// Permissions: A subset of `TestPermissionsRequest.permissions` that
+	// the caller is
+	// allowed.
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Permissions") 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. "Permissions") 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 *TestIamPermissionsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod TestIamPermissionsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "cloudtasks.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, "v2/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.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": "v2/projects/{projectsId}/locations/{locationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "cloudtasks.projects.locations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Resource name for the location.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}",
+	//   "response": {
+	//     "$ref": "Location"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.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, "v2/{+name}/locations")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.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": "v2/projects/{projectsId}/locations",
+	//   "httpMethod": "GET",
+	//   "id": "cloudtasks.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": "v2/{+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 "cloudtasks.projects.locations.queues.create":
+
+type ProjectsLocationsQueuesCreateCall struct {
+	s          *Service
+	parent     string
+	queue      *Queue
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates a queue.
+//
+// Queues created with this method allow tasks to live for a maximum of
+// 31
+// days. After a task is 31 days old, the task will be deleted
+// regardless of whether
+// it was dispatched or not.
+//
+// WARNING: Using this method may have unintended side effects if you
+// are
+// using an App Engine `queue.yaml` or `queue.xml` file to manage your
+// queues.
+// Read
+// [Overview of Queue Management and
+// queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)
+// before using this method.
+func (r *ProjectsLocationsQueuesService) Create(parent string, queue *Queue) *ProjectsLocationsQueuesCreateCall {
+	c := &ProjectsLocationsQueuesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.queue = queue
+	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 *ProjectsLocationsQueuesCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesCreateCall {
+	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 *ProjectsLocationsQueuesCreateCall) Context(ctx context.Context) *ProjectsLocationsQueuesCreateCall {
+	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 *ProjectsLocationsQueuesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesCreateCall) 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.queue)
+	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, "v2/{+parent}/queues")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.create" call.
+// Exactly one of *Queue or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Queue.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 *ProjectsLocationsQueuesCreateCall) Do(opts ...googleapi.CallOption) (*Queue, 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 := &Queue{
+		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 a queue.\n\nQueues created with this method allow tasks to live for a maximum of 31\ndays. After a task is 31 days old, the task will be deleted regardless of whether\nit was dispatched or not.\n\nWARNING: Using this method may have unintended side effects if you are\nusing an App Engine `queue.yaml` or `queue.xml` file to manage your queues.\nRead\n[Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)\nbefore using this method.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Required.\n\nThe location name in which the queue will be created.\nFor example: `projects/PROJECT_ID/locations/LOCATION_ID`\n\nThe list of allowed locations can be obtained by calling Cloud\nTasks' implementation of\nListLocations.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+parent}/queues",
+	//   "request": {
+	//     "$ref": "Queue"
+	//   },
+	//   "response": {
+	//     "$ref": "Queue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.delete":
+
+type ProjectsLocationsQueuesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes a queue.
+//
+// This command will delete the queue even if it has tasks in it.
+//
+// Note: If you delete a queue, a queue with the same name can't be
+// created
+// for 7 days.
+//
+// WARNING: Using this method may have unintended side effects if you
+// are
+// using an App Engine `queue.yaml` or `queue.xml` file to manage your
+// queues.
+// Read
+// [Overview of Queue Management and
+// queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)
+// before using this method.
+func (r *ProjectsLocationsQueuesService) Delete(name string) *ProjectsLocationsQueuesDeleteCall {
+	c := &ProjectsLocationsQueuesDeleteCall{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 *ProjectsLocationsQueuesDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesDeleteCall {
+	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 *ProjectsLocationsQueuesDeleteCall) Context(ctx context.Context) *ProjectsLocationsQueuesDeleteCall {
+	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 *ProjectsLocationsQueuesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesDeleteCall) 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, "v2/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.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 *ProjectsLocationsQueuesDeleteCall) 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 queue.\n\nThis command will delete the queue even if it has tasks in it.\n\nNote: If you delete a queue, a queue with the same name can't be created\nfor 7 days.\n\nWARNING: Using this method may have unintended side effects if you are\nusing an App Engine `queue.yaml` or `queue.xml` file to manage your queues.\nRead\n[Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)\nbefore using this method.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "cloudtasks.projects.locations.queues.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.get":
+
+type ProjectsLocationsQueuesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a queue.
+func (r *ProjectsLocationsQueuesService) Get(name string) *ProjectsLocationsQueuesGetCall {
+	c := &ProjectsLocationsQueuesGetCall{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 *ProjectsLocationsQueuesGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesGetCall {
+	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 *ProjectsLocationsQueuesGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsQueuesGetCall {
+	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 *ProjectsLocationsQueuesGetCall) Context(ctx context.Context) *ProjectsLocationsQueuesGetCall {
+	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 *ProjectsLocationsQueuesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesGetCall) 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, "v2/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.get" call.
+// Exactly one of *Queue or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Queue.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 *ProjectsLocationsQueuesGetCall) Do(opts ...googleapi.CallOption) (*Queue, 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 := &Queue{
+		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 queue.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+	//   "httpMethod": "GET",
+	//   "id": "cloudtasks.projects.locations.queues.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\n\nThe resource name of the queue. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}",
+	//   "response": {
+	//     "$ref": "Queue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.getIamPolicy":
+
+type ProjectsLocationsQueuesGetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	getiampolicyrequest *GetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a Queue.
+// Returns an empty policy if the resource exists and does not have a
+// policy
+// set.
+//
+// Authorization requires the following
+// [Google IAM](https://cloud.google.com/iam) permission on the
+// specified
+// resource parent:
+//
+// * `cloudtasks.queues.getIamPolicy`
+func (r *ProjectsLocationsQueuesService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ProjectsLocationsQueuesGetIamPolicyCall {
+	c := &ProjectsLocationsQueuesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.getiampolicyrequest = getiampolicyrequest
+	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 *ProjectsLocationsQueuesGetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesGetIamPolicyCall {
+	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 *ProjectsLocationsQueuesGetIamPolicyCall) Context(ctx context.Context) *ProjectsLocationsQueuesGetIamPolicyCall {
+	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 *ProjectsLocationsQueuesGetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesGetIamPolicyCall) 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.getiampolicyrequest)
+	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, "v2/{+resource}:getIamPolicy")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudtasks.projects.locations.queues.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsLocationsQueuesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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 access control policy for a Queue.\nReturns an empty policy if the resource exists and does not have a policy\nset.\n\nAuthorization requires the following\n[Google IAM](https://cloud.google.com/iam) permission on the specified\nresource parent:\n\n* `cloudtasks.queues.getIamPolicy`",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:getIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.getIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+resource}:getIamPolicy",
+	//   "request": {
+	//     "$ref": "GetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.list":
+
+type ProjectsLocationsQueuesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists queues.
+//
+// Queues are returned in lexicographical order.
+func (r *ProjectsLocationsQueuesService) List(parent string) *ProjectsLocationsQueuesListCall {
+	c := &ProjectsLocationsQueuesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": `filter` can be used to
+// specify a subset of queues. Any Queue
+// field can be used as a filter and several operators as supported.
+// For example: `<=, <, >=, >, !=, =, :`. The filter syntax is the same
+// as
+// described in
+// [Stackdriver's Advanced Logs
+// Filters](https://cloud.google.com/logging/docs/view/advanced_filters).
+//
+//
+// Sample filter "state: PAUSED".
+//
+// Note that using filters might cause fewer queues than the
+// requested page_size to be returned.
+func (c *ProjectsLocationsQueuesListCall) Filter(filter string) *ProjectsLocationsQueuesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Requested page
+// size.
+//
+// The maximum page size is 9800. If unspecified, the page size will
+// be the maximum. Fewer queues than requested might be returned,
+// even if more queues exist; use the
+// next_page_token in the
+// response to determine if more queues exist.
+func (c *ProjectsLocationsQueuesListCall) PageSize(pageSize int64) *ProjectsLocationsQueuesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A token
+// identifying the page of results to return.
+//
+// To request the first page results, page_token must be empty.
+// To
+// request the next page of results, page_token must be the value
+// of
+// next_page_token returned
+// from the previous call to ListQueues
+// method. It is an error to switch the value of the
+// filter while iterating through pages.
+func (c *ProjectsLocationsQueuesListCall) PageToken(pageToken string) *ProjectsLocationsQueuesListCall {
+	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 *ProjectsLocationsQueuesListCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesListCall {
+	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 *ProjectsLocationsQueuesListCall) IfNoneMatch(entityTag string) *ProjectsLocationsQueuesListCall {
+	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 *ProjectsLocationsQueuesListCall) Context(ctx context.Context) *ProjectsLocationsQueuesListCall {
+	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 *ProjectsLocationsQueuesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesListCall) 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, "v2/{+parent}/queues")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.list" call.
+// Exactly one of *ListQueuesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListQueuesResponse.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 *ProjectsLocationsQueuesListCall) Do(opts ...googleapi.CallOption) (*ListQueuesResponse, 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 := &ListQueuesResponse{
+		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 queues.\n\nQueues are returned in lexicographical order.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues",
+	//   "httpMethod": "GET",
+	//   "id": "cloudtasks.projects.locations.queues.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "`filter` can be used to specify a subset of queues. Any Queue\nfield can be used as a filter and several operators as supported.\nFor example: `\u003c=, \u003c, \u003e=, \u003e, !=, =, :`. The filter syntax is the same as\ndescribed in\n[Stackdriver's Advanced Logs Filters](https://cloud.google.com/logging/docs/view/advanced_filters).\n\nSample filter \"state: PAUSED\".\n\nNote that using filters might cause fewer queues than the\nrequested page_size to be returned.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Requested page size.\n\nThe maximum page size is 9800. If unspecified, the page size will\nbe the maximum. Fewer queues than requested might be returned,\neven if more queues exist; use the\nnext_page_token in the\nresponse to determine if more queues exist.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A token identifying the page of results to return.\n\nTo request the first page results, page_token must be empty. To\nrequest the next page of results, page_token must be the value of\nnext_page_token returned\nfrom the previous call to ListQueues\nmethod. It is an error to switch the value of the\nfilter while iterating through pages.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "Required.\n\nThe location name.\nFor example: `projects/PROJECT_ID/locations/LOCATION_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+parent}/queues",
+	//   "response": {
+	//     "$ref": "ListQueuesResponse"
+	//   },
+	//   "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 *ProjectsLocationsQueuesListCall) Pages(ctx context.Context, f func(*ListQueuesResponse) 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 "cloudtasks.projects.locations.queues.patch":
+
+type ProjectsLocationsQueuesPatchCall struct {
+	s          *Service
+	name       string
+	queue      *Queue
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates a queue.
+//
+// This method creates the queue if it does not exist and updates
+// the queue if it does exist.
+//
+// Queues created with this method allow tasks to live for a maximum of
+// 31
+// days. After a task is 31 days old, the task will be deleted
+// regardless of whether
+// it was dispatched or not.
+//
+// WARNING: Using this method may have unintended side effects if you
+// are
+// using an App Engine `queue.yaml` or `queue.xml` file to manage your
+// queues.
+// Read
+// [Overview of Queue Management and
+// queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)
+// before using this method.
+func (r *ProjectsLocationsQueuesService) Patch(name string, queue *Queue) *ProjectsLocationsQueuesPatchCall {
+	c := &ProjectsLocationsQueuesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.queue = queue
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": A mask used to
+// specify which fields of the queue are being updated.
+//
+// If empty, then all fields will be updated.
+func (c *ProjectsLocationsQueuesPatchCall) UpdateMask(updateMask string) *ProjectsLocationsQueuesPatchCall {
+	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 *ProjectsLocationsQueuesPatchCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesPatchCall {
+	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 *ProjectsLocationsQueuesPatchCall) Context(ctx context.Context) *ProjectsLocationsQueuesPatchCall {
+	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 *ProjectsLocationsQueuesPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesPatchCall) 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.queue)
+	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, "v2/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.patch" call.
+// Exactly one of *Queue or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Queue.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 *ProjectsLocationsQueuesPatchCall) Do(opts ...googleapi.CallOption) (*Queue, 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 := &Queue{
+		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 a queue.\n\nThis method creates the queue if it does not exist and updates\nthe queue if it does exist.\n\nQueues created with this method allow tasks to live for a maximum of 31\ndays. After a task is 31 days old, the task will be deleted regardless of whether\nit was dispatched or not.\n\nWARNING: Using this method may have unintended side effects if you are\nusing an App Engine `queue.yaml` or `queue.xml` file to manage your queues.\nRead\n[Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml)\nbefore using this method.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "cloudtasks.projects.locations.queues.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Caller-specified and required in CreateQueue,\nafter which it becomes output only.\n\nThe queue name.\n\nThe queue name must have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`\n\n* `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]),\n   hyphens (-), colons (:), or periods (.).\n   For more information, see\n   [Identifying\n   projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects)\n* `LOCATION_ID` is the canonical ID for the queue's location.\n   The list of available locations can be obtained by calling\n   ListLocations.\n   For more information, see https://cloud.google.com/about/locations/.\n* `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or\n  hyphens (-). The maximum length is 100 characters.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "A mask used to specify which fields of the queue are being updated.\n\nIf empty, then all fields will be updated.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}",
+	//   "request": {
+	//     "$ref": "Queue"
+	//   },
+	//   "response": {
+	//     "$ref": "Queue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.pause":
+
+type ProjectsLocationsQueuesPauseCall struct {
+	s                 *Service
+	name              string
+	pausequeuerequest *PauseQueueRequest
+	urlParams_        gensupport.URLParams
+	ctx_              context.Context
+	header_           http.Header
+}
+
+// Pause: Pauses the queue.
+//
+// If a queue is paused then the system will stop dispatching
+// tasks
+// until the queue is resumed via
+// ResumeQueue. Tasks can still be added
+// when the queue is paused. A queue is paused if its
+// state is PAUSED.
+func (r *ProjectsLocationsQueuesService) Pause(name string, pausequeuerequest *PauseQueueRequest) *ProjectsLocationsQueuesPauseCall {
+	c := &ProjectsLocationsQueuesPauseCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.pausequeuerequest = pausequeuerequest
+	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 *ProjectsLocationsQueuesPauseCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesPauseCall {
+	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 *ProjectsLocationsQueuesPauseCall) Context(ctx context.Context) *ProjectsLocationsQueuesPauseCall {
+	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 *ProjectsLocationsQueuesPauseCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesPauseCall) 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.pausequeuerequest)
+	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, "v2/{+name}:pause")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.pause" call.
+// Exactly one of *Queue or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Queue.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 *ProjectsLocationsQueuesPauseCall) Do(opts ...googleapi.CallOption) (*Queue, 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 := &Queue{
+		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": "Pauses the queue.\n\nIf a queue is paused then the system will stop dispatching tasks\nuntil the queue is resumed via\nResumeQueue. Tasks can still be added\nwhen the queue is paused. A queue is paused if its\nstate is PAUSED.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:pause",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.pause",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}:pause",
+	//   "request": {
+	//     "$ref": "PauseQueueRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Queue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.purge":
+
+type ProjectsLocationsQueuesPurgeCall struct {
+	s                 *Service
+	name              string
+	purgequeuerequest *PurgeQueueRequest
+	urlParams_        gensupport.URLParams
+	ctx_              context.Context
+	header_           http.Header
+}
+
+// Purge: Purges a queue by deleting all of its tasks.
+//
+// All tasks created before this method is called are permanently
+// deleted.
+//
+// Purge operations can take up to one minute to take effect.
+// Tasks
+// might be dispatched before the purge takes effect. A purge is
+// irreversible.
+func (r *ProjectsLocationsQueuesService) Purge(name string, purgequeuerequest *PurgeQueueRequest) *ProjectsLocationsQueuesPurgeCall {
+	c := &ProjectsLocationsQueuesPurgeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.purgequeuerequest = purgequeuerequest
+	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 *ProjectsLocationsQueuesPurgeCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesPurgeCall {
+	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 *ProjectsLocationsQueuesPurgeCall) Context(ctx context.Context) *ProjectsLocationsQueuesPurgeCall {
+	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 *ProjectsLocationsQueuesPurgeCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesPurgeCall) 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.purgequeuerequest)
+	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, "v2/{+name}:purge")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.purge" call.
+// Exactly one of *Queue or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Queue.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 *ProjectsLocationsQueuesPurgeCall) Do(opts ...googleapi.CallOption) (*Queue, 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 := &Queue{
+		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": "Purges a queue by deleting all of its tasks.\n\nAll tasks created before this method is called are permanently deleted.\n\nPurge operations can take up to one minute to take effect. Tasks\nmight be dispatched before the purge takes effect. A purge is irreversible.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:purge",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.purge",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}:purge",
+	//   "request": {
+	//     "$ref": "PurgeQueueRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Queue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.resume":
+
+type ProjectsLocationsQueuesResumeCall struct {
+	s                  *Service
+	name               string
+	resumequeuerequest *ResumeQueueRequest
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+	header_            http.Header
+}
+
+// Resume: Resume a queue.
+//
+// This method resumes a queue after it has been
+// PAUSED or
+// DISABLED. The state of a queue is stored
+// in the queue's state; after calling this method it
+// will be set to RUNNING.
+//
+// WARNING: Resuming many high-QPS queues at the same time can
+// lead to target overloading. If you are resuming high-QPS
+// queues, follow the 500/50/5 pattern described in
+// [Managing Cloud Tasks Scaling
+// Risks](https://cloud.google.com/tasks/docs/manage-cloud-task-scaling).
+func (r *ProjectsLocationsQueuesService) Resume(name string, resumequeuerequest *ResumeQueueRequest) *ProjectsLocationsQueuesResumeCall {
+	c := &ProjectsLocationsQueuesResumeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.resumequeuerequest = resumequeuerequest
+	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 *ProjectsLocationsQueuesResumeCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesResumeCall {
+	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 *ProjectsLocationsQueuesResumeCall) Context(ctx context.Context) *ProjectsLocationsQueuesResumeCall {
+	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 *ProjectsLocationsQueuesResumeCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesResumeCall) 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.resumequeuerequest)
+	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, "v2/{+name}:resume")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.resume" call.
+// Exactly one of *Queue or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Queue.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 *ProjectsLocationsQueuesResumeCall) Do(opts ...googleapi.CallOption) (*Queue, 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 := &Queue{
+		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": "Resume a queue.\n\nThis method resumes a queue after it has been\nPAUSED or\nDISABLED. The state of a queue is stored\nin the queue's state; after calling this method it\nwill be set to RUNNING.\n\nWARNING: Resuming many high-QPS queues at the same time can\nlead to target overloading. If you are resuming high-QPS\nqueues, follow the 500/50/5 pattern described in\n[Managing Cloud Tasks Scaling Risks](https://cloud.google.com/tasks/docs/manage-cloud-task-scaling).",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:resume",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.resume",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}:resume",
+	//   "request": {
+	//     "$ref": "ResumeQueueRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Queue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.setIamPolicy":
+
+type ProjectsLocationsQueuesSetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	setiampolicyrequest *SetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// SetIamPolicy: Sets the access control policy for a Queue. Replaces
+// any existing
+// policy.
+//
+// Note: The Cloud Console does not check queue-level IAM permissions
+// yet.
+// Project-level permissions are required to use the Cloud
+// Console.
+//
+// Authorization requires the following
+// [Google IAM](https://cloud.google.com/iam) permission on the
+// specified
+// resource parent:
+//
+// * `cloudtasks.queues.setIamPolicy`
+func (r *ProjectsLocationsQueuesService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ProjectsLocationsQueuesSetIamPolicyCall {
+	c := &ProjectsLocationsQueuesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.setiampolicyrequest = setiampolicyrequest
+	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 *ProjectsLocationsQueuesSetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesSetIamPolicyCall {
+	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 *ProjectsLocationsQueuesSetIamPolicyCall) Context(ctx context.Context) *ProjectsLocationsQueuesSetIamPolicyCall {
+	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 *ProjectsLocationsQueuesSetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesSetIamPolicyCall) 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.setiampolicyrequest)
+	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, "v2/{+resource}:setIamPolicy")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudtasks.projects.locations.queues.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsLocationsQueuesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Sets the access control policy for a Queue. Replaces any existing\npolicy.\n\nNote: The Cloud Console does not check queue-level IAM permissions yet.\nProject-level permissions are required to use the Cloud Console.\n\nAuthorization requires the following\n[Google IAM](https://cloud.google.com/iam) permission on the specified\nresource parent:\n\n* `cloudtasks.queues.setIamPolicy`",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:setIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.setIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+resource}:setIamPolicy",
+	//   "request": {
+	//     "$ref": "SetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.testIamPermissions":
+
+type ProjectsLocationsQueuesTestIamPermissionsCall struct {
+	s                         *Service
+	resource                  string
+	testiampermissionsrequest *TestIamPermissionsRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// TestIamPermissions: Returns permissions that a caller has on a
+// Queue.
+// If the resource does not exist, this will return an empty set
+// of
+// permissions, not a NOT_FOUND error.
+//
+// Note: This operation is designed to be used for building
+// permission-aware
+// UIs and command-line tools, not for authorization checking. This
+// operation
+// may "fail open" without warning.
+func (r *ProjectsLocationsQueuesService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ProjectsLocationsQueuesTestIamPermissionsCall {
+	c := &ProjectsLocationsQueuesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.testiampermissionsrequest = testiampermissionsrequest
+	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 *ProjectsLocationsQueuesTestIamPermissionsCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesTestIamPermissionsCall {
+	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 *ProjectsLocationsQueuesTestIamPermissionsCall) Context(ctx context.Context) *ProjectsLocationsQueuesTestIamPermissionsCall {
+	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 *ProjectsLocationsQueuesTestIamPermissionsCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesTestIamPermissionsCall) 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.testiampermissionsrequest)
+	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, "v2/{+resource}:testIamPermissions")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudtasks.projects.locations.queues.testIamPermissions" call.
+// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *TestIamPermissionsResponse.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 *ProjectsLocationsQueuesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, 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 := &TestIamPermissionsResponse{
+		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": "Returns permissions that a caller has on a Queue.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:testIamPermissions",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.testIamPermissions",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+resource}:testIamPermissions",
+	//   "request": {
+	//     "$ref": "TestIamPermissionsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "TestIamPermissionsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.tasks.create":
+
+type ProjectsLocationsQueuesTasksCreateCall struct {
+	s                 *Service
+	parent            string
+	createtaskrequest *CreateTaskRequest
+	urlParams_        gensupport.URLParams
+	ctx_              context.Context
+	header_           http.Header
+}
+
+// Create: Creates a task and adds it to a queue.
+//
+// Tasks cannot be updated after creation; there is no UpdateTask
+// command.
+//
+// * For App Engine queues, the maximum task size is
+//   100KB.
+func (r *ProjectsLocationsQueuesTasksService) Create(parent string, createtaskrequest *CreateTaskRequest) *ProjectsLocationsQueuesTasksCreateCall {
+	c := &ProjectsLocationsQueuesTasksCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.createtaskrequest = createtaskrequest
+	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 *ProjectsLocationsQueuesTasksCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesTasksCreateCall {
+	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 *ProjectsLocationsQueuesTasksCreateCall) Context(ctx context.Context) *ProjectsLocationsQueuesTasksCreateCall {
+	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 *ProjectsLocationsQueuesTasksCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesTasksCreateCall) 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.createtaskrequest)
+	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, "v2/{+parent}/tasks")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.tasks.create" call.
+// Exactly one of *Task or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Task.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 *ProjectsLocationsQueuesTasksCreateCall) Do(opts ...googleapi.CallOption) (*Task, 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 := &Task{
+		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 a task and adds it to a queue.\n\nTasks cannot be updated after creation; there is no UpdateTask command.\n\n* For App Engine queues, the maximum task size is\n  100KB.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.tasks.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`\n\nThe queue must already exist.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+parent}/tasks",
+	//   "request": {
+	//     "$ref": "CreateTaskRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Task"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.tasks.delete":
+
+type ProjectsLocationsQueuesTasksDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes a task.
+//
+// A task can be deleted if it is scheduled or dispatched. A task
+// cannot be deleted if it has executed successfully or
+// permanently
+// failed.
+func (r *ProjectsLocationsQueuesTasksService) Delete(name string) *ProjectsLocationsQueuesTasksDeleteCall {
+	c := &ProjectsLocationsQueuesTasksDeleteCall{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 *ProjectsLocationsQueuesTasksDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesTasksDeleteCall {
+	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 *ProjectsLocationsQueuesTasksDeleteCall) Context(ctx context.Context) *ProjectsLocationsQueuesTasksDeleteCall {
+	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 *ProjectsLocationsQueuesTasksDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesTasksDeleteCall) 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, "v2/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.tasks.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 *ProjectsLocationsQueuesTasksDeleteCall) 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 task.\n\nA task can be deleted if it is scheduled or dispatched. A task\ncannot be deleted if it has executed successfully or permanently\nfailed.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "cloudtasks.projects.locations.queues.tasks.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.tasks.get":
+
+type ProjectsLocationsQueuesTasksGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a task.
+func (r *ProjectsLocationsQueuesTasksService) Get(name string) *ProjectsLocationsQueuesTasksGetCall {
+	c := &ProjectsLocationsQueuesTasksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// ResponseView sets the optional parameter "responseView": The
+// response_view specifies which subset of the Task will
+// be
+// returned.
+//
+// By default response_view is BASIC; not all
+// information is retrieved by default because some data, such
+// as
+// payloads, might be desirable to return only when needed because
+// of its large size or because of the sensitivity of data that
+// it
+// contains.
+//
+// Authorization for FULL requires
+// `cloudtasks.tasks.fullView` [Google
+// IAM](https://cloud.google.com/iam/)
+// permission on the Task resource.
+//
+// Possible values:
+//   "VIEW_UNSPECIFIED"
+//   "BASIC"
+//   "FULL"
+func (c *ProjectsLocationsQueuesTasksGetCall) ResponseView(responseView string) *ProjectsLocationsQueuesTasksGetCall {
+	c.urlParams_.Set("responseView", responseView)
+	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 *ProjectsLocationsQueuesTasksGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesTasksGetCall {
+	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 *ProjectsLocationsQueuesTasksGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsQueuesTasksGetCall {
+	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 *ProjectsLocationsQueuesTasksGetCall) Context(ctx context.Context) *ProjectsLocationsQueuesTasksGetCall {
+	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 *ProjectsLocationsQueuesTasksGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesTasksGetCall) 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, "v2/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.tasks.get" call.
+// Exactly one of *Task or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Task.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 *ProjectsLocationsQueuesTasksGetCall) Do(opts ...googleapi.CallOption) (*Task, 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 := &Task{
+		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 task.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}",
+	//   "httpMethod": "GET",
+	//   "id": "cloudtasks.projects.locations.queues.tasks.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "responseView": {
+	//       "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Task resource.",
+	//       "enum": [
+	//         "VIEW_UNSPECIFIED",
+	//         "BASIC",
+	//         "FULL"
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}",
+	//   "response": {
+	//     "$ref": "Task"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudtasks.projects.locations.queues.tasks.list":
+
+type ProjectsLocationsQueuesTasksListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists the tasks in a queue.
+//
+// By default, only the BASIC view is retrieved
+// due to performance considerations;
+// response_view controls the
+// subset of information which is returned.
+//
+// The tasks may be returned in any order. The ordering may change at
+// any
+// time.
+func (r *ProjectsLocationsQueuesTasksService) List(parent string) *ProjectsLocationsQueuesTasksListCall {
+	c := &ProjectsLocationsQueuesTasksListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Requested page size.
+// Fewer tasks than requested might be returned.
+//
+// The maximum page size is 1000. If unspecified, the page size will
+// be the maximum. Fewer tasks than requested might be returned,
+// even if more tasks exist; use
+// next_page_token in the
+// response to determine if more tasks exist.
+func (c *ProjectsLocationsQueuesTasksListCall) PageSize(pageSize int64) *ProjectsLocationsQueuesTasksListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A token
+// identifying the page of results to return.
+//
+// To request the first page results, page_token must be empty.
+// To
+// request the next page of results, page_token must be the value
+// of
+// next_page_token returned
+// from the previous call to ListTasks
+// method.
+//
+// The page token is valid for only 2 hours.
+func (c *ProjectsLocationsQueuesTasksListCall) PageToken(pageToken string) *ProjectsLocationsQueuesTasksListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// ResponseView sets the optional parameter "responseView": The
+// response_view specifies which subset of the Task will
+// be
+// returned.
+//
+// By default response_view is BASIC; not all
+// information is retrieved by default because some data, such
+// as
+// payloads, might be desirable to return only when needed because
+// of its large size or because of the sensitivity of data that
+// it
+// contains.
+//
+// Authorization for FULL requires
+// `cloudtasks.tasks.fullView` [Google
+// IAM](https://cloud.google.com/iam/)
+// permission on the Task resource.
+//
+// Possible values:
+//   "VIEW_UNSPECIFIED"
+//   "BASIC"
+//   "FULL"
+func (c *ProjectsLocationsQueuesTasksListCall) ResponseView(responseView string) *ProjectsLocationsQueuesTasksListCall {
+	c.urlParams_.Set("responseView", responseView)
+	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 *ProjectsLocationsQueuesTasksListCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesTasksListCall {
+	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 *ProjectsLocationsQueuesTasksListCall) IfNoneMatch(entityTag string) *ProjectsLocationsQueuesTasksListCall {
+	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 *ProjectsLocationsQueuesTasksListCall) Context(ctx context.Context) *ProjectsLocationsQueuesTasksListCall {
+	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 *ProjectsLocationsQueuesTasksListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesTasksListCall) 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, "v2/{+parent}/tasks")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.tasks.list" call.
+// Exactly one of *ListTasksResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListTasksResponse.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 *ProjectsLocationsQueuesTasksListCall) Do(opts ...googleapi.CallOption) (*ListTasksResponse, 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 := &ListTasksResponse{
+		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 the tasks in a queue.\n\nBy default, only the BASIC view is retrieved\ndue to performance considerations;\nresponse_view controls the\nsubset of information which is returned.\n\nThe tasks may be returned in any order. The ordering may change at any\ntime.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks",
+	//   "httpMethod": "GET",
+	//   "id": "cloudtasks.projects.locations.queues.tasks.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "Requested page size. Fewer tasks than requested might be returned.\n\nThe maximum page size is 1000. If unspecified, the page size will\nbe the maximum. Fewer tasks than requested might be returned,\neven if more tasks exist; use\nnext_page_token in the\nresponse to determine if more tasks exist.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A token identifying the page of results to return.\n\nTo request the first page results, page_token must be empty. To\nrequest the next page of results, page_token must be the value of\nnext_page_token returned\nfrom the previous call to ListTasks\nmethod.\n\nThe page token is valid for only 2 hours.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "responseView": {
+	//       "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Task resource.",
+	//       "enum": [
+	//         "VIEW_UNSPECIFIED",
+	//         "BASIC",
+	//         "FULL"
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+parent}/tasks",
+	//   "response": {
+	//     "$ref": "ListTasksResponse"
+	//   },
+	//   "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 *ProjectsLocationsQueuesTasksListCall) Pages(ctx context.Context, f func(*ListTasksResponse) 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 "cloudtasks.projects.locations.queues.tasks.run":
+
+type ProjectsLocationsQueuesTasksRunCall struct {
+	s              *Service
+	name           string
+	runtaskrequest *RunTaskRequest
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+	header_        http.Header
+}
+
+// Run: Forces a task to run now.
+//
+// When this method is called, Cloud Tasks will dispatch the task, even
+// if
+// the task is already running, the queue has reached its RateLimits
+// or
+// is PAUSED.
+//
+// This command is meant to be used for manual debugging. For
+// example, RunTask can be used to retry a failed
+// task after a fix has been made or to manually force a task to
+// be
+// dispatched now.
+//
+// The dispatched task is returned. That is, the task that is
+// returned
+// contains the status after the task is dispatched but
+// before the task is received by its target.
+//
+// If Cloud Tasks receives a successful response from the task's
+// target, then the task will be deleted; otherwise the
+// task's
+// schedule_time will be reset to the time that
+// RunTask was called plus the retry delay specified
+// in the queue's RetryConfig.
+//
+// RunTask returns
+// NOT_FOUND when it is called on a
+// task that has already succeeded or permanently failed.
+func (r *ProjectsLocationsQueuesTasksService) Run(name string, runtaskrequest *RunTaskRequest) *ProjectsLocationsQueuesTasksRunCall {
+	c := &ProjectsLocationsQueuesTasksRunCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.runtaskrequest = runtaskrequest
+	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 *ProjectsLocationsQueuesTasksRunCall) Fields(s ...googleapi.Field) *ProjectsLocationsQueuesTasksRunCall {
+	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 *ProjectsLocationsQueuesTasksRunCall) Context(ctx context.Context) *ProjectsLocationsQueuesTasksRunCall {
+	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 *ProjectsLocationsQueuesTasksRunCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsQueuesTasksRunCall) 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.runtaskrequest)
+	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, "v2/{+name}:run")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	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 "cloudtasks.projects.locations.queues.tasks.run" call.
+// Exactly one of *Task or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Task.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 *ProjectsLocationsQueuesTasksRunCall) Do(opts ...googleapi.CallOption) (*Task, 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 := &Task{
+		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": "Forces a task to run now.\n\nWhen this method is called, Cloud Tasks will dispatch the task, even if\nthe task is already running, the queue has reached its RateLimits or\nis PAUSED.\n\nThis command is meant to be used for manual debugging. For\nexample, RunTask can be used to retry a failed\ntask after a fix has been made or to manually force a task to be\ndispatched now.\n\nThe dispatched task is returned. That is, the task that is returned\ncontains the status after the task is dispatched but\nbefore the task is received by its target.\n\nIf Cloud Tasks receives a successful response from the task's\ntarget, then the task will be deleted; otherwise the task's\nschedule_time will be reset to the time that\nRunTask was called plus the retry delay specified\nin the queue's RetryConfig.\n\nRunTask returns\nNOT_FOUND when it is called on a\ntask that has already succeeded or permanently failed.",
+	//   "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}:run",
+	//   "httpMethod": "POST",
+	//   "id": "cloudtasks.projects.locations.queues.tasks.run",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}:run",
+	//   "request": {
+	//     "$ref": "RunTaskRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Task"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/cloudtrace/v2/cloudtrace-api.json b/cloudtrace/v2/cloudtrace-api.json
index 03d8a7e..d68f2a0 100644
--- a/cloudtrace/v2/cloudtrace-api.json
+++ b/cloudtrace/v2/cloudtrace-api.json
@@ -180,7 +180,7 @@
       }
     }
   },
-  "revision": "20190102",
+  "revision": "20190312",
   "rootUrl": "https://cloudtrace.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -495,7 +495,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/cloudtrace/v2/cloudtrace-gen.go b/cloudtrace/v2/cloudtrace-gen.go
index 5304908..ad75565 100644
--- a/cloudtrace/v2/cloudtrace-gen.go
+++ b/cloudtrace/v2/cloudtrace-gen.go
@@ -766,20 +766,20 @@
 }
 
 // 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:
+// 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
+// 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
diff --git a/containeranalysis/v1alpha1/containeranalysis-api.json b/containeranalysis/v1alpha1/containeranalysis-api.json
index 519c218..354e32b 100644
--- a/containeranalysis/v1alpha1/containeranalysis-api.json
+++ b/containeranalysis/v1alpha1/containeranalysis-api.json
@@ -1204,7 +1204,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190315",
   "rootUrl": "https://containeranalysis.googleapis.com/",
   "schemas": {
     "Artifact": {
@@ -1333,7 +1333,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/containeranalysis/v1alpha1/containeranalysis-gen.go b/containeranalysis/v1alpha1/containeranalysis-gen.go
index 51c1b2d..6f902dd 100644
--- a/containeranalysis/v1alpha1/containeranalysis-gen.go
+++ b/containeranalysis/v1alpha1/containeranalysis-gen.go
@@ -617,8 +617,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
diff --git a/containeranalysis/v1beta1/containeranalysis-api.json b/containeranalysis/v1beta1/containeranalysis-api.json
index c1e526c..a92f8a2 100644
--- a/containeranalysis/v1beta1/containeranalysis-api.json
+++ b/containeranalysis/v1beta1/containeranalysis-api.json
@@ -852,7 +852,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190315",
   "rootUrl": "https://containeranalysis.googleapis.com/",
   "schemas": {
     "AliasContext": {
@@ -908,6 +908,9 @@
       "description": "Occurrence that represents a single \"attestation\". The authenticity of an\nattestation can be verified using the attached signature. If the verifier\ntrusts the public key of the signer, then verifying the signature is\nsufficient to establish trust. In this circumstance, the authority to which\nthis attestation is attached is primarily useful for look-up (how to find\nthis attestation if you already know the authority and artifact to be\nverified) and intent (which authority was this attestation intended to sign\nfor).",
       "id": "Attestation",
       "properties": {
+        "genericSignedAttestation": {
+          "$ref": "GenericSignedAttestation"
+        },
         "pgpSignedAttestation": {
           "$ref": "PgpSignedAttestation",
           "description": "A PGP signed attestation."
@@ -1051,7 +1054,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
@@ -1621,6 +1624,37 @@
       },
       "type": "object"
     },
+    "GenericSignedAttestation": {
+      "description": "An attestation wrapper that uses the Grafeas `Signature` message.\nThis attestation must define the `plaintext` that the `signatures` verify\nand any metadata necessary to interpret that plaintext.  The signatures\nshould always be over the `plaintext` bytestring.",
+      "id": "GenericSignedAttestation",
+      "properties": {
+        "contentType": {
+          "description": "Type (for example schema) of the attestation payload that was signed.\nThe verifier must ensure that the provided type is one that the verifier\nsupports, and that the attestation payload is a valid instantiation of that\ntype (for example by validating a JSON schema).",
+          "enum": [
+            "CONTENT_TYPE_UNSPECIFIED",
+            "SIMPLE_SIGNING_JSON"
+          ],
+          "enumDescriptions": [
+            "`ContentType` is not set.",
+            "Atomic format attestation signature. See\nhttps://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7/docs/atomic-signature.md\nThe payload extracted in `plaintext` is a JSON blob conforming to the\nlinked schema."
+          ],
+          "type": "string"
+        },
+        "serializedPayload": {
+          "description": "The serialized payload that is verified by one or more `signatures`.\nThe encoding and semantic meaning of this payload must match what is set in\n`content_type`.",
+          "format": "byte",
+          "type": "string"
+        },
+        "signatures": {
+          "description": "One or more signatures over `serialized_payload`.  Verifier implementations\nshould consider this attestation message verified if at least one\n`signature` verifies `serialized_payload`.  See `Signature` in common.proto\nfor more details on signature structure and verification.",
+          "items": {
+            "$ref": "Signature"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "GerritSourceContext": {
       "description": "A SourceContext referring to a Gerrit project.",
       "id": "GerritSourceContext",
@@ -2421,6 +2455,22 @@
       },
       "type": "object"
     },
+    "Signature": {
+      "description": "Verifiers (e.g. Kritis implementations) MUST verify signatures\nwith respect to the trust anchors defined in policy (e.g. a Kritis policy).\nTypically this means that the verifier has been configured with a map from\n`public_key_id` to public key material (and any required parameters, e.g.\nsigning algorithm).\n\nIn particular, verification implementations MUST NOT treat the signature\n`public_key_id` as anything more than a key lookup hint. The `public_key_id`\nDOES NOT validate or authenticate a public key; it only provides a mechanism\nfor quickly selecting a public key ALREADY CONFIGURED on the verifier through\na trusted channel. Verification implementations MUST reject signatures in any\nof the following circumstances:\n  * The `public_key_id` is not recognized by the verifier.\n  * The public key that `public_key_id` refers to does not verify the\n    signature with respect to the payload.\n\nThe `signature` contents SHOULD NOT be \"attached\" (where the payload is\nincluded with the serialized `signature` bytes). Verifiers MUST ignore any\n\"attached\" payload and only verify signatures with respect to explicitly\nprovided payload (e.g. a `payload` field on the proto message that holds\nthis Signature, or the canonical serialization of the proto message that\nholds this signature).",
+      "id": "Signature",
+      "properties": {
+        "publicKeyId": {
+          "description": "The identifier for the public key that verifies this signature.\n  * The `public_key_id` is required.\n  * The `public_key_id` MUST be an RFC3986 conformant URI.\n  * When possible, the `public_key_id` SHOULD be an immutable reference,\n    such as a cryptographic digest.\n\nExamples of valid `public_key_id`s:\n\nOpenPGP V4 public key fingerprint:\n  * \"openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA\"\nSee https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more\ndetails on this scheme.\n\nRFC6920 digest-named SubjectPublicKeyInfo (digest of the DER\nserialization):\n  * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\"\n  * \"nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5\"",
+          "type": "string"
+        },
+        "signature": {
+          "description": "The content of the signature, an opaque bytestring.\nThe payload that this signature verifies MUST be unambiguously provided\nwith the Signature during verification. A wrapper message might provide\nthe payload explicitly. Alternatively, a message might have a canonical\nserialization that can always be unambiguously computed to derive the\npayload.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Source": {
       "description": "Source describes the location of the source used for the build.",
       "id": "Source",
diff --git a/containeranalysis/v1beta1/containeranalysis-gen.go b/containeranalysis/v1beta1/containeranalysis-gen.go
index 9219ead..ecf4d9e 100644
--- a/containeranalysis/v1beta1/containeranalysis-gen.go
+++ b/containeranalysis/v1beta1/containeranalysis-gen.go
@@ -288,22 +288,24 @@
 // to sign
 // for).
 type Attestation struct {
+	GenericSignedAttestation *GenericSignedAttestation `json:"genericSignedAttestation,omitempty"`
+
 	// PgpSignedAttestation: A PGP signed attestation.
 	PgpSignedAttestation *PgpSignedAttestation `json:"pgpSignedAttestation,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g.
-	// "PgpSignedAttestation") 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
+	// "GenericSignedAttestation") 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. "PgpSignedAttestation") 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
+	// NullFields is a list of field names (e.g. "GenericSignedAttestation")
+	// 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.
@@ -675,8 +677,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
@@ -1603,6 +1604,72 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GenericSignedAttestation: An attestation wrapper that uses the
+// Grafeas `Signature` message.
+// This attestation must define the `plaintext` that the `signatures`
+// verify
+// and any metadata necessary to interpret that plaintext.  The
+// signatures
+// should always be over the `plaintext` bytestring.
+type GenericSignedAttestation struct {
+	// ContentType: Type (for example schema) of the attestation payload
+	// that was signed.
+	// The verifier must ensure that the provided type is one that the
+	// verifier
+	// supports, and that the attestation payload is a valid instantiation
+	// of that
+	// type (for example by validating a JSON schema).
+	//
+	// Possible values:
+	//   "CONTENT_TYPE_UNSPECIFIED" - `ContentType` is not set.
+	//   "SIMPLE_SIGNING_JSON" - Atomic format attestation signature.
+	// See
+	// https://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276
+	// c3e0f64e77723e7/docs/atomic-signature.md
+	// The payload extracted in `plaintext` is a JSON blob conforming to
+	// the
+	// linked schema.
+	ContentType string `json:"contentType,omitempty"`
+
+	// SerializedPayload: The serialized payload that is verified by one or
+	// more `signatures`.
+	// The encoding and semantic meaning of this payload must match what is
+	// set in
+	// `content_type`.
+	SerializedPayload string `json:"serializedPayload,omitempty"`
+
+	// Signatures: One or more signatures over `serialized_payload`.
+	// Verifier implementations
+	// should consider this attestation message verified if at least
+	// one
+	// `signature` verifies `serialized_payload`.  See `Signature` in
+	// common.proto
+	// for more details on signature structure and verification.
+	Signatures []*Signature `json:"signatures,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ContentType") 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. "ContentType") 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 *GenericSignedAttestation) MarshalJSON() ([]byte, error) {
+	type NoMethod GenericSignedAttestation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // GerritSourceContext: A SourceContext referring to a Gerrit project.
 type GerritSourceContext struct {
 	// AliasContext: An alias, which may be a branch or tag.
@@ -3071,6 +3138,104 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Signature: Verifiers (e.g. Kritis implementations) MUST verify
+// signatures
+// with respect to the trust anchors defined in policy (e.g. a Kritis
+// policy).
+// Typically this means that the verifier has been configured with a map
+// from
+// `public_key_id` to public key material (and any required parameters,
+// e.g.
+// signing algorithm).
+//
+// In particular, verification implementations MUST NOT treat the
+// signature
+// `public_key_id` as anything more than a key lookup hint. The
+// `public_key_id`
+// DOES NOT validate or authenticate a public key; it only provides a
+// mechanism
+// for quickly selecting a public key ALREADY CONFIGURED on the verifier
+// through
+// a trusted channel. Verification implementations MUST reject
+// signatures in any
+// of the following circumstances:
+//   * The `public_key_id` is not recognized by the verifier.
+//   * The public key that `public_key_id` refers to does not verify
+// the
+//     signature with respect to the payload.
+//
+// The `signature` contents SHOULD NOT be "attached" (where the payload
+// is
+// included with the serialized `signature` bytes). Verifiers MUST
+// ignore any
+// "attached" payload and only verify signatures with respect to
+// explicitly
+// provided payload (e.g. a `payload` field on the proto message that
+// holds
+// this Signature, or the canonical serialization of the proto message
+// that
+// holds this signature).
+type Signature struct {
+	// PublicKeyId: The identifier for the public key that verifies this
+	// signature.
+	//   * The `public_key_id` is required.
+	//   * The `public_key_id` MUST be an RFC3986 conformant URI.
+	//   * When possible, the `public_key_id` SHOULD be an immutable
+	// reference,
+	//     such as a cryptographic digest.
+	//
+	// Examples of valid `public_key_id`s:
+	//
+	// OpenPGP V4 public key fingerprint:
+	//   * "openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA"
+	// See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for
+	// more
+	// details on this scheme.
+	//
+	// RFC6920 digest-named SubjectPublicKeyInfo (digest of the
+	// DER
+	// serialization):
+	//   * "ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU"
+	//   *
+	// "nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95
+	// a1271589a5"
+	PublicKeyId string `json:"publicKeyId,omitempty"`
+
+	// Signature: The content of the signature, an opaque bytestring.
+	// The payload that this signature verifies MUST be unambiguously
+	// provided
+	// with the Signature during verification. A wrapper message might
+	// provide
+	// the payload explicitly. Alternatively, a message might have a
+	// canonical
+	// serialization that can always be unambiguously computed to derive
+	// the
+	// payload.
+	Signature string `json:"signature,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PublicKeyId") 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. "PublicKeyId") 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 *Signature) MarshalJSON() ([]byte, error) {
+	type NoMethod Signature
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Source: Source describes the location of the source used for the
 // build.
 type Source struct {
diff --git a/content/v2.1/content-api.json b/content/v2.1/content-api.json
index 13f4e88..e13cefc 100644
--- a/content/v2.1/content-api.json
+++ b/content/v2.1/content-api.json
@@ -15,7 +15,7 @@
   "description": "Manages product items, inventory, and Merchant Center accounts for Google Shopping.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/shopping-content",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/JLTtElhO_yZgirWM-iDsLteIwa0\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/TKtjOzQ2WKkyJyMETIOLZ50ooNI\"",
   "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"
@@ -561,6 +561,7 @@
     "datafeeds": {
       "methods": {
         "custombatch": {
+          "description": "Deletes, fetches, gets, inserts and updates multiple datafeeds in a single request.",
           "httpMethod": "POST",
           "id": "content.datafeeds.custombatch",
           "path": "datafeeds/batch",
@@ -769,6 +770,7 @@
     "datafeedstatuses": {
       "methods": {
         "custombatch": {
+          "description": "Gets multiple Merchant Center datafeed statuses in a single request.",
           "httpMethod": "POST",
           "id": "content.datafeedstatuses.custombatch",
           "path": "datafeedstatuses/batch",
@@ -1825,7 +1827,7 @@
           ]
         },
         "instorerefundlineitem": {
-          "description": "Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store).",
+          "description": "Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store).\nNote: We recommend calling the returnrefundlineitem method to refund in-store returns. We will issue the refund directly to the customer. This helps to prevent possible differences arising between merchant and Google transaction records. We also recommend having the point of sale system communicate with Google to ensure that customers do not receive a double refund by first refunding via Google then via an in-store return.",
           "httpMethod": "POST",
           "id": "content.orders.instorerefundlineitem",
           "parameterOrder": [
@@ -2884,7 +2886,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190320",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -5871,7 +5873,7 @@
           "type": "string"
         },
         "shipmentGroupId": {
-          "description": "[required] ID of the shipment group.",
+          "description": "[required] ID of the shipment group. It is assigned by the merchant in the shipLineItems method and is used to group multiple line items that have the same kind of shipping charges.",
           "type": "string"
         }
       },
@@ -6555,7 +6557,7 @@
       "id": "OrdersUpdateLineItemShippingDetailsRequest",
       "properties": {
         "deliverByDate": {
-          "description": "Updated delivery by date, in ISO 8601 format. If not specified only ship by date is updated.",
+          "description": "Updated delivery by date, in ISO 8601 format. If not specified only ship by date is updated.\n\nProvided date should be within 1 year timeframe and can not be a date in the past.",
           "type": "string"
         },
         "lineItemId": {
@@ -6571,7 +6573,7 @@
           "type": "string"
         },
         "shipByDate": {
-          "description": "Updated ship by date, in ISO 8601 format. If not specified only deliver by date is updated.",
+          "description": "Updated ship by date, in ISO 8601 format. If not specified only deliver by date is updated.\n\nProvided date should be within 1 year timeframe and can not be a date in the past.",
           "type": "string"
         }
       },
@@ -8472,7 +8474,7 @@
           "type": "array"
         },
         "shipmentGroupId": {
-          "description": "[required] ID of the shipment group.",
+          "description": "[required] ID of the shipment group. It is assigned by the merchant in the shipLineItems method and is used to group multiple line items that have the same kind of shipping charges.",
           "type": "string"
         }
       },
@@ -8490,7 +8492,7 @@
           "type": "string"
         },
         "shipmentUnitIds": {
-          "description": "[required] Unit IDs to define specific units within the line item.",
+          "description": "[required] The shipment unit ID is assigned by the merchant and defines individual quantities within a line item. The same ID can be assigned to units that are the same while units that differ must be assigned a different ID (for example: free or promotional units).",
           "items": {
             "type": "string"
           },
diff --git a/content/v2.1/content-gen.go b/content/v2.1/content-gen.go
index 1476417..b640fbe 100644
--- a/content/v2.1/content-gen.go
+++ b/content/v2.1/content-gen.go
@@ -4914,7 +4914,9 @@
 	// operations for a given order.
 	OperationId string `json:"operationId,omitempty"`
 
-	// ShipmentGroupId: [required] ID of the shipment group.
+	// ShipmentGroupId: [required] ID of the shipment group. It is assigned
+	// by the merchant in the shipLineItems method and is used to group
+	// multiple line items that have the same kind of shipping charges.
 	ShipmentGroupId string `json:"shipmentGroupId,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "InvoiceId") to
@@ -6264,6 +6266,9 @@
 type OrdersUpdateLineItemShippingDetailsRequest struct {
 	// DeliverByDate: Updated delivery by date, in ISO 8601 format. If not
 	// specified only ship by date is updated.
+	//
+	// Provided date should be within 1 year timeframe and can not be a date
+	// in the past.
 	DeliverByDate string `json:"deliverByDate,omitempty"`
 
 	// LineItemId: The ID of the line item to set metadata. Either
@@ -6281,6 +6286,9 @@
 
 	// ShipByDate: Updated ship by date, in ISO 8601 format. If not
 	// specified only deliver by date is updated.
+	//
+	// Provided date should be within 1 year timeframe and can not be a date
+	// in the past.
 	ShipByDate string `json:"shipByDate,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "DeliverByDate") to
@@ -8773,7 +8781,9 @@
 	// LineItemInvoices: [required] Invoice details per line item.
 	LineItemInvoices []*ShipmentInvoiceLineItemInvoice `json:"lineItemInvoices,omitempty"`
 
-	// ShipmentGroupId: [required] ID of the shipment group.
+	// ShipmentGroupId: [required] ID of the shipment group. It is assigned
+	// by the merchant in the shipLineItems method and is used to group
+	// multiple line items that have the same kind of shipping charges.
 	ShipmentGroupId string `json:"shipmentGroupId,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "InvoiceSummary") to
@@ -8809,8 +8819,11 @@
 	// products service. Either lineItemId or productId must be set.
 	ProductId string `json:"productId,omitempty"`
 
-	// ShipmentUnitIds: [required] Unit IDs to define specific units within
-	// the line item.
+	// ShipmentUnitIds: [required] The shipment unit ID is assigned by the
+	// merchant and defines individual quantities within a line item. The
+	// same ID can be assigned to units that are the same while units that
+	// differ must be assigned a different ID (for example: free or
+	// promotional units).
 	ShipmentUnitIds []string `json:"shipmentUnitIds,omitempty"`
 
 	// UnitInvoice: [required] Invoice details for a single unit.
@@ -12066,7 +12079,8 @@
 	header_                     http.Header
 }
 
-// Custombatch:
+// Custombatch: Deletes, fetches, gets, inserts and updates multiple
+// datafeeds in a single request.
 func (r *DatafeedsService) Custombatch(datafeedscustombatchrequest *DatafeedsCustomBatchRequest) *DatafeedsCustombatchCall {
 	c := &DatafeedsCustombatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.datafeedscustombatchrequest = datafeedscustombatchrequest
@@ -12160,6 +12174,7 @@
 	}
 	return ret, nil
 	// {
+	//   "description": "Deletes, fetches, gets, inserts and updates multiple datafeeds in a single request.",
 	//   "httpMethod": "POST",
 	//   "id": "content.datafeeds.custombatch",
 	//   "path": "datafeeds/batch",
@@ -13070,7 +13085,8 @@
 	header_                            http.Header
 }
 
-// Custombatch:
+// Custombatch: Gets multiple Merchant Center datafeed statuses in a
+// single request.
 func (r *DatafeedstatusesService) Custombatch(datafeedstatusescustombatchrequest *DatafeedstatusesCustomBatchRequest) *DatafeedstatusesCustombatchCall {
 	c := &DatafeedstatusesCustombatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.datafeedstatusescustombatchrequest = datafeedstatusescustombatchrequest
@@ -13165,6 +13181,7 @@
 	}
 	return ret, nil
 	// {
+	//   "description": "Gets multiple Merchant Center datafeed statuses in a single request.",
 	//   "httpMethod": "POST",
 	//   "id": "content.datafeedstatuses.custombatch",
 	//   "path": "datafeedstatuses/batch",
@@ -17746,6 +17763,13 @@
 // Instorerefundlineitem: Notifies that item return and refund was
 // handled directly by merchant outside of Google payments processing
 // (e.g. cash refund done in store).
+// Note: We recommend calling the returnrefundlineitem method to refund
+// in-store returns. We will issue the refund directly to the customer.
+// This helps to prevent possible differences arising between merchant
+// and Google transaction records. We also recommend having the point of
+// sale system communicate with Google to ensure that customers do not
+// receive a double refund by first refunding via Google then via an
+// in-store return.
 func (r *OrdersService) Instorerefundlineitem(merchantId uint64, orderId string, ordersinstorerefundlineitemrequest *OrdersInStoreRefundLineItemRequest) *OrdersInstorerefundlineitemCall {
 	c := &OrdersInstorerefundlineitemCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.merchantId = merchantId
@@ -17846,7 +17870,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store).",
+	//   "description": "Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store).\nNote: We recommend calling the returnrefundlineitem method to refund in-store returns. We will issue the refund directly to the customer. This helps to prevent possible differences arising between merchant and Google transaction records. We also recommend having the point of sale system communicate with Google to ensure that customers do not receive a double refund by first refunding via Google then via an in-store return.",
 	//   "httpMethod": "POST",
 	//   "id": "content.orders.instorerefundlineitem",
 	//   "parameterOrder": [
diff --git a/content/v2/content-api.json b/content/v2/content-api.json
index 916c57e..3f8871c 100644
--- a/content/v2/content-api.json
+++ b/content/v2/content-api.json
@@ -15,7 +15,7 @@
   "description": "Manages product items, inventory, and Merchant Center accounts for Google Shopping.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/shopping-content",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/_vzcX2m-YUsApzTF74HdX3hw9hM\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/2Mo4dCsobcaPRB5CjTNld6_m0MM\"",
   "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"
@@ -675,6 +675,7 @@
     "datafeeds": {
       "methods": {
         "custombatch": {
+          "description": "Deletes, fetches, gets, inserts and updates multiple datafeeds in a single request.",
           "httpMethod": "POST",
           "id": "content.datafeeds.custombatch",
           "parameters": {
@@ -950,6 +951,7 @@
     "datafeedstatuses": {
       "methods": {
         "custombatch": {
+          "description": "Gets multiple Merchant Center datafeed statuses in a single request.",
           "httpMethod": "POST",
           "id": "content.datafeedstatuses.custombatch",
           "path": "datafeedstatuses/batch",
@@ -2285,7 +2287,7 @@
           ]
         },
         "instorerefundlineitem": {
-          "description": "Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store).",
+          "description": "Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store).\nNote: We recommend calling the returnrefundlineitem method to refund in-store returns. We will issue the refund directly to the customer. This helps to prevent possible differences arising between merchant and Google transaction records. We also recommend having the point of sale system communicate with Google to ensure that customers do not receive a double refund by first refunding via Google then via an in-store return.",
           "httpMethod": "POST",
           "id": "content.orders.instorerefundlineitem",
           "parameterOrder": [
@@ -3482,7 +3484,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190320",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -6865,7 +6867,7 @@
           "type": "string"
         },
         "shipmentGroupId": {
-          "description": "[required] ID of the shipment group.",
+          "description": "[required] ID of the shipment group. It is assigned by the merchant in the shipLineItems method and is used to group multiple line items that have the same kind of shipping charges.",
           "type": "string"
         }
       },
@@ -7748,7 +7750,7 @@
       "id": "OrdersCustomBatchRequestEntryUpdateLineItemShippingDetails",
       "properties": {
         "deliverByDate": {
-          "description": "Updated delivery by date, in ISO 8601 format. If not specified only ship by date is updated.",
+          "description": "Updated delivery by date, in ISO 8601 format. If not specified only ship by date is updated.\n\nProvided date should be within 1 year timeframe and can not be a date in the past.",
           "type": "string"
         },
         "lineItemId": {
@@ -7760,7 +7762,7 @@
           "type": "string"
         },
         "shipByDate": {
-          "description": "Updated ship by date, in ISO 8601 format. If not specified only deliver by date is updated.",
+          "description": "Updated ship by date, in ISO 8601 format. If not specified only deliver by date is updated.\n\nProvided date should be within 1 year timeframe and can not be a date in the past.",
           "type": "string"
         }
       },
@@ -8232,7 +8234,7 @@
       "id": "OrdersUpdateLineItemShippingDetailsRequest",
       "properties": {
         "deliverByDate": {
-          "description": "Updated delivery by date, in ISO 8601 format. If not specified only ship by date is updated.",
+          "description": "Updated delivery by date, in ISO 8601 format. If not specified only ship by date is updated.\n\nProvided date should be within 1 year timeframe and can not be a date in the past.",
           "type": "string"
         },
         "lineItemId": {
@@ -8248,7 +8250,7 @@
           "type": "string"
         },
         "shipByDate": {
-          "description": "Updated ship by date, in ISO 8601 format. If not specified only deliver by date is updated.",
+          "description": "Updated ship by date, in ISO 8601 format. If not specified only deliver by date is updated.\n\nProvided date should be within 1 year timeframe and can not be a date in the past.",
           "type": "string"
         }
       },
@@ -10154,7 +10156,7 @@
           "type": "array"
         },
         "shipmentGroupId": {
-          "description": "[required] ID of the shipment group.",
+          "description": "[required] ID of the shipment group. It is assigned by the merchant in the shipLineItems method and is used to group multiple line items that have the same kind of shipping charges.",
           "type": "string"
         }
       },
@@ -10172,7 +10174,7 @@
           "type": "string"
         },
         "shipmentUnitIds": {
-          "description": "[required] Unit IDs to define specific units within the line item.",
+          "description": "[required] The shipment unit ID is assigned by the merchant and defines individual quantities within a line item. The same ID can be assigned to units that are the same while units that differ must be assigned a different ID (for example: free or promotional units).",
           "items": {
             "type": "string"
           },
diff --git a/content/v2/content-gen.go b/content/v2/content-gen.go
index 33ed282..2859c52 100644
--- a/content/v2/content-gen.go
+++ b/content/v2/content-gen.go
@@ -5538,7 +5538,9 @@
 	// operations for a given order.
 	OperationId string `json:"operationId,omitempty"`
 
-	// ShipmentGroupId: [required] ID of the shipment group.
+	// ShipmentGroupId: [required] ID of the shipment group. It is assigned
+	// by the merchant in the shipLineItems method and is used to group
+	// multiple line items that have the same kind of shipping charges.
 	ShipmentGroupId string `json:"shipmentGroupId,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "InvoiceId") to
@@ -7153,6 +7155,9 @@
 type OrdersCustomBatchRequestEntryUpdateLineItemShippingDetails struct {
 	// DeliverByDate: Updated delivery by date, in ISO 8601 format. If not
 	// specified only ship by date is updated.
+	//
+	// Provided date should be within 1 year timeframe and can not be a date
+	// in the past.
 	DeliverByDate string `json:"deliverByDate,omitempty"`
 
 	// LineItemId: The ID of the line item to set metadata. Either
@@ -7166,6 +7171,9 @@
 
 	// ShipByDate: Updated ship by date, in ISO 8601 format. If not
 	// specified only deliver by date is updated.
+	//
+	// Provided date should be within 1 year timeframe and can not be a date
+	// in the past.
 	ShipByDate string `json:"shipByDate,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "DeliverByDate") to
@@ -8010,6 +8018,9 @@
 type OrdersUpdateLineItemShippingDetailsRequest struct {
 	// DeliverByDate: Updated delivery by date, in ISO 8601 format. If not
 	// specified only ship by date is updated.
+	//
+	// Provided date should be within 1 year timeframe and can not be a date
+	// in the past.
 	DeliverByDate string `json:"deliverByDate,omitempty"`
 
 	// LineItemId: The ID of the line item to set metadata. Either
@@ -8027,6 +8038,9 @@
 
 	// ShipByDate: Updated ship by date, in ISO 8601 format. If not
 	// specified only deliver by date is updated.
+	//
+	// Provided date should be within 1 year timeframe and can not be a date
+	// in the past.
 	ShipByDate string `json:"shipByDate,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "DeliverByDate") to
@@ -10492,7 +10506,9 @@
 	// LineItemInvoices: [required] Invoice details per line item.
 	LineItemInvoices []*ShipmentInvoiceLineItemInvoice `json:"lineItemInvoices,omitempty"`
 
-	// ShipmentGroupId: [required] ID of the shipment group.
+	// ShipmentGroupId: [required] ID of the shipment group. It is assigned
+	// by the merchant in the shipLineItems method and is used to group
+	// multiple line items that have the same kind of shipping charges.
 	ShipmentGroupId string `json:"shipmentGroupId,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "InvoiceSummary") to
@@ -10528,8 +10544,11 @@
 	// products service. Either lineItemId or productId must be set.
 	ProductId string `json:"productId,omitempty"`
 
-	// ShipmentUnitIds: [required] Unit IDs to define specific units within
-	// the line item.
+	// ShipmentUnitIds: [required] The shipment unit ID is assigned by the
+	// merchant and defines individual quantities within a line item. The
+	// same ID can be assigned to units that are the same while units that
+	// differ must be assigned a different ID (for example: free or
+	// promotional units).
 	ShipmentUnitIds []string `json:"shipmentUnitIds,omitempty"`
 
 	// UnitInvoice: [required] Invoice details for a single unit.
@@ -14320,7 +14339,8 @@
 	header_                     http.Header
 }
 
-// Custombatch:
+// Custombatch: Deletes, fetches, gets, inserts and updates multiple
+// datafeeds in a single request.
 func (r *DatafeedsService) Custombatch(datafeedscustombatchrequest *DatafeedsCustomBatchRequest) *DatafeedsCustombatchCall {
 	c := &DatafeedsCustombatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.datafeedscustombatchrequest = datafeedscustombatchrequest
@@ -14422,6 +14442,7 @@
 	}
 	return ret, nil
 	// {
+	//   "description": "Deletes, fetches, gets, inserts and updates multiple datafeeds in a single request.",
 	//   "httpMethod": "POST",
 	//   "id": "content.datafeeds.custombatch",
 	//   "parameters": {
@@ -15554,7 +15575,8 @@
 	header_                            http.Header
 }
 
-// Custombatch:
+// Custombatch: Gets multiple Merchant Center datafeed statuses in a
+// single request.
 func (r *DatafeedstatusesService) Custombatch(datafeedstatusescustombatchrequest *DatafeedstatusesCustomBatchRequest) *DatafeedstatusesCustombatchCall {
 	c := &DatafeedstatusesCustombatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.datafeedstatusescustombatchrequest = datafeedstatusescustombatchrequest
@@ -15649,6 +15671,7 @@
 	}
 	return ret, nil
 	// {
+	//   "description": "Gets multiple Merchant Center datafeed statuses in a single request.",
 	//   "httpMethod": "POST",
 	//   "id": "content.datafeedstatuses.custombatch",
 	//   "path": "datafeedstatuses/batch",
@@ -21451,6 +21474,13 @@
 // Instorerefundlineitem: Notifies that item return and refund was
 // handled directly by merchant outside of Google payments processing
 // (e.g. cash refund done in store).
+// Note: We recommend calling the returnrefundlineitem method to refund
+// in-store returns. We will issue the refund directly to the customer.
+// This helps to prevent possible differences arising between merchant
+// and Google transaction records. We also recommend having the point of
+// sale system communicate with Google to ensure that customers do not
+// receive a double refund by first refunding via Google then via an
+// in-store return.
 func (r *OrdersService) Instorerefundlineitem(merchantId uint64, orderId string, ordersinstorerefundlineitemrequest *OrdersInStoreRefundLineItemRequest) *OrdersInstorerefundlineitemCall {
 	c := &OrdersInstorerefundlineitemCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.merchantId = merchantId
@@ -21551,7 +21581,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store).",
+	//   "description": "Notifies that item return and refund was handled directly by merchant outside of Google payments processing (e.g. cash refund done in store).\nNote: We recommend calling the returnrefundlineitem method to refund in-store returns. We will issue the refund directly to the customer. This helps to prevent possible differences arising between merchant and Google transaction records. We also recommend having the point of sale system communicate with Google to ensure that customers do not receive a double refund by first refunding via Google then via an in-store return.",
 	//   "httpMethod": "POST",
 	//   "id": "content.orders.instorerefundlineitem",
 	//   "parameterOrder": [
diff --git a/dialogflow/v2beta1/dialogflow-api.json b/dialogflow/v2beta1/dialogflow-api.json
index 6b2f243..446e33a 100644
--- a/dialogflow/v2beta1/dialogflow-api.json
+++ b/dialogflow/v2beta1/dialogflow-api.json
@@ -364,7 +364,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -424,7 +424,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+                      "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -455,7 +455,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+                      "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -497,7 +497,7 @@
                   ],
                   "parameters": {
                     "languageCode": {
-                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+                      "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1084,7 +1084,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1153,7 +1153,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+                      "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1193,7 +1193,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent before they can be used.",
+                      "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -1244,7 +1244,7 @@
                       "type": "string"
                     },
                     "languageCode": {
-                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+                      "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
                       "location": "query",
                       "type": "string"
                     },
@@ -2386,7 +2386,7 @@
       }
     }
   },
-  "revision": "20190311",
+  "revision": "20190318",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowV2BatchUpdateEntityTypesResponse": {
@@ -2435,7 +2435,7 @@
             "description": "Properties of the object.",
             "type": "any"
           },
-          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this doc](https://dialogflow.com/docs/actions-and-parameters) for\nsyntax.",
+          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)\nfor syntax.",
           "type": "object"
         }
       },
@@ -2512,7 +2512,7 @@
       "id": "GoogleCloudDialogflowV2EventInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this query. See [Language\nSupport](https://dialogflow.com/docs/languages) for a list of the\ncurrently supported language codes. Note that queries in the same session\ndo not necessarily need to specify the same language.",
+          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "name": {
@@ -3257,7 +3257,7 @@
           "type": "number"
         },
         "languageCode": {
-          "description": "The language that was triggered during intent detection.\nSee [Language Support](https://dialogflow.com/docs/reference/language)\nfor a list of the currently supported language codes.",
+          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes.",
           "type": "string"
         },
         "outputContexts": {
@@ -3368,7 +3368,7 @@
       "id": "GoogleCloudDialogflowV2beta1Agent",
       "properties": {
         "avatarUri": {
-          "description": "Optional. The URI of the agent's avatar.\nAvatars are used throughout the Dialogflow console and in the self-hosted\n[Web Demo](https://dialogflow.com/docs/integrations/web-demo) integration.",
+          "description": "Optional. The URI of the agent's avatar.\nAvatars are used throughout the Dialogflow console and in the self-hosted\n[Web\nDemo](https://cloud.google.com/dialogflow-enterprise/docs/integrations/web-demo)\nintegration.",
           "type": "string"
         },
         "classificationThreshold": {
@@ -3377,7 +3377,7 @@
           "type": "number"
         },
         "defaultLanguageCode": {
-          "description": "Required. The default language of the agent as a language tag. See\n[Language Support](https://dialogflow.com/docs/reference/language) for a\nlist of the currently supported language codes.\nThis field cannot be set by the `Update` method.",
+          "description": "Required. The default language of the agent as a language tag. See\n[Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. This field cannot be\nset by the `Update` method.",
           "type": "string"
         },
         "description": {
@@ -3436,7 +3436,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         }
       },
@@ -3454,7 +3454,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         }
       },
@@ -3500,7 +3500,7 @@
           "type": "array"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+          "description": "Optional. The language of entity synonyms defined in `entities`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -3524,7 +3524,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Optional. The language of entity synonyms defined in `entity_types`. If not\nspecified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+          "description": "Optional. The language of entity synonyms defined in `entity_types`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -3574,7 +3574,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intents`. If not specified, the agent's default language is\nused. [More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+          "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intents`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
           "type": "string"
         },
         "updateMask": {
@@ -3617,7 +3617,7 @@
             "description": "Properties of the object.",
             "type": "any"
           },
-          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this doc](https://dialogflow.com/docs/actions-and-parameters) for\nsyntax.",
+          "description": "Optional. The collection of parameters associated with this context.\nRefer to [this\ndoc](https://cloud.google.com/dialogflow-enterprise/docs/intents-actions-parameters)\nfor syntax.",
           "type": "object"
         }
       },
@@ -3816,7 +3816,7 @@
       "id": "GoogleCloudDialogflowV2beta1EventInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this query. See [Language\nSupport](https://dialogflow.com/docs/languages) for a list of the\ncurrently supported language codes. Note that queries in the same session\ndo not necessarily need to specify the same language.",
+          "description": "Required. The language of this query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "name": {
@@ -3906,7 +3906,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Required. The language of the supplied audio. Dialogflow does not do\ntranslations. See [Language\nSupport](https://dialogflow.com/docs/languages) for a list of the\ncurrently supported language codes. Note that queries in the same session\ndo not necessarily need to specify the same language.",
+          "description": "Required. The language of the supplied audio. Dialogflow does not do\ntranslations. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "model": {
@@ -5021,7 +5021,7 @@
           "description": "The result from Knowledge Connector (if any), ordered by decreasing\n`KnowledgeAnswers.match_confidence`."
         },
         "languageCode": {
-          "description": "The language that was triggered during intent detection.\nSee [Language Support](https://dialogflow.com/docs/reference/language)\nfor a list of the currently supported language codes.",
+          "description": "The language that was triggered during intent detection.\nSee [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes.",
           "type": "string"
         },
         "outputContexts": {
@@ -5216,7 +5216,7 @@
       "id": "GoogleCloudDialogflowV2beta1TextInput",
       "properties": {
         "languageCode": {
-          "description": "Required. The language of this conversational query. See [Language\nSupport](https://dialogflow.com/docs/languages) for a list of the\ncurrently supported language codes. Note that queries in the same session\ndo not necessarily need to specify the same language.",
+          "description": "Required. The language of this conversational query. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "text": {
diff --git a/dialogflow/v2beta1/dialogflow-gen.go b/dialogflow/v2beta1/dialogflow-gen.go
index 7ba2b82..7ab1f2a 100644
--- a/dialogflow/v2beta1/dialogflow-gen.go
+++ b/dialogflow/v2beta1/dialogflow-gen.go
@@ -434,9 +434,11 @@
 
 	// Parameters: Optional. The collection of parameters associated with
 	// this context.
-	// Refer to [this
-	// doc](https://dialogflow.com/docs/actions-and-parameters) for
-	// syntax.
+	// Refer to
+	// [this
+	// doc](https://cloud.google.com/dialogflow-enterprise/docs/intents
+	// -actions-parameters)
+	// for syntax.
 	Parameters googleapi.RawMessage `json:"parameters,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "LifespanCount") to
@@ -599,11 +601,12 @@
 type GoogleCloudDialogflowV2EventInput struct {
 	// LanguageCode: Required. The language of this query. See
 	// [Language
-	// Support](https://dialogflow.com/docs/languages) for a list of
-	// the
-	// currently supported language codes. Note that queries in the same
-	// session
-	// do not necessarily need to specify the same language.
+	// Support](https://cloud.google.com/dialogflow-enterprise/docs
+	// /reference/language)
+	// for a list of the currently supported language codes. Note that
+	// queries in
+	// the same session do not necessarily need to specify the same
+	// language.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// Name: Required. The unique identifier of the event.
@@ -2028,8 +2031,10 @@
 
 	// LanguageCode: The language that was triggered during intent
 	// detection.
-	// See [Language
-	// Support](https://dialogflow.com/docs/reference/language)
+	// See
+	// [Language
+	// Support](https://cloud.google.com/dialogflow-enterprise/docs
+	// /reference/language)
 	// for a list of the currently supported language codes.
 	LanguageCode string `json:"languageCode,omitempty"`
 
@@ -2261,7 +2266,9 @@
 	// AvatarUri: Optional. The URI of the agent's avatar.
 	// Avatars are used throughout the Dialogflow console and in the
 	// self-hosted
-	// [Web Demo](https://dialogflow.com/docs/integrations/web-demo)
+	// [Web
+	// Demo](https://cloud.google.com/dialogflow-enterprise/
+	// docs/integrations/web-demo)
 	// integration.
 	AvatarUri string `json:"avatarUri,omitempty"`
 
@@ -2281,11 +2288,14 @@
 	ClassificationThreshold float64 `json:"classificationThreshold,omitempty"`
 
 	// DefaultLanguageCode: Required. The default language of the agent as a
-	// language tag. See
-	// [Language Support](https://dialogflow.com/docs/reference/language)
-	// for a
-	// list of the currently supported language codes.
-	// This field cannot be set by the `Update` method.
+	// language tag.
+	// See
+	// [Language
+	// Support](https://cloud.google.com/dialogflow-enterprise/
+	// docs/reference/language)
+	// for a list of the currently supported language codes. This field
+	// cannot be
+	// set by the `Update` method.
 	DefaultLanguageCode string `json:"defaultLanguageCode,omitempty"`
 
 	// Description: Optional. The description of this agent.
@@ -2377,13 +2387,14 @@
 
 	// LanguageCode: Optional. The language of entity synonyms defined in
 	// `entities`. If not
-	// specified, the agent's default language is used.
-	// [More than a
-	// dozen
-	// languages](https://dialogflow.com/docs/reference/language) are
-	// supported.
-	// Note: languages must be enabled in the agent, before they can be
+	// specified, the agent's default language is
 	// used.
+	// [Many
+	// languages](https://cloud.google.com/dialogflow-enterprise/
+	// docs/reference/language)
+	// are supported. Note: languages must be enabled in the agent before
+	// they can
+	// be used.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Entities") to
@@ -2421,13 +2432,14 @@
 
 	// LanguageCode: Optional. The language of entity synonyms defined in
 	// `entities`. If not
-	// specified, the agent's default language is used.
-	// [More than a
-	// dozen
-	// languages](https://dialogflow.com/docs/reference/language) are
-	// supported.
-	// Note: languages must be enabled in the agent, before they can be
+	// specified, the agent's default language is
 	// used.
+	// [Many
+	// languages](https://cloud.google.com/dialogflow-enterprise/
+	// docs/reference/language)
+	// are supported. Note: languages must be enabled in the agent before
+	// they can
+	// be used.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "EntityValues") to
@@ -2524,13 +2536,14 @@
 
 	// LanguageCode: Optional. The language of entity synonyms defined in
 	// `entities`. If not
-	// specified, the agent's default language is used.
-	// [More than a
-	// dozen
-	// languages](https://dialogflow.com/docs/reference/language) are
-	// supported.
-	// Note: languages must be enabled in the agent, before they can be
+	// specified, the agent's default language is
 	// used.
+	// [Many
+	// languages](https://cloud.google.com/dialogflow-enterprise/
+	// docs/reference/language)
+	// are supported. Note: languages must be enabled in the agent before
+	// they can
+	// be used.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// UpdateMask: Optional. The mask to control which fields get updated.
@@ -2577,13 +2590,14 @@
 
 	// LanguageCode: Optional. The language of entity synonyms defined in
 	// `entity_types`. If not
-	// specified, the agent's default language is used.
-	// [More than a
-	// dozen
-	// languages](https://dialogflow.com/docs/reference/language) are
-	// supported.
-	// Note: languages must be enabled in the agent, before they can be
+	// specified, the agent's default language is
 	// used.
+	// [Many
+	// languages](https://cloud.google.com/dialogflow-enterprise/
+	// docs/reference/language)
+	// are supported. Note: languages must be enabled in the agent before
+	// they can
+	// be used.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// UpdateMask: Optional. The mask to control which fields get updated.
@@ -2669,12 +2683,13 @@
 	// and rich messages
 	// defined in `intents`. If not specified, the agent's default language
 	// is
-	// used. [More than a
-	// dozen
-	// languages](https://dialogflow.com/docs/reference/language) are
-	// supported.
-	// Note: languages must be enabled in the agent, before they can be
 	// used.
+	// [Many
+	// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
+	// eference/language)
+	// are supported. Note: languages must be enabled in the agent before
+	// they can
+	// be used.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// UpdateMask: Optional. The mask to control which fields get updated.
@@ -2764,9 +2779,11 @@
 
 	// Parameters: Optional. The collection of parameters associated with
 	// this context.
-	// Refer to [this
-	// doc](https://dialogflow.com/docs/actions-and-parameters) for
-	// syntax.
+	// Refer to
+	// [this
+	// doc](https://cloud.google.com/dialogflow-enterprise/docs/intents
+	// -actions-parameters)
+	// for syntax.
 	Parameters googleapi.RawMessage `json:"parameters,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -3201,11 +3218,12 @@
 type GoogleCloudDialogflowV2beta1EventInput struct {
 	// LanguageCode: Required. The language of this query. See
 	// [Language
-	// Support](https://dialogflow.com/docs/languages) for a list of
-	// the
-	// currently supported language codes. Note that queries in the same
-	// session
-	// do not necessarily need to specify the same language.
+	// Support](https://cloud.google.com/dialogflow-enterprise/docs
+	// /reference/language)
+	// for a list of the currently supported language codes. Note that
+	// queries in
+	// the same session do not necessarily need to specify the same
+	// language.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// Name: Required. The unique identifier of the event.
@@ -3431,11 +3449,12 @@
 	// Dialogflow does not do
 	// translations. See
 	// [Language
-	// Support](https://dialogflow.com/docs/languages) for a list of
-	// the
-	// currently supported language codes. Note that queries in the same
-	// session
-	// do not necessarily need to specify the same language.
+	// Support](https://cloud.google.com/dialogflow-enterprise/docs
+	// /reference/language)
+	// for a list of the currently supported language codes. Note that
+	// queries in
+	// the same session do not necessarily need to specify the same
+	// language.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// Model: Optional. Which Speech model to select for the given request.
@@ -5658,8 +5677,10 @@
 
 	// LanguageCode: The language that was triggered during intent
 	// detection.
-	// See [Language
-	// Support](https://dialogflow.com/docs/reference/language)
+	// See
+	// [Language
+	// Support](https://cloud.google.com/dialogflow-enterprise/docs
+	// /reference/language)
 	// for a list of the currently supported language codes.
 	LanguageCode string `json:"languageCode,omitempty"`
 
@@ -6152,12 +6173,14 @@
 // language text to be processed.
 type GoogleCloudDialogflowV2beta1TextInput struct {
 	// LanguageCode: Required. The language of this conversational query.
-	// See [Language
-	// Support](https://dialogflow.com/docs/languages) for a list of
-	// the
-	// currently supported language codes. Note that queries in the same
-	// session
-	// do not necessarily need to specify the same language.
+	// See
+	// [Language
+	// Support](https://cloud.google.com/dialogflow-enterprise/docs
+	// /reference/language)
+	// for a list of the currently supported language codes. Note that
+	// queries in
+	// the same session do not necessarily need to specify the same
+	// language.
 	LanguageCode string `json:"languageCode,omitempty"`
 
 	// Text: Required. The UTF-8 encoded natural language text to be
@@ -7895,13 +7918,14 @@
 
 // LanguageCode sets the optional parameter "languageCode": The language
 // of entity synonyms defined in `entity_type`. If not
-// specified, the agent's default language is used.
-// [More than a
-// dozen
-// languages](https://dialogflow.com/docs/reference/language) are
-// supported.
-// Note: languages must be enabled in the agent, before they can be
+// specified, the agent's default language is
 // used.
+// [Many
+// languages](https://cloud.google.com/dialogflow-enterprise/
+// docs/reference/language)
+// are supported. Note: languages must be enabled in the agent before
+// they can
+// be used.
 func (c *ProjectsAgentEntityTypesCreateCall) LanguageCode(languageCode string) *ProjectsAgentEntityTypesCreateCall {
 	c.urlParams_.Set("languageCode", languageCode)
 	return c
@@ -8007,7 +8031,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8184,13 +8208,14 @@
 
 // LanguageCode sets the optional parameter "languageCode": The language
 // to retrieve entity synonyms for. If not specified,
-// the agent's default language is used.
-// [More than a
-// dozen
-// languages](https://dialogflow.com/docs/reference/language) are
-// supported.
-// Note: languages must be enabled in the agent, before they can be
+// the agent's default language is
 // used.
+// [Many
+// languages](https://cloud.google.com/dialogflow-enterprise/
+// docs/reference/language)
+// are supported. Note: languages must be enabled in the agent before
+// they can
+// be used.
 func (c *ProjectsAgentEntityTypesGetCall) LanguageCode(languageCode string) *ProjectsAgentEntityTypesGetCall {
 	c.urlParams_.Set("languageCode", languageCode)
 	return c
@@ -8304,7 +8329,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+	//       "description": "Optional. The language to retrieve entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8348,13 +8373,14 @@
 
 // LanguageCode sets the optional parameter "languageCode": The language
 // to list entity synonyms for. If not specified,
-// the agent's default language is used.
-// [More than a
-// dozen
-// languages](https://dialogflow.com/docs/reference/language) are
-// supported.
-// Note: languages must be enabled in the agent, before they can be
+// the agent's default language is
 // used.
+// [Many
+// languages](https://cloud.google.com/dialogflow-enterprise/
+// docs/reference/language)
+// are supported. Note: languages must be enabled in the agent before
+// they can
+// be used.
 func (c *ProjectsAgentEntityTypesListCall) LanguageCode(languageCode string) *ProjectsAgentEntityTypesListCall {
 	c.urlParams_.Set("languageCode", languageCode)
 	return c
@@ -8484,7 +8510,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+	//       "description": "Optional. The language to list entity synonyms for. If not specified,\nthe agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -8561,13 +8587,14 @@
 
 // LanguageCode sets the optional parameter "languageCode": The language
 // of entity synonyms defined in `entity_type`. If not
-// specified, the agent's default language is used.
-// [More than a
-// dozen
-// languages](https://dialogflow.com/docs/reference/language) are
-// supported.
-// Note: languages must be enabled in the agent, before they can be
+// specified, the agent's default language is
 // used.
+// [Many
+// languages](https://cloud.google.com/dialogflow-enterprise/
+// docs/reference/language)
+// are supported. Note: languages must be enabled in the agent before
+// they can
+// be used.
 func (c *ProjectsAgentEntityTypesPatchCall) LanguageCode(languageCode string) *ProjectsAgentEntityTypesPatchCall {
 	c.urlParams_.Set("languageCode", languageCode)
 	return c
@@ -8680,7 +8707,7 @@
 	//   ],
 	//   "parameters": {
 	//     "languageCode": {
-	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+	//       "description": "Optional. The language of entity synonyms defined in `entity_type`. If not\nspecified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -11279,12 +11306,13 @@
 // of training phrases, parameters and rich messages
 // defined in `intent`. If not specified, the agent's default language
 // is
-// used. [More than a
-// dozen
-// languages](https://dialogflow.com/docs/reference/language) are
-// supported.
-// Note: languages must be enabled in the agent, before they can be
 // used.
+// [Many
+// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
+// eference/language)
+// are supported. Note: languages must be enabled in the agent before
+// they can
+// be used.
 func (c *ProjectsAgentIntentsCreateCall) LanguageCode(languageCode string) *ProjectsAgentIntentsCreateCall {
 	c.urlParams_.Set("languageCode", languageCode)
 	return c
@@ -11399,7 +11427,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -11590,12 +11618,12 @@
 // to retrieve training phrases, parameters and rich
 // messages for. If not specified, the agent's default language is
 // used.
-// [More than a
-// dozen
-// languages](https://dialogflow.com/docs/reference/language) are
-// supported.
-// Note: languages must be enabled in the agent, before they can be
-// used.
+// [Many
+// languages](https://cloud.google.com/dialogflow-enterprise/
+// docs/reference/language)
+// are supported. Note: languages must be enabled in the agent before
+// they can
+// be used.
 func (c *ProjectsAgentIntentsGetCall) LanguageCode(languageCode string) *ProjectsAgentIntentsGetCall {
 	c.urlParams_.Set("languageCode", languageCode)
 	return c
@@ -11718,7 +11746,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+	//       "description": "Optional. The language to retrieve training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -11775,11 +11803,12 @@
 // to list training phrases, parameters and rich
 // messages for. If not specified, the agent's default language is
 // used.
-// [More than a
-// dozen
-// languages](https://dialogflow.com/docs/reference/language) are
-// supported.
-// Note: languages must be enabled in the agent before they can be used.
+// [Many
+// languages](https://cloud.google.com/dialogflow-enterprise/
+// docs/reference/language)
+// are supported. Note: languages must be enabled in the agent before
+// they can
+// be used.
 func (c *ProjectsAgentIntentsListCall) LanguageCode(languageCode string) *ProjectsAgentIntentsListCall {
 	c.urlParams_.Set("languageCode", languageCode)
 	return c
@@ -11918,7 +11947,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent before they can be used.",
+	//       "description": "Optional. The language to list training phrases, parameters and rich\nmessages for. If not specified, the agent's default language is used.\n[Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -12008,12 +12037,13 @@
 // of training phrases, parameters and rich messages
 // defined in `intent`. If not specified, the agent's default language
 // is
-// used. [More than a
-// dozen
-// languages](https://dialogflow.com/docs/reference/language) are
-// supported.
-// Note: languages must be enabled in the agent, before they can be
 // used.
+// [Many
+// languages](https://cloud.google.com/dialogflow-enterprise/docs/r
+// eference/language)
+// are supported. Note: languages must be enabled in the agent before
+// they can
+// be used.
 func (c *ProjectsAgentIntentsPatchCall) LanguageCode(languageCode string) *ProjectsAgentIntentsPatchCall {
 	c.urlParams_.Set("languageCode", languageCode)
 	return c
@@ -12135,7 +12165,7 @@
 	//       "type": "string"
 	//     },
 	//     "languageCode": {
-	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [More than a dozen\nlanguages](https://dialogflow.com/docs/reference/language) are supported.\nNote: languages must be enabled in the agent, before they can be used.",
+	//       "description": "Optional. The language of training phrases, parameters and rich messages\ndefined in `intent`. If not specified, the agent's default language is\nused. [Many\nlanguages](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nare supported. Note: languages must be enabled in the agent before they can\nbe used.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/docs/v1/docs-api.json b/docs/v1/docs-api.json
index bb95e11..b2e9b03 100644
--- a/docs/v1/docs-api.json
+++ b/docs/v1/docs-api.json
@@ -209,7 +209,7 @@
       }
     }
   },
-  "revision": "20190212",
+  "revision": "20190312",
   "rootUrl": "https://docs.googleapis.com/",
   "schemas": {
     "AutoText": {
@@ -1439,6 +1439,46 @@
       },
       "type": "object"
     },
+    "InsertPageBreakRequest": {
+      "description": "Inserts a page break followed by a newline at the specified location.",
+      "id": "InsertPageBreakRequest",
+      "properties": {
+        "endOfSegmentLocation": {
+          "$ref": "EndOfSegmentLocation",
+          "description": "Inserts the page break at the end of the document body.\n\nPage breaks cannot be inserted inside a footnote, header or footer.\nSince page breaks can only be inserted inside the body, the segment ID field must be\nempty."
+        },
+        "location": {
+          "$ref": "Location",
+          "description": "Inserts the page break at a specific index in the document.\n\nThe page break must be inserted inside the bounds of an existing\nParagraph. For instance, it cannot be\ninserted at a table's start index (i.e. between the table and its\npreceding paragraph).\n\nPage breaks cannot be inserted inside a table, equation, footnote, header\nor footer. Since page breaks can only be inserted inside the body, the\nsegment ID field must be\nempty."
+        }
+      },
+      "type": "object"
+    },
+    "InsertTableRequest": {
+      "description": "Inserts a table at the specified location.\n\nA newline character will be inserted before the inserted table.",
+      "id": "InsertTableRequest",
+      "properties": {
+        "columns": {
+          "description": "The number of columns in the table.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "endOfSegmentLocation": {
+          "$ref": "EndOfSegmentLocation",
+          "description": "Inserts the table at the end of the given header, footer or document\nbody. A newline character will be inserted before the inserted table.\n\nTables cannot be inserted inside a footnote."
+        },
+        "location": {
+          "$ref": "Location",
+          "description": "Inserts the table at a specific model index.\n\nA newline character will be inserted before the inserted table, therefore\nthe table start index will be at the specified location index + 1.\n\nThe table must be inserted inside the bounds of an existing\nParagraph. For instance, it cannot be\ninserted at a table's start index (i.e. between an existing table and its\npreceding paragraph).\n\nTables cannot be inserted inside a footnote or equation."
+        },
+        "rows": {
+          "description": "The number of rows in the table.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "InsertTableRowRequest": {
       "description": "Inserts an empty row into a table.",
       "id": "InsertTableRowRequest",
@@ -2488,6 +2528,14 @@
           "$ref": "InsertInlineImageRequest",
           "description": "Inserts an inline image at the specified location."
         },
+        "insertPageBreak": {
+          "$ref": "InsertPageBreakRequest",
+          "description": "Inserts a page break at the specified location."
+        },
+        "insertTable": {
+          "$ref": "InsertTableRequest",
+          "description": "Inserts a table at the specified location."
+        },
         "insertTableRow": {
           "$ref": "InsertTableRowRequest",
           "description": "Inserts an empty row into a table."
@@ -3564,7 +3612,11 @@
       "id": "WriteControl",
       "properties": {
         "requiredRevisionId": {
-          "description": "The ID of the revision of the document that the write request will be\napplied to. If this is not the latest revision of the document, the\nrequest will not be processed and will return a 400 bad request error.\n\nWhen a required revision ID is returned in a response, it indicates the\nrevision ID of the document after the request was applied.",
+          "description": "The revision ID of the\ndocument that the write request will be applied to. If this is not the\nlatest revision of the document, the request will not be processed and\nwill return a 400 bad request error.\n\nWhen a required revision ID is returned in a response, it indicates the\nrevision ID of the document after the request was applied.",
+          "type": "string"
+        },
+        "targetRevisionId": {
+          "description": "The target revision ID of the\ndocument that the write request will be applied to.\n\nIf collaborator changes have occurred after the document was read using\nthe API, the changes produced by this write request will be transformed\nagainst the collaborator changes. This results in a new revision of the\ndocument which incorporates both the changes in the request and the\ncollaborator changes, and the Docs server will resolve conflicting\nchanges. When using `target_revision_id`, the API client can be thought\nof as another collaborator of the document.\n\nThe target revision ID may only be used to write to recent versions of a\ndocument. If the target revision is too far behind the latest revision,\nthe request will not be processed and will return a 400 bad request error\nand the request should be retried after reading the latest version of the\ndocument. In most cases a `revision_id` will remain valid for use as a\ntarget revision for several minutes after it is read, but for\nfrequently-edited documents this window may be shorter.",
           "type": "string"
         }
       },
diff --git a/docs/v1/docs-gen.go b/docs/v1/docs-gen.go
index c00c337..d93c44c 100644
--- a/docs/v1/docs-gen.go
+++ b/docs/v1/docs-gen.go
@@ -2434,6 +2434,120 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// InsertPageBreakRequest: Inserts a page break followed by a newline at
+// the specified location.
+type InsertPageBreakRequest struct {
+	// EndOfSegmentLocation: Inserts the page break at the end of the
+	// document body.
+	//
+	// Page breaks cannot be inserted inside a footnote, header or
+	// footer.
+	// Since page breaks can only be inserted inside the body, the segment
+	// ID field must be
+	// empty.
+	EndOfSegmentLocation *EndOfSegmentLocation `json:"endOfSegmentLocation,omitempty"`
+
+	// Location: Inserts the page break at a specific index in the
+	// document.
+	//
+	// The page break must be inserted inside the bounds of an
+	// existing
+	// Paragraph. For instance, it cannot be
+	// inserted at a table's start index (i.e. between the table and
+	// its
+	// preceding paragraph).
+	//
+	// Page breaks cannot be inserted inside a table, equation, footnote,
+	// header
+	// or footer. Since page breaks can only be inserted inside the body,
+	// the
+	// segment ID field must be
+	// empty.
+	Location *Location `json:"location,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "EndOfSegmentLocation") 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. "EndOfSegmentLocation") 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 *InsertPageBreakRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod InsertPageBreakRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// InsertTableRequest: Inserts a table at the specified location.
+//
+// A newline character will be inserted before the inserted table.
+type InsertTableRequest struct {
+	// Columns: The number of columns in the table.
+	Columns int64 `json:"columns,omitempty"`
+
+	// EndOfSegmentLocation: Inserts the table at the end of the given
+	// header, footer or document
+	// body. A newline character will be inserted before the inserted
+	// table.
+	//
+	// Tables cannot be inserted inside a footnote.
+	EndOfSegmentLocation *EndOfSegmentLocation `json:"endOfSegmentLocation,omitempty"`
+
+	// Location: Inserts the table at a specific model index.
+	//
+	// A newline character will be inserted before the inserted table,
+	// therefore
+	// the table start index will be at the specified location index +
+	// 1.
+	//
+	// The table must be inserted inside the bounds of an
+	// existing
+	// Paragraph. For instance, it cannot be
+	// inserted at a table's start index (i.e. between an existing table and
+	// its
+	// preceding paragraph).
+	//
+	// Tables cannot be inserted inside a footnote or equation.
+	Location *Location `json:"location,omitempty"`
+
+	// Rows: The number of rows in the table.
+	Rows int64 `json:"rows,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Columns") 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. "Columns") 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 *InsertTableRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod InsertTableRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // InsertTableRowRequest: Inserts an empty row into a table.
 type InsertTableRowRequest struct {
 	// InsertBelow: Whether to insert new row below the reference cell
@@ -4315,6 +4429,12 @@
 	// InsertInlineImage: Inserts an inline image at the specified location.
 	InsertInlineImage *InsertInlineImageRequest `json:"insertInlineImage,omitempty"`
 
+	// InsertPageBreak: Inserts a page break at the specified location.
+	InsertPageBreak *InsertPageBreakRequest `json:"insertPageBreak,omitempty"`
+
+	// InsertTable: Inserts a table at the specified location.
+	InsertTable *InsertTableRequest `json:"insertTable,omitempty"`
+
 	// InsertTableRow: Inserts an empty row into a table.
 	InsertTableRow *InsertTableRowRequest `json:"insertTableRow,omitempty"`
 
@@ -6337,18 +6457,50 @@
 
 // WriteControl: Provides control over how write requests are executed.
 type WriteControl struct {
-	// RequiredRevisionId: The ID of the revision of the document that the
-	// write request will be
-	// applied to. If this is not the latest revision of the document,
+	// RequiredRevisionId: The revision ID of the
+	// document that the write request will be applied to. If this is not
 	// the
-	// request will not be processed and will return a 400 bad request
-	// error.
+	// latest revision of the document, the request will not be processed
+	// and
+	// will return a 400 bad request error.
 	//
 	// When a required revision ID is returned in a response, it indicates
 	// the
 	// revision ID of the document after the request was applied.
 	RequiredRevisionId string `json:"requiredRevisionId,omitempty"`
 
+	// TargetRevisionId: The target revision ID of the
+	// document that the write request will be applied to.
+	//
+	// If collaborator changes have occurred after the document was read
+	// using
+	// the API, the changes produced by this write request will be
+	// transformed
+	// against the collaborator changes. This results in a new revision of
+	// the
+	// document which incorporates both the changes in the request and
+	// the
+	// collaborator changes, and the Docs server will resolve
+	// conflicting
+	// changes. When using `target_revision_id`, the API client can be
+	// thought
+	// of as another collaborator of the document.
+	//
+	// The target revision ID may only be used to write to recent versions
+	// of a
+	// document. If the target revision is too far behind the latest
+	// revision,
+	// the request will not be processed and will return a 400 bad request
+	// error
+	// and the request should be retried after reading the latest version of
+	// the
+	// document. In most cases a `revision_id` will remain valid for use as
+	// a
+	// target revision for several minutes after it is read, but
+	// for
+	// frequently-edited documents this window may be shorter.
+	TargetRevisionId string `json:"targetRevisionId,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "RequiredRevisionId")
 	// to unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
diff --git a/firebaserules/v1/firebaserules-api.json b/firebaserules/v1/firebaserules-api.json
index f1ec9a0..115fdf1 100644
--- a/firebaserules/v1/firebaserules-api.json
+++ b/firebaserules/v1/firebaserules-api.json
@@ -433,7 +433,7 @@
               ],
               "parameters": {
                 "filter": {
-                  "description": "`Ruleset` filter. The list method supports filters with restrictions on\n`Ruleset.name`.\n\nFilters on `Ruleset.create_time` should use the `date` function which\nparses strings that conform to the RFC 3339 date/time specifications.\n\nExample: `create_time \u003e date(\"2017-01-01\") AND name=UUID-*`",
+                  "description": "`Ruleset` filter. The list method supports filters with restrictions on\n`Ruleset.name`.\n\nFilters on `Ruleset.create_time` should use the `date` function which\nparses strings that conform to the RFC 3339 date/time specifications.\n\nExample: `create_time \u003e date(\"2017-01-01T00:00:00Z\") AND name=UUID-*`",
                   "location": "query",
                   "type": "string"
                 },
@@ -471,7 +471,7 @@
       }
     }
   },
-  "revision": "20181005",
+  "revision": "20190319",
   "rootUrl": "https://firebaserules.googleapis.com/",
   "schemas": {
     "Arg": {
diff --git a/firebaserules/v1/firebaserules-gen.go b/firebaserules/v1/firebaserules-gen.go
index 700acfe..d47a400 100644
--- a/firebaserules/v1/firebaserules-gen.go
+++ b/firebaserules/v1/firebaserules-gen.go
@@ -2738,7 +2738,7 @@
 // parses strings that conform to the RFC 3339 date/time
 // specifications.
 //
-// Example: `create_time > date("2017-01-01") AND name=UUID-*`
+// Example: `create_time > date("2017-01-01T00:00:00Z") AND name=UUID-*`
 func (c *ProjectsRulesetsListCall) Filter(filter string) *ProjectsRulesetsListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
@@ -2870,7 +2870,7 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "`Ruleset` filter. The list method supports filters with restrictions on\n`Ruleset.name`.\n\nFilters on `Ruleset.create_time` should use the `date` function which\nparses strings that conform to the RFC 3339 date/time specifications.\n\nExample: `create_time \u003e date(\"2017-01-01\") AND name=UUID-*`",
+	//       "description": "`Ruleset` filter. The list method supports filters with restrictions on\n`Ruleset.name`.\n\nFilters on `Ruleset.create_time` should use the `date` function which\nparses strings that conform to the RFC 3339 date/time specifications.\n\nExample: `create_time \u003e date(\"2017-01-01T00:00:00Z\") AND name=UUID-*`",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/healthcare/v1alpha/healthcare-api.json b/healthcare/v1alpha/healthcare-api.json
index 29f6c25..69e110b 100644
--- a/healthcare/v1alpha/healthcare-api.json
+++ b/healthcare/v1alpha/healthcare-api.json
@@ -12,7 +12,7 @@
   "baseUrl": "https://healthcare.googleapis.com/",
   "batchPath": "batch",
   "canonicalName": "Cloud Healthcare",
-  "description": "",
+  "description": "Manage, store, and access healthcare data in Google Cloud Platform.",
   "discoveryVersion": "v1",
   "documentationLink": "https://cloud.google.com/healthcare",
   "fullyEncodeReservedExpansion": true,
@@ -1602,7 +1602,7 @@
                     "resources": {
                       "methods": {
                         "_search": {
-                          "description": "Searches resources in the given FHIR store.",
+                          "description": "Searches resources in the given FHIR store.\n\n# Search Parameters\n\nThe server's capability statement, retrieved through\nGetCapabilityStatement, indicates which search\nparameters are supported on each FHIR resource.\n\n# Search Modifiers\n\nModifier   | Supported\n----------- | ---------\n`:missing`  | Yes\n`:exact`    | Yes\n`:contains` | Yes\n`:text`     | Yes\n`:in`       | Yes\n`:not-in`   | Yes\n`:above`    | Yes\n`:below`    | Yes\n`:[type]`   | Yes\n`:not`      | Yes\n`:recurse`  | No",
                           "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/resources/_search",
                           "httpMethod": "POST",
                           "id": "healthcare.projects.locations.datasets.fhirStores.resources._search",
@@ -1899,7 +1899,7 @@
                           ]
                         },
                         "searchResources": {
-                          "description": "Searches resources in the given FHIR store.",
+                          "description": "Searches resources in the given FHIR store.\n\n# Search Parameters\n\nThe server's capability statement, retrieved through\nGetCapabilityStatement, indicates which search\nparameters are supported on each FHIR resource.\n\n# Search Modifiers\n\nModifier   | Supported\n----------- | ---------\n`:missing`  | Yes\n`:exact`    | Yes\n`:contains` | Yes\n`:text`     | Yes\n`:in`       | Yes\n`:not-in`   | Yes\n`:above`    | Yes\n`:below`    | Yes\n`:[type]`   | Yes\n`:not`      | Yes\n`:recurse`  | No",
                           "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/resources/{resourcesId}",
                           "httpMethod": "GET",
                           "id": "healthcare.projects.locations.datasets.fhirStores.resources.searchResources",
@@ -2657,7 +2657,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190321",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -2808,7 +2808,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/healthcare/v1alpha/healthcare-gen.go b/healthcare/v1alpha/healthcare-gen.go
index b87fe34..b31663d 100644
--- a/healthcare/v1alpha/healthcare-gen.go
+++ b/healthcare/v1alpha/healthcare-gen.go
@@ -680,8 +680,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
@@ -10965,6 +10964,29 @@
 }
 
 // Search: Searches resources in the given FHIR store.
+//
+// # Search Parameters
+//
+// The server's capability statement, retrieved
+// through
+// GetCapabilityStatement, indicates which search
+// parameters are supported on each FHIR resource.
+//
+// # Search Modifiers
+//
+// Modifier   | Supported
+// ----------- | ---------
+// `:missing`  | Yes
+// `:exact`    | Yes
+// `:contains` | Yes
+// `:text`     | Yes
+// `:in`       | Yes
+// `:not-in`   | Yes
+// `:above`    | Yes
+// `:below`    | Yes
+// `:[type]`   | Yes
+// `:not`      | Yes
+// `:recurse`  | No
 func (r *ProjectsLocationsDatasetsFhirStoresResourcesService) Search(parent string, searchresourcesrequest *SearchResourcesRequest) *ProjectsLocationsDatasetsFhirStoresResourcesSearchCall {
 	c := &ProjectsLocationsDatasetsFhirStoresResourcesSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -11062,7 +11084,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Searches resources in the given FHIR store.",
+	//   "description": "Searches resources in the given FHIR store.\n\n# Search Parameters\n\nThe server's capability statement, retrieved through\nGetCapabilityStatement, indicates which search\nparameters are supported on each FHIR resource.\n\n# Search Modifiers\n\nModifier   | Supported\n----------- | ---------\n`:missing`  | Yes\n`:exact`    | Yes\n`:contains` | Yes\n`:text`     | Yes\n`:in`       | Yes\n`:not-in`   | Yes\n`:above`    | Yes\n`:below`    | Yes\n`:[type]`   | Yes\n`:not`      | Yes\n`:recurse`  | No",
 	//   "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/resources/_search",
 	//   "httpMethod": "POST",
 	//   "id": "healthcare.projects.locations.datasets.fhirStores.resources._search",
@@ -12412,6 +12434,29 @@
 }
 
 // SearchResources: Searches resources in the given FHIR store.
+//
+// # Search Parameters
+//
+// The server's capability statement, retrieved
+// through
+// GetCapabilityStatement, indicates which search
+// parameters are supported on each FHIR resource.
+//
+// # Search Modifiers
+//
+// Modifier   | Supported
+// ----------- | ---------
+// `:missing`  | Yes
+// `:exact`    | Yes
+// `:contains` | Yes
+// `:text`     | Yes
+// `:in`       | Yes
+// `:not-in`   | Yes
+// `:above`    | Yes
+// `:below`    | Yes
+// `:[type]`   | Yes
+// `:not`      | Yes
+// `:recurse`  | No
 func (r *ProjectsLocationsDatasetsFhirStoresResourcesService) SearchResources(parent string, resourceType string) *ProjectsLocationsDatasetsFhirStoresResourcesSearchResourcesCall {
 	c := &ProjectsLocationsDatasetsFhirStoresResourcesSearchResourcesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -12518,7 +12563,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Searches resources in the given FHIR store.",
+	//   "description": "Searches resources in the given FHIR store.\n\n# Search Parameters\n\nThe server's capability statement, retrieved through\nGetCapabilityStatement, indicates which search\nparameters are supported on each FHIR resource.\n\n# Search Modifiers\n\nModifier   | Supported\n----------- | ---------\n`:missing`  | Yes\n`:exact`    | Yes\n`:contains` | Yes\n`:text`     | Yes\n`:in`       | Yes\n`:not-in`   | Yes\n`:above`    | Yes\n`:below`    | Yes\n`:[type]`   | Yes\n`:not`      | Yes\n`:recurse`  | No",
 	//   "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/resources/{resourcesId}",
 	//   "httpMethod": "GET",
 	//   "id": "healthcare.projects.locations.datasets.fhirStores.resources.searchResources",
diff --git a/healthcare/v1alpha2/healthcare-api.json b/healthcare/v1alpha2/healthcare-api.json
index 6f79965..ff199a2 100644
--- a/healthcare/v1alpha2/healthcare-api.json
+++ b/healthcare/v1alpha2/healthcare-api.json
@@ -12,7 +12,7 @@
   "baseUrl": "https://healthcare.googleapis.com/",
   "batchPath": "batch",
   "canonicalName": "Cloud Healthcare",
-  "description": "",
+  "description": "Manage, store, and access healthcare data in Google Cloud Platform.",
   "discoveryVersion": "v1",
   "documentationLink": "https://cloud.google.com/healthcare",
   "fullyEncodeReservedExpansion": true,
@@ -502,34 +502,6 @@
                         "https://www.googleapis.com/auth/cloud-platform"
                       ]
                     },
-                    "export": {
-                      "description": "Export\nAnnotations from\nthe Annotation\nstore.\nErrors are noted in the error\nfield. Otherwise, a detailed response is returned of type\nExportAnnotationsResponse, contained in the\nresponse field when the\noperation finishes. The metadata\nfield type is OperationMetadata.",
-                      "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/annotationStores/{annotationStoresId}:export",
-                      "httpMethod": "POST",
-                      "id": "healthcare.projects.locations.datasets.annotationStores.export",
-                      "parameterOrder": [
-                        "annotationStore"
-                      ],
-                      "parameters": {
-                        "annotationStore": {
-                          "description": "The Annotation store name to export annotations to. The name should be in\nthe format\n`projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}`.",
-                          "location": "path",
-                          "pattern": "^projects/[^/]+/locations/[^/]+/datasets/[^/]+/annotationStores/[^/]+$",
-                          "required": true,
-                          "type": "string"
-                        }
-                      },
-                      "path": "v1alpha2/{+annotationStore}:export",
-                      "request": {
-                        "$ref": "ExportAnnotationsRequest"
-                      },
-                      "response": {
-                        "$ref": "Operation"
-                      },
-                      "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                      ]
-                    },
                     "get": {
                       "description": "Gets the specified Annotation store or returns NOT_FOUND if it does not\nexist.",
                       "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/annotationStores/{annotationStoresId}",
@@ -2062,7 +2034,7 @@
                       ]
                     },
                     "import": {
-                      "description": "Import resources to the FHIR store by loading data from the specified\nsources.\n\nThis method returns an Operation that can\nbe used to track the status of the import by calling\nGetOperation.\n\nImmediate fatal errors appear in the\nerror field.\nOtherwise, when the operation finishes, a detailed response of type\nImportResourcesResponse is returned in the\nresponse field.\nThe metadata field type for this\noperation is OperationMetadata.",
+                      "description": "Import resources to the FHIR store by loading data from the specified\nsources. Each resource must have a client-supplied ID, which is retained\nby the server.\n\nThe import operation is idempotent. Upon retry, the most recent data\n(matching the client-supplied ID) is overwritten, without creating a new\nresource version. If partial failures occur during the import, successful\nchanges are not rolled back.\n\nIf history imports are enabled\n(enable_history_import is set in the\nFHIR store's configuration), you can import historical versions of a\nresource by supplying a bundle of type `history`. The historical versions\nin the bundle must have `lastUpdated` timestamps. If a current or\nhistorical version with the supplied resource ID already exists, the\nbundle is rejected.\n\nThis method returns an Operation that can\nbe used to track the status of the import by calling\nGetOperation.\n\nImmediate fatal errors appear in the\nerror field.\nOtherwise, when the operation finishes, a detailed response of type\nImportResourcesResponse is returned in the\nresponse field.\nThe metadata field type for this\noperation is OperationMetadata.",
                       "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}:import",
                       "httpMethod": "POST",
                       "id": "healthcare.projects.locations.datasets.fhirStores.import",
@@ -2225,7 +2197,7 @@
                     "fhir": {
                       "methods": {
                         "_search": {
-                          "description": "Searches resources in the given FHIR store.",
+                          "description": "Searches resources in the given FHIR store.\n\n# Search Parameters\n\nThe server's capability statement, retrieved through\nGetCapabilityStatement, indicates which search\nparameters are supported on each FHIR resource.\n\n# Search Modifiers\n\nModifier   | Supported\n----------- | ---------\n`:missing`  | Yes\n`:exact`    | Yes\n`:contains` | Yes\n`:text`     | Yes\n`:in`       | Yes\n`:not-in`   | Yes\n`:above`    | Yes\n`:below`    | Yes\n`:[type]`   | Yes\n`:not`      | Yes\n`:recurse`  | No",
                           "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/fhir/_search",
                           "httpMethod": "POST",
                           "id": "healthcare.projects.locations.datasets.fhirStores.fhir._search",
@@ -2522,7 +2494,7 @@
                           ]
                         },
                         "searchResources": {
-                          "description": "Searches resources in the given FHIR store.",
+                          "description": "Searches resources in the given FHIR store.\n\n# Search Parameters\n\nThe server's capability statement, retrieved through\nGetCapabilityStatement, indicates which search\nparameters are supported on each FHIR resource.\n\n# Search Modifiers\n\nModifier   | Supported\n----------- | ---------\n`:missing`  | Yes\n`:exact`    | Yes\n`:contains` | Yes\n`:text`     | Yes\n`:in`       | Yes\n`:not-in`   | Yes\n`:above`    | Yes\n`:below`    | Yes\n`:[type]`   | Yes\n`:not`      | Yes\n`:recurse`  | No",
                           "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/fhir/{fhirId}",
                           "httpMethod": "GET",
                           "id": "healthcare.projects.locations.datasets.fhirStores.fhir.searchResources",
@@ -3131,12 +3103,12 @@
                           ],
                           "parameters": {
                             "filter": {
-                              "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- labels.x, a string value of the label with key x as set using the labels\n  map in Message, e.g. 'labels.\"priority\"=\"high\"'. \":*\" can be used to\n  assert the existence of a label, e.g. 'labels.\"priority\":*'.\nNegation on the patient ID function or the labels field is not supported,\ne.g. invalid queries: 'NOT PatientId(\"123456\", \"MRN\")',\n'NOT labels.\"tag1\":*', 'NOT labels.\"tag2\"=\"val2\"'.\nConjunction of multiple patient ID functions is not supported, e.g. an\ninvalid query: 'PatientId(\"123456\", \"MRN\") AND PatientId(\"456789\", \"MRN\")'.\nConjunction of multiple labels fields is also not supported, e.g. an\ninvalid query: 'labels.\"tag1\":* AND labels.\"tag2\"=\"val2\"'.\nConjunction of one patient ID function, one labels field and other fields\nis supported, e.g. a valid query:\n'PatientId(\"123456\", \"MRN\") AND labels.\"tag1\":* AND message_type = \"ADT\"'.\nHasLabel(x) and Label(x) are deprecated.",
+                              "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\n\nFields/functions available for filtering are:\n\n*  `message_type`, from the MSH-9 segment; for example\n`NOT message_type = \"ADT\"`\n*  `send_date` or `sendDate`, the YYYY-MM-DD date the message was sent in\nthe dataset's time_zone, from the MSH-7 segment; for example\n`send_date \u003c \"2017-01-02\"`\n*  `send_time`, the timestamp of when the message was sent, using the\nRFC3339 time format for comparisons, from the MSH-7 segment; for example\n`send_time \u003c \"2017-01-02T00:00:00-05:00\"`\n*  `send_facility`, the care center that the message came from, from the\nMSH-4 segment; for example `send_facility = \"ABC\"`\n*  `HL7RegExp(expr)`, which does regular expression matching of `expr`\nagainst the message payload using re2 (http://code.google.com/p/re2/)\nsyntax; for example `HL7RegExp(\"^.*\\|.*\\|EMERG\")`\n*  `PatientId(value, type)`, which matches if the message lists a patient\nhaving an ID of the given value and type in the PID-2, PID-3, or PID-4\nsegments; for example `PatientId(\"123456\", \"MRN\")`\n*  `labels.x`, a string value of the label with key `x` as set using the\nMessage.labels\nmap, for example `labels.\"priority\"=\"high\"`. The operator `:*` can be used\nto assert the existence of a label, for example `labels.\"priority\":*`.\n\nLimitations on conjunctions:\n\n*  Negation on the patient ID function or the labels field is not\nsupported, for example these queries are invalid:\n`NOT PatientId(\"123456\", \"MRN\")`, `NOT labels.\"tag1\":*`,\n`NOT labels.\"tag2\"=\"val2\"`.\n*  Conjunction of multiple patient ID functions is not supported, for\nexample this query is invalid:\n`PatientId(\"123456\", \"MRN\") AND PatientId(\"456789\", \"MRN\")`.\n*  Conjunction of multiple labels fields is also not supported, for\nexample this query is invalid: `labels.\"tag1\":* AND labels.\"tag2\"=\"val2\"`.\n*  Conjunction of one patient ID function, one labels field and conditions\non other fields is supported, for example this query is valid:\n`PatientId(\"123456\", \"MRN\") AND labels.\"tag1\":* AND message_type = \"ADT\"`.\n\nThe HasLabel(x) and Label(x) syntax from previous API versions are\ndeprecated; replaced by the `labels.x` syntax.",
                               "location": "query",
                               "type": "string"
                             },
                             "orderBy": {
-                              "description": "Orders messages returned by the specified order_by clause.\nSyntax: https://cloud.google.com/apis/design/design_patterns#sorting_order\nFields available for ordering are:\n- send_time",
+                              "description": "Orders messages returned by the specified order_by clause.\nSyntax: https://cloud.google.com/apis/design/design_patterns#sorting_order\n\nFields available for ordering are:\n\n*  `send_time`",
                               "location": "query",
                               "type": "string"
                             },
@@ -3282,7 +3254,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190321",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -3389,28 +3361,13 @@
       },
       "type": "object"
     },
-    "BigQueryDestination": {
-      "description": "The BigQuery table for export.",
-      "id": "BigQueryDestination",
-      "properties": {
-        "force": {
-          "description": "If the destination table already exists and this flag is `TRUE`, the table\nwill be overwritten by the contents of the input store. If the flag is not\nset and the destination table already exists, the export call returns an\nerror.",
-          "type": "boolean"
-        },
-        "tableUri": {
-          "description": "BigQuery URI to a table, up to 2000 characters long, must be of the form\nbq://projectId.bqDatasetId.tableId.",
-          "type": "string"
-        }
-      },
-      "type": "object"
-    },
     "Binding": {
       "description": "Associates `members` with a `role`.",
       "id": "Binding",
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
@@ -3442,6 +3399,17 @@
       },
       "type": "object"
     },
+    "CharacterMaskConfig": {
+      "description": "Mask a string by replacing its characters with a fixed character.",
+      "id": "CharacterMaskConfig",
+      "properties": {
+        "maskingCharacter": {
+          "description": "Character to mask the sensitive values. If not supplied, defaults to \"*\".",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "CloudHealthcareSource": {
       "description": "Cloud Healthcare API resource.",
       "id": "CloudHealthcareSource",
@@ -3464,6 +3432,18 @@
       },
       "type": "object"
     },
+    "CryptoHashConfig": {
+      "description": "Pseudonymization method that generates surrogates via cryptographic hashing.\nUses SHA-256.\nOutputs a base64-encoded representation of the hashed output\n(for example, `L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=`).",
+      "id": "CryptoHashConfig",
+      "properties": {
+        "cryptoKey": {
+          "description": "An AES 128/192/256 bit key. Causes the hash to be computed based on this\nkey. A default key is generated for each DeidentifyDataset operation and is\nused wherever crypto_key is not specified.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Dataset": {
       "description": "A message representing a health dataset.\n\nA health dataset represents a collection of healthcare data pertaining to one\nor more patients. This may include multiple modalities of healthcare data,\nsuch as electronic medical records or medical imaging data.",
       "id": "Dataset",
@@ -3479,6 +3459,18 @@
       },
       "type": "object"
     },
+    "DateShiftConfig": {
+      "description": "Shift a date forward or backward in time by a random amount which is\nconsistent for a given patient and crypto key combination.",
+      "id": "DateShiftConfig",
+      "properties": {
+        "cryptoKey": {
+          "description": "An AES 128/192/256 bit key. Causes the shift to be computed based on this\nkey and the patient ID. A default key is generated for each\nDeidentifyDataset operation and is used wherever crypto_key is not\nspecified.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "DeidentifyConfig": {
       "description": "Configures de-id options specific to different types of content.\nEach submessage customizes the handling of an\nhttps://tools.ietf.org/html/rfc6838 media type or subtype. Configs are\napplied in a nested manner at runtime.",
       "id": "DeidentifyConfig",
@@ -3494,6 +3486,10 @@
         "image": {
           "$ref": "ImageConfig",
           "description": "Configures de-identification of image pixels wherever they are found in the\nsource_dataset."
+        },
+        "text": {
+          "$ref": "TextConfig",
+          "description": "Configures de-identification of text wherever it is found in the\nsource_dataset."
         }
       },
       "type": "object"
@@ -3513,6 +3509,50 @@
       },
       "type": "object"
     },
+    "DeidentifyErrorDetails": {
+      "description": "Contains the status of the Deidentify operation.",
+      "id": "DeidentifyErrorDetails",
+      "properties": {
+        "failureResourceCount": {
+          "description": "Number of resources failed to process.",
+          "format": "int64",
+          "type": "string"
+        },
+        "failureStoreCount": {
+          "description": "Number of stores failed to process.",
+          "format": "int64",
+          "type": "string"
+        },
+        "successResourceCount": {
+          "description": "Number of resources successfully processed.",
+          "format": "int64",
+          "type": "string"
+        },
+        "successStoreCount": {
+          "description": "Number of stores successfully processed.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "DeidentifySummary": {
+      "description": "Contains a detailed summary of the Deidentify operation.",
+      "id": "DeidentifySummary",
+      "properties": {
+        "successResourceCount": {
+          "description": "Number of resources successfully processed.",
+          "format": "int64",
+          "type": "string"
+        },
+        "successStoreCount": {
+          "description": "Number of stores successfully processed.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Detail": {
       "description": "Contains multiple sensitive information findings for each resource slice.",
       "id": "Detail",
@@ -3530,9 +3570,31 @@
       "description": "Specifies the parameters needed for de-identification of DICOM stores.",
       "id": "DicomConfig",
       "properties": {
+        "filterProfile": {
+          "description": "Tag filtering profile that determines which tags to keep/remove.",
+          "enum": [
+            "TAG_FILTER_PROFILE_UNSPECIFIED",
+            "MINIMAL_KEEP_LIST_PROFILE",
+            "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE",
+            "KEEP_ALL_PROFILE",
+            "DEIDENTIFY_TAG_CONTENTS"
+          ],
+          "enumDescriptions": [
+            "No tag filtration profile provided. Same as KEEP_ALL_PROFILE.",
+            "Keep only tags required to produce valid DICOM.",
+            "Remove tags based on DICOM Standard's Attribute Confidentiality Basic\nProfile (DICOM Standard Edition 2018e).",
+            "Keep all tags.",
+            "Inspects within tag contents and replaces sensitive text with its type.\nApplies to all tags with the following Value Representation names:\nAE, LO, LT, PN, SH, ST, UC, UT"
+          ],
+          "type": "string"
+        },
         "keepList": {
           "$ref": "TagFilterList",
           "description": "List of tags to keep. Remove all other tags."
+        },
+        "removeList": {
+          "$ref": "TagFilterList",
+          "description": "List of tags to remove. Keep all other tags."
         }
       },
       "type": "object"
@@ -3580,21 +3642,6 @@
       },
       "type": "object"
     },
-    "ExportAnnotationsRequest": {
-      "description": "Request to export\nAnnotations. The\nexport operation is not atomic; in the event of a failure any annotations\nalready exported will not be removed.",
-      "id": "ExportAnnotationsRequest",
-      "properties": {
-        "bigqueryDestination": {
-          "$ref": "BigQueryDestination",
-          "description": "The BigQuery output destination.\nThe table schema is the flattened version of\nAnnotation\nFor now, only exporting to a dataset in the current project is supported.\nThe BigQuery location requires two IAM roles:\n  `roles/bigquery.dataEditor` and `roles/bigquery.jobUser`."
-        },
-        "gcsDestination": {
-          "$ref": "GcsDestination",
-          "description": "The Cloud Storage destination, which requires the\n`roles/storage.objectAdmin` Cloud IAM role."
-        }
-      },
-      "type": "object"
-    },
     "ExportDicomDataRequest": {
       "description": "Exports data from the specified DICOM store.\nIf a given resource (e.g., a DICOM object with the same SOPInstance UID)\nalready exists in the output, it is overwritten with the version\nin the source dataset.\nExported DICOM data will persist when the DICOM store from which it was\nexported is deleted.",
       "id": "ExportDicomDataRequest",
@@ -3651,7 +3698,15 @@
     "FhirConfig": {
       "description": "Specifies how de-identification of a FHIR store should be handled.",
       "id": "FhirConfig",
-      "properties": {},
+      "properties": {
+        "fieldMetadataList": {
+          "description": "Specifies FHIR paths to match and how to transform them. Any field that\nis not matched by a FieldMetadata will be passed through to the output\ndataset unmodified. All extensions are removed in the output.",
+          "items": {
+            "$ref": "FieldMetadata"
+          },
+          "type": "array"
+        }
+      },
       "type": "object"
     },
     "FhirStore": {
@@ -3692,6 +3747,36 @@
       },
       "type": "object"
     },
+    "FieldMetadata": {
+      "description": "Specifies FHIR paths to match, and how to handle de-identification of\nmatching fields.",
+      "id": "FieldMetadata",
+      "properties": {
+        "action": {
+          "description": "Deidentify action for one field.",
+          "enum": [
+            "ACTION_UNSPECIFIED",
+            "TRANSFORM",
+            "INSPECT_AND_TRANSFORM",
+            "DO_NOT_TRANSFORM"
+          ],
+          "enumDescriptions": [
+            "No action specified.",
+            "Transform the entire field.",
+            "Should be inspected and any PHI found should be\ntransformed.",
+            "Do not transform."
+          ],
+          "type": "string"
+        },
+        "paths": {
+          "description": "List of paths to FHIR fields to be redacted. Each path is a\nperiod-separated list where each component is either a field name or\nFHIR type name, for example: Patient, HumanName.\nFor \"choice\" types (those defined in the FHIR spec with the form:\nfield[x]) we use two separate components. e.g. \"deceasedAge.unit\" is\nmatched by \"Deceased.Age.unit\".\nSupported types are: AdministrativeGenderCode, Code, Date, DateTime,\nDecimal, HumanName, Id, LanguageCode, Markdown, MimeTypeCode, Oid,\nString, Uri, Uuid, Xhtml.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "Finding": {
       "id": "Finding",
       "properties": {
@@ -3712,17 +3797,6 @@
       },
       "type": "object"
     },
-    "GcsDestination": {
-      "description": "The Cloud Storage location for export.",
-      "id": "GcsDestination",
-      "properties": {
-        "uriPrefix": {
-          "description": "The Cloud Storage destination to export to.\nURI for a Cloud Storage directory where result files should be written (in\nthe format `gs://{bucket-id}/{path/to/destination/dir}`). If there is no\ntrailing slash, the service will append one when composing the object path.\nThe user is responsible for creating the Cloud Storage bucket referenced in\n`uri_prefix`.",
-          "type": "string"
-        }
-      },
-      "type": "object"
-    },
     "GetIamPolicyRequest": {
       "description": "Request message for `GetIamPolicy` method.",
       "id": "GetIamPolicyRequest",
@@ -3951,11 +4025,15 @@
           "description": "Determines how to redact text from image.",
           "enum": [
             "TEXT_REDACTION_MODE_UNSPECIFIED",
-            "REDACT_ALL_TEXT"
+            "REDACT_ALL_TEXT",
+            "REDACT_SENSITIVE_TEXT",
+            "REDACT_NO_TEXT"
           ],
           "enumDescriptions": [
             "No text redaction specified. Same as REDACT_NO_TEXT.",
-            "Redact all text."
+            "Redact all text.",
+            "Redact sensitive text.",
+            "Do not redact text."
           ],
           "type": "string"
         }
@@ -3971,7 +4049,7 @@
           "type": "string"
         },
         "sampleErrors": {
-          "description": "Contains sample errors encountered in imports of individual resources\n(e.g., a Cloud Storage object).",
+          "description": "Deprecated. Use only for debugging purposes.\n\nContains sample errors encountered in imports of individual resources\n(for example, a Cloud Storage object).",
           "items": {
             "$ref": "ErrorDetail"
           },
@@ -3992,7 +4070,7 @@
       "type": "object"
     },
     "ImportResourcesRequest": {
-      "description": "Request to import resources.\nThe FHIR resources to be imported must have client supplied IDs. The server\nwill retain the resource IDs. The import operation is idempotent. Retry will\noverwrite existing data identified by client supplied IDs. The import\noperation is not transactional. The server will not roll back any committed\nchanges upon partial failures.",
+      "description": "Request to import resources.",
       "id": "ImportResourcesRequest",
       "properties": {
         "contentStructure": {
@@ -4004,7 +4082,7 @@
           ],
           "enumDescriptions": [
             "",
-            "Each unit is a bundle, which contains one or more resources.",
+            "Each unit is a bundle, which contains one or more resources. Set the\nbundle type to `history` to import resource versions.",
             "Each unit is a single resource."
           ],
           "type": "string"
@@ -4015,7 +4093,41 @@
         },
         "gcsSource": {
           "$ref": "GoogleCloudHealthcareV1alpha2FhirRestGcsSource",
-          "description": "Cloud Storage source data location and import configuration.\n\nThe Cloud Storage location requires the `roles/storage.objectViewer`\nCloud IAM role.\n\nEach Cloud Storage object should be a text file that contains newline\ndelimited JSON structures conforming to FHIR standard."
+          "description": "Cloud Storage source data location and import configuration.\n\nThe Cloud Storage location requires the `roles/storage.objectViewer`\nCloud IAM role.\n\nEach Cloud Storage object should be a text file that contains newline\ndelimited JSON structures conforming to FHIR standard.\n\nTo improve performance, use multiple Cloud Storage objects where each\nobject contains a subset of all of the newline-delimited JSON structures.\nYou can select all of the objects using the uri as the\nprefix. The maximum number of objects is 1,000."
+        }
+      },
+      "type": "object"
+    },
+    "InfoTypeTransformation": {
+      "description": "A transformation to apply to text that is identified as a specific\ninfo_type.",
+      "id": "InfoTypeTransformation",
+      "properties": {
+        "characterMaskConfig": {
+          "$ref": "CharacterMaskConfig",
+          "description": "Config for character mask."
+        },
+        "cryptoHashConfig": {
+          "$ref": "CryptoHashConfig",
+          "description": "Config for crypto hash."
+        },
+        "dateShiftConfig": {
+          "$ref": "DateShiftConfig",
+          "description": "Config for date shift."
+        },
+        "infoTypes": {
+          "description": "InfoTypes to apply this transformation to. If this is not specified, the\ntransformation applies to any info_type.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "redactConfig": {
+          "$ref": "RedactConfig",
+          "description": "Config for text redaction."
+        },
+        "replaceWithInfoTypeConfig": {
+          "$ref": "ReplaceWithInfoTypeConfig",
+          "description": "Config for replace with InfoType."
         }
       },
       "type": "object"
@@ -4462,6 +4574,18 @@
       },
       "type": "object"
     },
+    "RedactConfig": {
+      "description": "Define how to redact sensitive values. Default behaviour is erase,\ne.g. \"My name is Jake.\" becomes \"My name is .\"",
+      "id": "RedactConfig",
+      "properties": {},
+      "type": "object"
+    },
+    "ReplaceWithInfoTypeConfig": {
+      "description": "When using the INSPECT_AND_TRANSFORM action, each match is replaced with\nthe name of the info_type. For example, \"My name is Jake\" becomes \"My name is\n[PERSON_NAME].\" The TRANSFORM action is equivalent to redacting.",
+      "id": "ReplaceWithInfoTypeConfig",
+      "properties": {},
+      "type": "object"
+    },
     "ResourceAnnotation": {
       "description": "Resource level annotation.",
       "id": "ResourceAnnotation",
@@ -4630,6 +4754,23 @@
       },
       "type": "object"
     },
+    "TextConfig": {
+      "id": "TextConfig",
+      "properties": {
+        "experimentalConfig": {
+          "description": "Experimental de-identification config to use. For internal use only.\nIf not specified, it is ignored and standard DLP is used.",
+          "type": "string"
+        },
+        "transformations": {
+          "description": "The transformations to apply to the detected data.",
+          "items": {
+            "$ref": "InfoTypeTransformation"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "Vertex": {
       "description": "A 2D coordinate in an image. The origin is the top-left.",
       "id": "Vertex",
diff --git a/healthcare/v1alpha2/healthcare-gen.go b/healthcare/v1alpha2/healthcare-gen.go
index 7df7cca..d9f3848 100644
--- a/healthcare/v1alpha2/healthcare-gen.go
+++ b/healthcare/v1alpha2/healthcare-gen.go
@@ -646,49 +646,9 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// BigQueryDestination: The BigQuery table for export.
-type BigQueryDestination struct {
-	// Force: If the destination table already exists and this flag is
-	// `TRUE`, the table
-	// will be overwritten by the contents of the input store. If the flag
-	// is not
-	// set and the destination table already exists, the export call returns
-	// an
-	// error.
-	Force bool `json:"force,omitempty"`
-
-	// TableUri: BigQuery URI to a table, up to 2000 characters long, must
-	// be of the form
-	// bq://projectId.bqDatasetId.tableId.
-	TableUri string `json:"tableUri,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Force") 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. "Force") 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 *BigQueryDestination) MarshalJSON() ([]byte, error) {
-	type NoMethod BigQueryDestination
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
@@ -787,6 +747,37 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// CharacterMaskConfig: Mask a string by replacing its characters with a
+// fixed character.
+type CharacterMaskConfig struct {
+	// MaskingCharacter: Character to mask the sensitive values. If not
+	// supplied, defaults to "*".
+	MaskingCharacter string `json:"maskingCharacter,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MaskingCharacter") 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. "MaskingCharacter") 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 *CharacterMaskConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod CharacterMaskConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // CloudHealthcareSource: Cloud Healthcare API resource.
 type CloudHealthcareSource struct {
 	// Name: Full path of a Cloud Healthcare API resource.
@@ -843,6 +834,42 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// CryptoHashConfig: Pseudonymization method that generates surrogates
+// via cryptographic hashing.
+// Uses SHA-256.
+// Outputs a base64-encoded representation of the hashed output
+// (for example, `L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=`).
+type CryptoHashConfig struct {
+	// CryptoKey: An AES 128/192/256 bit key. Causes the hash to be computed
+	// based on this
+	// key. A default key is generated for each DeidentifyDataset operation
+	// and is
+	// used wherever crypto_key is not specified.
+	CryptoKey string `json:"cryptoKey,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CryptoKey") 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. "CryptoKey") 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 *CryptoHashConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod CryptoHashConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Dataset: A message representing a health dataset.
 //
 // A health dataset represents a collection of healthcare data
@@ -893,6 +920,42 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// DateShiftConfig: Shift a date forward or backward in time by a random
+// amount which is
+// consistent for a given patient and crypto key combination.
+type DateShiftConfig struct {
+	// CryptoKey: An AES 128/192/256 bit key. Causes the shift to be
+	// computed based on this
+	// key and the patient ID. A default key is generated for
+	// each
+	// DeidentifyDataset operation and is used wherever crypto_key is
+	// not
+	// specified.
+	CryptoKey string `json:"cryptoKey,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CryptoKey") 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. "CryptoKey") 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 *DateShiftConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod DateShiftConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // DeidentifyConfig: Configures de-id options specific to different
 // types of content.
 // Each submessage customizes the handling of
@@ -912,6 +975,11 @@
 	// source_dataset.
 	Image *ImageConfig `json:"image,omitempty"`
 
+	// Text: Configures de-identification of text wherever it is found in
+	// the
+	// source_dataset.
+	Text *TextConfig `json:"text,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Dicom") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -973,6 +1041,80 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// DeidentifyErrorDetails: Contains the status of the Deidentify
+// operation.
+type DeidentifyErrorDetails struct {
+	// FailureResourceCount: Number of resources failed to process.
+	FailureResourceCount int64 `json:"failureResourceCount,omitempty,string"`
+
+	// FailureStoreCount: Number of stores failed to process.
+	FailureStoreCount int64 `json:"failureStoreCount,omitempty,string"`
+
+	// SuccessResourceCount: Number of resources successfully processed.
+	SuccessResourceCount int64 `json:"successResourceCount,omitempty,string"`
+
+	// SuccessStoreCount: Number of stores successfully processed.
+	SuccessStoreCount int64 `json:"successStoreCount,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "FailureResourceCount") 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. "FailureResourceCount") 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 *DeidentifyErrorDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod DeidentifyErrorDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// DeidentifySummary: Contains a detailed summary of the Deidentify
+// operation.
+type DeidentifySummary struct {
+	// SuccessResourceCount: Number of resources successfully processed.
+	SuccessResourceCount int64 `json:"successResourceCount,omitempty,string"`
+
+	// SuccessStoreCount: Number of stores successfully processed.
+	SuccessStoreCount int64 `json:"successStoreCount,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "SuccessResourceCount") 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. "SuccessResourceCount") 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 *DeidentifySummary) MarshalJSON() ([]byte, error) {
+	type NoMethod DeidentifySummary
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Detail: Contains multiple sensitive information findings for each
 // resource slice.
 type Detail struct {
@@ -1004,10 +1146,32 @@
 // DicomConfig: Specifies the parameters needed for de-identification of
 // DICOM stores.
 type DicomConfig struct {
+	// FilterProfile: Tag filtering profile that determines which tags to
+	// keep/remove.
+	//
+	// Possible values:
+	//   "TAG_FILTER_PROFILE_UNSPECIFIED" - No tag filtration profile
+	// provided. Same as KEEP_ALL_PROFILE.
+	//   "MINIMAL_KEEP_LIST_PROFILE" - Keep only tags required to produce
+	// valid DICOM.
+	//   "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE" - Remove tags based on
+	// DICOM Standard's Attribute Confidentiality Basic
+	// Profile (DICOM Standard Edition 2018e).
+	//   "KEEP_ALL_PROFILE" - Keep all tags.
+	//   "DEIDENTIFY_TAG_CONTENTS" - Inspects within tag contents and
+	// replaces sensitive text with its type.
+	// Applies to all tags with the following Value Representation
+	// names:
+	// AE, LO, LT, PN, SH, ST, UC, UT
+	FilterProfile string `json:"filterProfile,omitempty"`
+
 	// KeepList: List of tags to keep. Remove all other tags.
 	KeepList *TagFilterList `json:"keepList,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "KeepList") to
+	// RemoveList: List of tags to remove. Keep all other tags.
+	RemoveList *TagFilterList `json:"removeList,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FilterProfile") 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
@@ -1015,10 +1179,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "KeepList") 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
+	// NullFields is a list of field names (e.g. "FilterProfile") 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:"-"`
@@ -1141,50 +1305,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ExportAnnotationsRequest: Request to export
-// Annotations. The
-// export operation is not atomic; in the event of a failure any
-// annotations
-// already exported will not be removed.
-type ExportAnnotationsRequest struct {
-	// BigqueryDestination: The BigQuery output destination.
-	// The table schema is the flattened version of
-	// Annotation
-	// For now, only exporting to a dataset in the current project is
-	// supported.
-	// The BigQuery location requires two IAM roles:
-	//   `roles/bigquery.dataEditor` and `roles/bigquery.jobUser`.
-	BigqueryDestination *BigQueryDestination `json:"bigqueryDestination,omitempty"`
-
-	// GcsDestination: The Cloud Storage destination, which requires
-	// the
-	// `roles/storage.objectAdmin` Cloud IAM role.
-	GcsDestination *GcsDestination `json:"gcsDestination,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "BigqueryDestination")
-	// 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. "BigqueryDestination") 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 *ExportAnnotationsRequest) MarshalJSON() ([]byte, error) {
-	type NoMethod ExportAnnotationsRequest
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 // ExportDicomDataRequest: Exports data from the specified DICOM
 // store.
 // If a given resource (e.g., a DICOM object with the same SOPInstance
@@ -1342,6 +1462,35 @@
 // FhirConfig: Specifies how de-identification of a FHIR store should be
 // handled.
 type FhirConfig struct {
+	// FieldMetadataList: Specifies FHIR paths to match and how to transform
+	// them. Any field that
+	// is not matched by a FieldMetadata will be passed through to the
+	// output
+	// dataset unmodified. All extensions are removed in the output.
+	FieldMetadataList []*FieldMetadata `json:"fieldMetadataList,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FieldMetadataList")
+	// 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. "FieldMetadataList") 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 *FhirConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod FhirConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
 // FhirStore: Represents a FHIR store.
@@ -1470,6 +1619,61 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// FieldMetadata: Specifies FHIR paths to match, and how to handle
+// de-identification of
+// matching fields.
+type FieldMetadata struct {
+	// Action: Deidentify action for one field.
+	//
+	// Possible values:
+	//   "ACTION_UNSPECIFIED" - No action specified.
+	//   "TRANSFORM" - Transform the entire field.
+	//   "INSPECT_AND_TRANSFORM" - Should be inspected and any PHI found
+	// should be
+	// transformed.
+	//   "DO_NOT_TRANSFORM" - Do not transform.
+	Action string `json:"action,omitempty"`
+
+	// Paths: List of paths to FHIR fields to be redacted. Each path is
+	// a
+	// period-separated list where each component is either a field name
+	// or
+	// FHIR type name, for example: Patient, HumanName.
+	// For "choice" types (those defined in the FHIR spec with the
+	// form:
+	// field[x]) we use two separate components. e.g. "deceasedAge.unit"
+	// is
+	// matched by "Deceased.Age.unit".
+	// Supported types are: AdministrativeGenderCode, Code, Date,
+	// DateTime,
+	// Decimal, HumanName, Id, LanguageCode, Markdown, MimeTypeCode,
+	// Oid,
+	// String, Uri, Uuid, Xhtml.
+	Paths []string `json:"paths,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Action") 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. "Action") 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 *FieldMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod FieldMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type Finding struct {
 	// End: Zero-based ending index of the found text, exclusively.
 	End int64 `json:"end,omitempty,string"`
@@ -1505,43 +1709,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// GcsDestination: The Cloud Storage location for export.
-type GcsDestination struct {
-	// UriPrefix: The Cloud Storage destination to export to.
-	// URI for a Cloud Storage directory where result files should be
-	// written (in
-	// the format `gs://{bucket-id}/{path/to/destination/dir}`). If there is
-	// no
-	// trailing slash, the service will append one when composing the object
-	// path.
-	// The user is responsible for creating the Cloud Storage bucket
-	// referenced in
-	// `uri_prefix`.
-	UriPrefix string `json:"uriPrefix,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "UriPrefix") 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. "UriPrefix") 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 *GcsDestination) MarshalJSON() ([]byte, error) {
-	type NoMethod GcsDestination
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 // GetIamPolicyRequest: Request message for `GetIamPolicy` method.
 type GetIamPolicyRequest struct {
 }
@@ -2183,6 +2350,8 @@
 	//   "TEXT_REDACTION_MODE_UNSPECIFIED" - No text redaction specified.
 	// Same as REDACT_NO_TEXT.
 	//   "REDACT_ALL_TEXT" - Redact all text.
+	//   "REDACT_SENSITIVE_TEXT" - Redact sensitive text.
+	//   "REDACT_NO_TEXT" - Do not redact text.
 	TextRedactionMode string `json:"textRedactionMode,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "TextRedactionMode")
@@ -2220,9 +2389,11 @@
 	// taset_id}/dicomStores/{dicom_store_id}`
 	DicomStore string `json:"dicomStore,omitempty"`
 
-	// SampleErrors: Contains sample errors encountered in imports of
-	// individual resources
-	// (e.g., a Cloud Storage object).
+	// SampleErrors: Deprecated. Use only for debugging purposes.
+	//
+	// Contains sample errors encountered in imports of individual
+	// resources
+	// (for example, a Cloud Storage object).
 	SampleErrors []*ErrorDetail `json:"sampleErrors,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "DicomStore") to
@@ -2288,15 +2459,6 @@
 }
 
 // ImportResourcesRequest: Request to import resources.
-// The FHIR resources to be imported must have client supplied IDs. The
-// server
-// will retain the resource IDs. The import operation is idempotent.
-// Retry will
-// overwrite existing data identified by client supplied IDs. The
-// import
-// operation is not transactional. The server will not roll back any
-// committed
-// changes upon partial failures.
 type ImportResourcesRequest struct {
 	// ContentStructure: The content structure in the source location. The
 	// default is
@@ -2305,7 +2467,8 @@
 	// Possible values:
 	//   "CONTENT_STRUCTURE_UNSPECIFIED"
 	//   "BUNDLE" - Each unit is a bundle, which contains one or more
-	// resources.
+	// resources. Set the
+	// bundle type to `history` to import resource versions.
 	//   "RESOURCE" - Each unit is a single resource.
 	ContentStructure string `json:"contentStructure,omitempty"`
 
@@ -2331,6 +2494,13 @@
 	// Each Cloud Storage object should be a text file that contains
 	// newline
 	// delimited JSON structures conforming to FHIR standard.
+	//
+	// To improve performance, use multiple Cloud Storage objects where
+	// each
+	// object contains a subset of all of the newline-delimited JSON
+	// structures.
+	// You can select all of the objects using the uri as the
+	// prefix. The maximum number of objects is 1,000.
 	GcsSource *GoogleCloudHealthcareV1alpha2FhirRestGcsSource `json:"gcsSource,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "ContentStructure") to
@@ -2357,6 +2527,54 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// InfoTypeTransformation: A transformation to apply to text that is
+// identified as a specific
+// info_type.
+type InfoTypeTransformation struct {
+	// CharacterMaskConfig: Config for character mask.
+	CharacterMaskConfig *CharacterMaskConfig `json:"characterMaskConfig,omitempty"`
+
+	// CryptoHashConfig: Config for crypto hash.
+	CryptoHashConfig *CryptoHashConfig `json:"cryptoHashConfig,omitempty"`
+
+	// DateShiftConfig: Config for date shift.
+	DateShiftConfig *DateShiftConfig `json:"dateShiftConfig,omitempty"`
+
+	// InfoTypes: InfoTypes to apply this transformation to. If this is not
+	// specified, the
+	// transformation applies to any info_type.
+	InfoTypes []string `json:"infoTypes,omitempty"`
+
+	// RedactConfig: Config for text redaction.
+	RedactConfig *RedactConfig `json:"redactConfig,omitempty"`
+
+	// ReplaceWithInfoTypeConfig: Config for replace with InfoType.
+	ReplaceWithInfoTypeConfig *ReplaceWithInfoTypeConfig `json:"replaceWithInfoTypeConfig,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CharacterMaskConfig")
+	// 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. "CharacterMaskConfig") 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 *InfoTypeTransformation) MarshalJSON() ([]byte, error) {
+	type NoMethod InfoTypeTransformation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // IngestMessageRequest: Ingests a message into the specified HL7v2
 // store.
 type IngestMessageRequest struct {
@@ -3312,6 +3530,20 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// RedactConfig: Define how to redact sensitive values. Default
+// behaviour is erase,
+// e.g. "My name is Jake." becomes "My name is ."
+type RedactConfig struct {
+}
+
+// ReplaceWithInfoTypeConfig: When using the INSPECT_AND_TRANSFORM
+// action, each match is replaced with
+// the name of the info_type. For example, "My name is Jake" becomes "My
+// name is
+// [PERSON_NAME]." The TRANSFORM action is equivalent to redacting.
+type ReplaceWithInfoTypeConfig struct {
+}
+
 // ResourceAnnotation: Resource level annotation.
 type ResourceAnnotation struct {
 	Label string `json:"label,omitempty"`
@@ -3773,6 +4005,39 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type TextConfig struct {
+	// ExperimentalConfig: Experimental de-identification config to use. For
+	// internal use only.
+	// If not specified, it is ignored and standard DLP is used.
+	ExperimentalConfig string `json:"experimentalConfig,omitempty"`
+
+	// Transformations: The transformations to apply to the detected data.
+	Transformations []*InfoTypeTransformation `json:"transformations,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExperimentalConfig")
+	// 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. "ExperimentalConfig") 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 *TextConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod TextConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Vertex: A 2D coordinate in an image. The origin is the top-left.
 type Vertex struct {
 	// X: X coordinate.
@@ -5813,155 +6078,6 @@
 
 }
 
-// method id "healthcare.projects.locations.datasets.annotationStores.export":
-
-type ProjectsLocationsDatasetsAnnotationStoresExportCall struct {
-	s                        *Service
-	annotationStore          string
-	exportannotationsrequest *ExportAnnotationsRequest
-	urlParams_               gensupport.URLParams
-	ctx_                     context.Context
-	header_                  http.Header
-}
-
-// Export: Export
-// Annotations from
-// the Annotation
-// store.
-// Errors are noted in the error
-// field. Otherwise, a detailed response is returned of
-// type
-// ExportAnnotationsResponse, contained in the
-// response field when the
-// operation finishes. The metadata
-// field type is OperationMetadata.
-func (r *ProjectsLocationsDatasetsAnnotationStoresService) Export(annotationStore string, exportannotationsrequest *ExportAnnotationsRequest) *ProjectsLocationsDatasetsAnnotationStoresExportCall {
-	c := &ProjectsLocationsDatasetsAnnotationStoresExportCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.annotationStore = annotationStore
-	c.exportannotationsrequest = exportannotationsrequest
-	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 *ProjectsLocationsDatasetsAnnotationStoresExportCall) Fields(s ...googleapi.Field) *ProjectsLocationsDatasetsAnnotationStoresExportCall {
-	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 *ProjectsLocationsDatasetsAnnotationStoresExportCall) Context(ctx context.Context) *ProjectsLocationsDatasetsAnnotationStoresExportCall {
-	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 *ProjectsLocationsDatasetsAnnotationStoresExportCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *ProjectsLocationsDatasetsAnnotationStoresExportCall) 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.exportannotationsrequest)
-	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, "v1alpha2/{+annotationStore}:export")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("POST", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"annotationStore": c.annotationStore,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "healthcare.projects.locations.datasets.annotationStores.export" 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 *ProjectsLocationsDatasetsAnnotationStoresExportCall) 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": "Export\nAnnotations from\nthe Annotation\nstore.\nErrors are noted in the error\nfield. Otherwise, a detailed response is returned of type\nExportAnnotationsResponse, contained in the\nresponse field when the\noperation finishes. The metadata\nfield type is OperationMetadata.",
-	//   "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/annotationStores/{annotationStoresId}:export",
-	//   "httpMethod": "POST",
-	//   "id": "healthcare.projects.locations.datasets.annotationStores.export",
-	//   "parameterOrder": [
-	//     "annotationStore"
-	//   ],
-	//   "parameters": {
-	//     "annotationStore": {
-	//       "description": "The Annotation store name to export annotations to. The name should be in\nthe format\n`projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}`.",
-	//       "location": "path",
-	//       "pattern": "^projects/[^/]+/locations/[^/]+/datasets/[^/]+/annotationStores/[^/]+$",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "v1alpha2/{+annotationStore}:export",
-	//   "request": {
-	//     "$ref": "ExportAnnotationsRequest"
-	//   },
-	//   "response": {
-	//     "$ref": "Operation"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
-	//   ]
-	// }
-
-}
-
 // method id "healthcare.projects.locations.datasets.annotationStores.get":
 
 type ProjectsLocationsDatasetsAnnotationStoresGetCall struct {
@@ -13358,7 +13474,29 @@
 
 // Import: Import resources to the FHIR store by loading data from the
 // specified
-// sources.
+// sources. Each resource must have a client-supplied ID, which is
+// retained
+// by the server.
+//
+// The import operation is idempotent. Upon retry, the most recent
+// data
+// (matching the client-supplied ID) is overwritten, without creating a
+// new
+// resource version. If partial failures occur during the import,
+// successful
+// changes are not rolled back.
+//
+// If history imports are enabled
+// (enable_history_import is set in the
+// FHIR store's configuration), you can import historical versions of
+// a
+// resource by supplying a bundle of type `history`. The historical
+// versions
+// in the bundle must have `lastUpdated` timestamps. If a current
+// or
+// historical version with the supplied resource ID already exists,
+// the
+// bundle is rejected.
 //
 // This method returns an Operation that can
 // be used to track the status of the import by
@@ -13470,7 +13608,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Import resources to the FHIR store by loading data from the specified\nsources.\n\nThis method returns an Operation that can\nbe used to track the status of the import by calling\nGetOperation.\n\nImmediate fatal errors appear in the\nerror field.\nOtherwise, when the operation finishes, a detailed response of type\nImportResourcesResponse is returned in the\nresponse field.\nThe metadata field type for this\noperation is OperationMetadata.",
+	//   "description": "Import resources to the FHIR store by loading data from the specified\nsources. Each resource must have a client-supplied ID, which is retained\nby the server.\n\nThe import operation is idempotent. Upon retry, the most recent data\n(matching the client-supplied ID) is overwritten, without creating a new\nresource version. If partial failures occur during the import, successful\nchanges are not rolled back.\n\nIf history imports are enabled\n(enable_history_import is set in the\nFHIR store's configuration), you can import historical versions of a\nresource by supplying a bundle of type `history`. The historical versions\nin the bundle must have `lastUpdated` timestamps. If a current or\nhistorical version with the supplied resource ID already exists, the\nbundle is rejected.\n\nThis method returns an Operation that can\nbe used to track the status of the import by calling\nGetOperation.\n\nImmediate fatal errors appear in the\nerror field.\nOtherwise, when the operation finishes, a detailed response of type\nImportResourcesResponse is returned in the\nresponse field.\nThe metadata field type for this\noperation is OperationMetadata.",
 	//   "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}:import",
 	//   "httpMethod": "POST",
 	//   "id": "healthcare.projects.locations.datasets.fhirStores.import",
@@ -14168,6 +14306,29 @@
 }
 
 // Search: Searches resources in the given FHIR store.
+//
+// # Search Parameters
+//
+// The server's capability statement, retrieved
+// through
+// GetCapabilityStatement, indicates which search
+// parameters are supported on each FHIR resource.
+//
+// # Search Modifiers
+//
+// Modifier   | Supported
+// ----------- | ---------
+// `:missing`  | Yes
+// `:exact`    | Yes
+// `:contains` | Yes
+// `:text`     | Yes
+// `:in`       | Yes
+// `:not-in`   | Yes
+// `:above`    | Yes
+// `:below`    | Yes
+// `:[type]`   | Yes
+// `:not`      | Yes
+// `:recurse`  | No
 func (r *ProjectsLocationsDatasetsFhirStoresFhirService) Search(parent string, searchresourcesrequest *SearchResourcesRequest) *ProjectsLocationsDatasetsFhirStoresFhirSearchCall {
 	c := &ProjectsLocationsDatasetsFhirStoresFhirSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -14265,7 +14426,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Searches resources in the given FHIR store.",
+	//   "description": "Searches resources in the given FHIR store.\n\n# Search Parameters\n\nThe server's capability statement, retrieved through\nGetCapabilityStatement, indicates which search\nparameters are supported on each FHIR resource.\n\n# Search Modifiers\n\nModifier   | Supported\n----------- | ---------\n`:missing`  | Yes\n`:exact`    | Yes\n`:contains` | Yes\n`:text`     | Yes\n`:in`       | Yes\n`:not-in`   | Yes\n`:above`    | Yes\n`:below`    | Yes\n`:[type]`   | Yes\n`:not`      | Yes\n`:recurse`  | No",
 	//   "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/fhir/_search",
 	//   "httpMethod": "POST",
 	//   "id": "healthcare.projects.locations.datasets.fhirStores.fhir._search",
@@ -15619,6 +15780,29 @@
 }
 
 // SearchResources: Searches resources in the given FHIR store.
+//
+// # Search Parameters
+//
+// The server's capability statement, retrieved
+// through
+// GetCapabilityStatement, indicates which search
+// parameters are supported on each FHIR resource.
+//
+// # Search Modifiers
+//
+// Modifier   | Supported
+// ----------- | ---------
+// `:missing`  | Yes
+// `:exact`    | Yes
+// `:contains` | Yes
+// `:text`     | Yes
+// `:in`       | Yes
+// `:not-in`   | Yes
+// `:above`    | Yes
+// `:below`    | Yes
+// `:[type]`   | Yes
+// `:not`      | Yes
+// `:recurse`  | No
 func (r *ProjectsLocationsDatasetsFhirStoresFhirService) SearchResources(parent string, resourceType string) *ProjectsLocationsDatasetsFhirStoresFhirSearchResourcesCall {
 	c := &ProjectsLocationsDatasetsFhirStoresFhirSearchResourcesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -15725,7 +15909,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Searches resources in the given FHIR store.",
+	//   "description": "Searches resources in the given FHIR store.\n\n# Search Parameters\n\nThe server's capability statement, retrieved through\nGetCapabilityStatement, indicates which search\nparameters are supported on each FHIR resource.\n\n# Search Modifiers\n\nModifier   | Supported\n----------- | ---------\n`:missing`  | Yes\n`:exact`    | Yes\n`:contains` | Yes\n`:text`     | Yes\n`:in`       | Yes\n`:not-in`   | Yes\n`:above`    | Yes\n`:below`    | Yes\n`:[type]`   | Yes\n`:not`      | Yes\n`:recurse`  | No",
 	//   "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/datasets/{datasetsId}/fhirStores/{fhirStoresId}/fhir/{fhirId}",
 	//   "httpMethod": "GET",
 	//   "id": "healthcare.projects.locations.datasets.fhirStores.fhir.searchResources",
@@ -18580,54 +18764,67 @@
 // Syntax:
 // https://cloud.google.com/appengine/docs/standard/python/search
 // /query_strings
+//
 // Fields/functions available for filtering are:
-// - message_type, from the MSH-9 segment, e.g. 'NOT message_type =
-// "ADT"'
-// - send_date or sendDate, the YYYY-MM-DD date the message was sent in
+//
+// *  `message_type`, from the MSH-9 segment; for example
+// `NOT message_type = "ADT"
+// *  `send_date` or `sendDate`, the YYYY-MM-DD date the message was
+// sent in
+// the dataset's time_zone, from the MSH-7 segment; for
+// example
+// `send_date < "2017-01-02"
+// *  `send_time`, the timestamp of when the message was sent, using
 // the
-//   dataset's time_zone, from the MSH-7 segment; e.g.
-//   'send_date < "2017-01-02"'
-// - send_time, the timestamp of when the message was sent, using the
-// RFC3339
-//   time format for comparisons, from the MSH-7 segment; e.g.
-// 'send_time <
-//   "2017-01-02T00:00:00-05:00"'
-// - send_facility, the hospital/trust that the message came from, from
+// RFC3339 time format for comparisons, from the MSH-7 segment; for
+// example
+// `send_time < "2017-01-02T00:00:00-05:00"
+// *  `send_facility`, the care center that the message came from, from
 // the
-//   MSH-4 segment, e.g. 'send_facility = "RAL"'
-// - HL7RegExp(expr), which does regular expression matching of expr
-// against
-//   the HL7 message payload using re2 (http://code.google.com/p/re2/)
-//   syntax; e.g. 'HL7RegExp("^.*\|.*\|CERNER")'
-// - PatientId(value, type), which matches if the message lists a
+// MSH-4 segment; for example `send_facility = "ABC"
+// *  `HL7RegExp(expr)`, which does regular expression matching of
+// `expr`
+// against the message payload using re2
+// (http://code.google.com/p/re2/)
+// syntax; for example `HL7RegExp("^.*\|.*\|EMERG")`
+// *  `PatientId(value, type)`, which matches if the message lists a
 // patient
-//   having an ID of the given value and type in the PID-2, PID-3, or
+// having an ID of the given value and type in the PID-2, PID-3, or
 // PID-4
-//   segments; e.g. 'PatientId("123456", "MRN")'
-// - labels.x, a string value of the label with key x as set using the
-// labels
-//   map in Message, e.g. 'labels."priority"="high"'. ":*" can be used
-// to
-//   assert the existence of a label, e.g.
-// 'labels."priority":*'.
-// Negation on the patient ID function or the labels field is not
-// supported,
-// e.g. invalid queries: 'NOT PatientId("123456", "MRN")',
-// 'NOT labels."tag1":*', 'NOT labels."tag2"="val2"'.
-// Conjunction of multiple patient ID functions is not supported, e.g.
-// an
-// invalid query: 'PatientId("123456", "MRN") AND PatientId("456789",
-// "MRN")'.
-// Conjunction of multiple labels fields is also not supported, e.g.
-// an
-// invalid query: 'labels."tag1":* AND
-// labels."tag2"="val2"'.
-// Conjunction of one patient ID function, one labels field and other
-// fields
-// is supported, e.g. a valid query:
-// 'PatientId("123456", "MRN") AND labels."tag1":* AND message_type =
-// "ADT"'.
-// HasLabel(x) and Label(x) are deprecated.
+// segments; for example `PatientId("123456", "MRN")`
+// *  `labels.x`, a string value of the label with key `x` as set using
+// the
+// Message.labels
+// map, for example `labels."priority"="high". The operator `:*` can be
+// used
+// to assert the existence of a label, for example
+// `labels."priority":*`.
+//
+// Limitations on conjunctions:
+//
+// *  Negation on the patient ID function or the labels field is
+// not
+// supported, for example these queries are invalid:
+// `NOT PatientId("123456", "MRN")`, `NOT labels."tag1":*`,
+// `NOT labels."tag2"="val2".
+// *  Conjunction of multiple patient ID functions is not supported,
+// for
+// example this query is invalid:
+// `PatientId("123456", "MRN") AND PatientId("456789", "MRN")`.
+// *  Conjunction of multiple labels fields is also not supported,
+// for
+// example this query is invalid: `labels."tag1":* AND
+// labels."tag2"="val2".
+// *  Conjunction of one patient ID function, one labels field and
+// conditions
+// on other fields is supported, for example this query is
+// valid:
+// `PatientId("123456", "MRN") AND labels."tag1":* AND message_type =
+// "ADT".
+//
+// The HasLabel(x) and Label(x) syntax from previous API versions
+// are
+// deprecated; replaced by the `labels.x` syntax.
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall) Filter(filter string) *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
@@ -18637,9 +18834,11 @@
 // returned by the specified order_by clause.
 // Syntax:
 // https://cloud.google.com/apis/design/design_patterns#sorting_order
-// Fie
-// lds available for ordering are:
-// - send_time
+//
+// Fi
+// elds available for ordering are:
+//
+// *  `send_time`
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall) OrderBy(orderBy string) *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall {
 	c.urlParams_.Set("orderBy", orderBy)
 	return c
@@ -18768,12 +18967,12 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- labels.x, a string value of the label with key x as set using the labels\n  map in Message, e.g. 'labels.\"priority\"=\"high\"'. \":*\" can be used to\n  assert the existence of a label, e.g. 'labels.\"priority\":*'.\nNegation on the patient ID function or the labels field is not supported,\ne.g. invalid queries: 'NOT PatientId(\"123456\", \"MRN\")',\n'NOT labels.\"tag1\":*', 'NOT labels.\"tag2\"=\"val2\"'.\nConjunction of multiple patient ID functions is not supported, e.g. an\ninvalid query: 'PatientId(\"123456\", \"MRN\") AND PatientId(\"456789\", \"MRN\")'.\nConjunction of multiple labels fields is also not supported, e.g. an\ninvalid query: 'labels.\"tag1\":* AND labels.\"tag2\"=\"val2\"'.\nConjunction of one patient ID function, one labels field and other fields\nis supported, e.g. a valid query:\n'PatientId(\"123456\", \"MRN\") AND labels.\"tag1\":* AND message_type = \"ADT\"'.\nHasLabel(x) and Label(x) are deprecated.",
+	//       "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\n\nFields/functions available for filtering are:\n\n*  `message_type`, from the MSH-9 segment; for example\n`NOT message_type = \"ADT\"`\n*  `send_date` or `sendDate`, the YYYY-MM-DD date the message was sent in\nthe dataset's time_zone, from the MSH-7 segment; for example\n`send_date \u003c \"2017-01-02\"`\n*  `send_time`, the timestamp of when the message was sent, using the\nRFC3339 time format for comparisons, from the MSH-7 segment; for example\n`send_time \u003c \"2017-01-02T00:00:00-05:00\"`\n*  `send_facility`, the care center that the message came from, from the\nMSH-4 segment; for example `send_facility = \"ABC\"`\n*  `HL7RegExp(expr)`, which does regular expression matching of `expr`\nagainst the message payload using re2 (http://code.google.com/p/re2/)\nsyntax; for example `HL7RegExp(\"^.*\\|.*\\|EMERG\")`\n*  `PatientId(value, type)`, which matches if the message lists a patient\nhaving an ID of the given value and type in the PID-2, PID-3, or PID-4\nsegments; for example `PatientId(\"123456\", \"MRN\")`\n*  `labels.x`, a string value of the label with key `x` as set using the\nMessage.labels\nmap, for example `labels.\"priority\"=\"high\"`. The operator `:*` can be used\nto assert the existence of a label, for example `labels.\"priority\":*`.\n\nLimitations on conjunctions:\n\n*  Negation on the patient ID function or the labels field is not\nsupported, for example these queries are invalid:\n`NOT PatientId(\"123456\", \"MRN\")`, `NOT labels.\"tag1\":*`,\n`NOT labels.\"tag2\"=\"val2\"`.\n*  Conjunction of multiple patient ID functions is not supported, for\nexample this query is invalid:\n`PatientId(\"123456\", \"MRN\") AND PatientId(\"456789\", \"MRN\")`.\n*  Conjunction of multiple labels fields is also not supported, for\nexample this query is invalid: `labels.\"tag1\":* AND labels.\"tag2\"=\"val2\"`.\n*  Conjunction of one patient ID function, one labels field and conditions\non other fields is supported, for example this query is valid:\n`PatientId(\"123456\", \"MRN\") AND labels.\"tag1\":* AND message_type = \"ADT\"`.\n\nThe HasLabel(x) and Label(x) syntax from previous API versions are\ndeprecated; replaced by the `labels.x` syntax.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "orderBy": {
-	//       "description": "Orders messages returned by the specified order_by clause.\nSyntax: https://cloud.google.com/apis/design/design_patterns#sorting_order\nFields available for ordering are:\n- send_time",
+	//       "description": "Orders messages returned by the specified order_by clause.\nSyntax: https://cloud.google.com/apis/design/design_patterns#sorting_order\n\nFields available for ordering are:\n\n*  `send_time`",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/iam/v1/iam-api.json b/iam/v1/iam-api.json
index b7280ce..ce6eb29 100644
--- a/iam/v1/iam-api.json
+++ b/iam/v1/iam-api.json
@@ -1193,7 +1193,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190318",
   "rootUrl": "https://iam.googleapis.com/",
   "schemas": {
     "AuditConfig": {
@@ -1272,7 +1272,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/iam/v1/iam-gen.go b/iam/v1/iam-gen.go
index 2652285..23ba396 100644
--- a/iam/v1/iam-gen.go
+++ b/iam/v1/iam-gen.go
@@ -452,8 +452,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
diff --git a/jobs/v3p1beta1/jobs-api.json b/jobs/v3p1beta1/jobs-api.json
index 1f38561..f25b572 100644
--- a/jobs/v3p1beta1/jobs-api.json
+++ b/jobs/v3p1beta1/jobs-api.json
@@ -662,7 +662,7 @@
       }
     }
   },
-  "revision": "20190306",
+  "revision": "20190319",
   "rootUrl": "https://jobs.googleapis.com/",
   "schemas": {
     "ApplicationInfo": {
@@ -2715,7 +2715,7 @@
       "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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": {
diff --git a/jobs/v3p1beta1/jobs-gen.go b/jobs/v3p1beta1/jobs-gen.go
index bad6133..36dcdec 100644
--- a/jobs/v3p1beta1/jobs-gen.go
+++ b/jobs/v3p1beta1/jobs-gen.go
@@ -4712,20 +4712,20 @@
 }
 
 // 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:
+// 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
+// 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
diff --git a/logging/v2/logging-api.json b/logging/v2/logging-api.json
index 0b5b623..3a068e4 100644
--- a/logging/v2/logging-api.json
+++ b/logging/v2/logging-api.json
@@ -2535,7 +2535,7 @@
       }
     }
   },
-  "revision": "20190311",
+  "revision": "20190316",
   "rootUrl": "https://logging.googleapis.com/",
   "schemas": {
     "BucketOptions": {
@@ -2902,7 +2902,7 @@
         },
         "metadata": {
           "$ref": "MonitoredResourceMetadata",
-          "description": "Output only. Additional metadata about the monitored resource.Only k8s_container, k8s_pod, and k8s_node MonitoredResources have this field populated."
+          "description": "Deprecated. Output only. Additional metadata about the monitored resource.Only k8s_container, k8s_pod, and k8s_node MonitoredResources have this field populated for GKE versions older than 1.12.6. For GKE versions 1.12.6 and above, the metadata field has been deprecated. The Kubernetes pod labels that used to be in metadata.userLabels will now be present in the labels field with a key prefix of k8s-pod/. The Stackdriver system labels that were present in the metadata.systemLabels field will no longer be available in the LogEntry."
         },
         "operation": {
           "$ref": "LogEntryOperation",
diff --git a/logging/v2/logging-gen.go b/logging/v2/logging-gen.go
index 64bc457..990b330 100644
--- a/logging/v2/logging-gen.go
+++ b/logging/v2/logging-gen.go
@@ -1110,9 +1110,15 @@
 	// never return any results.
 	LogName string `json:"logName,omitempty"`
 
-	// Metadata: Output only. Additional metadata about the monitored
-	// resource.Only k8s_container, k8s_pod, and k8s_node MonitoredResources
-	// have this field populated.
+	// Metadata: Deprecated. Output only. Additional metadata about the
+	// monitored resource.Only k8s_container, k8s_pod, and k8s_node
+	// MonitoredResources have this field populated for GKE versions older
+	// than 1.12.6. For GKE versions 1.12.6 and above, the metadata field
+	// has been deprecated. The Kubernetes pod labels that used to be in
+	// metadata.userLabels will now be present in the labels field with a
+	// key prefix of k8s-pod/. The Stackdriver system labels that were
+	// present in the metadata.systemLabels field will no longer be
+	// available in the LogEntry.
 	Metadata *MonitoredResourceMetadata `json:"metadata,omitempty"`
 
 	// Operation: Optional. Information about an operation associated with
diff --git a/logging/v2beta1/logging-api.json b/logging/v2beta1/logging-api.json
index 572c50f..5d645e1 100644
--- a/logging/v2beta1/logging-api.json
+++ b/logging/v2beta1/logging-api.json
@@ -529,7 +529,7 @@
       }
     }
   },
-  "revision": "20190311",
+  "revision": "20190316",
   "rootUrl": "https://logging.googleapis.com/",
   "schemas": {
     "BucketOptions": {
@@ -860,7 +860,7 @@
         },
         "metadata": {
           "$ref": "MonitoredResourceMetadata",
-          "description": "Output only. Additional metadata about the monitored resource.Only k8s_container, k8s_pod, and k8s_node MonitoredResources have this field populated."
+          "description": "Deprecated. Output only. Additional metadata about the monitored resource.Only k8s_container, k8s_pod, and k8s_node MonitoredResources have this field populated for GKE versions older than 1.12.6. For GKE versions 1.12.6 and above, the metadata field has been deprecated. The Kubernetes pod labels that used to be in metadata.userLabels will now be present in the labels field with a key prefix of k8s-pod/. The Stackdriver system labels that were present in the metadata.systemLabels field will no longer be available in the LogEntry."
         },
         "operation": {
           "$ref": "LogEntryOperation",
diff --git a/logging/v2beta1/logging-gen.go b/logging/v2beta1/logging-gen.go
index ff5c6bf..e6096f7 100644
--- a/logging/v2beta1/logging-gen.go
+++ b/logging/v2beta1/logging-gen.go
@@ -828,9 +828,15 @@
 	// never return any results.
 	LogName string `json:"logName,omitempty"`
 
-	// Metadata: Output only. Additional metadata about the monitored
-	// resource.Only k8s_container, k8s_pod, and k8s_node MonitoredResources
-	// have this field populated.
+	// Metadata: Deprecated. Output only. Additional metadata about the
+	// monitored resource.Only k8s_container, k8s_pod, and k8s_node
+	// MonitoredResources have this field populated for GKE versions older
+	// than 1.12.6. For GKE versions 1.12.6 and above, the metadata field
+	// has been deprecated. The Kubernetes pod labels that used to be in
+	// metadata.userLabels will now be present in the labels field with a
+	// key prefix of k8s-pod/. The Stackdriver system labels that were
+	// present in the metadata.systemLabels field will no longer be
+	// available in the LogEntry.
 	Metadata *MonitoredResourceMetadata `json:"metadata,omitempty"`
 
 	// Operation: Optional. Information about an operation associated with
diff --git a/ml/v1/ml-api.json b/ml/v1/ml-api.json
index 8522a4d..d21f0cb 100644
--- a/ml/v1/ml-api.json
+++ b/ml/v1/ml-api.json
@@ -1019,7 +1019,7 @@
       }
     }
   },
-  "revision": "20190313",
+  "revision": "20190316",
   "rootUrl": "https://ml.googleapis.com/",
   "schemas": {
     "GoogleApi__HttpBody": {
@@ -1319,7 +1319,7 @@
       "type": "object"
     },
     "GoogleCloudMlV1__Job": {
-      "description": "Represents a training or prediction job.",
+      "description": "Represents a training, prediction or explanation job.",
       "id": "GoogleCloudMlV1__Job",
       "properties": {
         "createTime": {
@@ -1527,8 +1527,12 @@
           "description": "Required. The name specified for the model when it was created.\n\nThe model name must be unique within the project it is created in.",
           "type": "string"
         },
+        "onlinePredictionConsoleLogging": {
+          "description": "Optional. If true, enables logging of stderr and stdout streams\nfor online prediction in Stackdriver Logging. These can be more verbose\nthan the standard access logs (see `online_prediction_logging`) and thus\ncan incur higher cost. However, they are helpful for debugging. Note that\nsince Stackdriver logs may incur a cost, particularly if the total QPS\nin your project is high, be sure to estimate your costs before enabling\nthis flag.\n\nDefault is false.",
+          "type": "boolean"
+        },
         "onlinePredictionLogging": {
-          "description": "Optional. If true, enables StackDriver Logging for online prediction.\nDefault is false.",
+          "description": "Optional. If true, online prediction access logs are sent to StackDriver\nLogging. These logs are like standard server access logs, containing\ninformation like timestamp and latency for each request. Note that\nStackdriver logs may incur a cost, particular if the total QPS in your\nproject is high.\n\nDefault is false.",
           "type": "boolean"
         },
         "regions": {
@@ -1713,14 +1717,14 @@
             "Unspecified format.",
             "Each line of the file is a JSON dictionary representing one record.",
             "Deprecated. Use JSON instead.",
-            "INPUT ONLY. The source file is a TFRecord file.",
-            "INPUT ONLY. The source file is a GZIP-compressed TFRecord file.",
-            "OUTPUT ONLY. Output values will be in comma-separated rows, with keys\nin a separate file."
+            "The source file is a TFRecord file.\nCurrently available only for input data.",
+            "The source file is a GZIP-compressed TFRecord file.\nCurrently available only for input data.",
+            "Values are comma-separated rows, with keys in a separate file.\nCurrently available only for output data."
           ],
           "type": "string"
         },
         "inputPaths": {
-          "description": "Required. The Google Cloud Storage location of the input data files.\nMay contain wildcards.",
+          "description": "Required. The Google Cloud Storage location of the input data files.\nMay contain wildcards. See \u003ca href=\"https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames\u003c/a\u003e",
           "items": {
             "type": "string"
           },
@@ -1749,9 +1753,9 @@
             "Unspecified format.",
             "Each line of the file is a JSON dictionary representing one record.",
             "Deprecated. Use JSON instead.",
-            "INPUT ONLY. The source file is a TFRecord file.",
-            "INPUT ONLY. The source file is a GZIP-compressed TFRecord file.",
-            "OUTPUT ONLY. Output values will be in comma-separated rows, with keys\nin a separate file."
+            "The source file is a TFRecord file.\nCurrently available only for input data.",
+            "The source file is a GZIP-compressed TFRecord file.\nCurrently available only for input data.",
+            "Values are comma-separated rows, with keys in a separate file.\nCurrently available only for output data."
           ],
           "type": "string"
         },
@@ -1850,7 +1854,7 @@
         },
         "masterConfig": {
           "$ref": "GoogleCloudMlV1__ReplicaConfig",
-          "description": "Optional. The configuration for your master worker.\n\nYou should only set `masterConfig.acceleratorConfig` if `masterType` is set\nto a Compute Engine machine type. Learn about [restrictions on accelerator\nconfigurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `masterConfig.imageUri` only if you build a custom image. Only one of\n`masterConfig.imageUri` and `runtimeVersion` should be set. Learn more about\n[configuring custom containers](/ml-engine/docs/distributed-training-containers)."
+          "description": "Optional. The configuration for your master worker.\n\nYou should only set `masterConfig.acceleratorConfig` if `masterType` is set\nto a Compute Engine machine type. Learn about [restrictions on accelerator\nconfigurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `masterConfig.imageUri` only if you build a custom image. Only one of\n`masterConfig.imageUri` and `runtimeVersion` should be set. Learn more about\n[configuring custom\ncontainers](/ml-engine/docs/distributed-training-containers)."
         },
         "masterType": {
           "description": "Optional. Specifies the type of virtual machine to use for your training\njob's master worker.\n\nThe following types are supported:\n\n\u003cdl\u003e\n  \u003cdt\u003estandard\u003c/dt\u003e\n  \u003cdd\u003e\n  A basic machine configuration suitable for training simple models with\n  small to moderate datasets.\n  \u003c/dd\u003e\n  \u003cdt\u003elarge_model\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine with a lot of memory, specially suited for parameter servers\n  when your model is large (having many hidden layers or layers with very\n  large numbers of nodes).\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_s\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine suitable for the master and workers of the cluster when your\n  model requires more computation than the standard machine can handle\n  satisfactorily.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine with roughly twice the number of cores and roughly double the\n  memory of \u003ci\u003ecomplex_model_s\u003c/i\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine with roughly twice the number of cores and roughly double the\n  memory of \u003ci\u003ecomplex_model_m\u003c/i\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla K80 GPU. See more about\n  \u003ca href=\"/ml-engine/docs/tensorflow/using-gpus\"\u003eusing GPUs to\n  train your model\u003c/a\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that also includes\n  four NVIDIA Tesla K80 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_l\u003c/i\u003e that also includes\n  eight NVIDIA Tesla K80 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_p100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla P100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_p100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that also includes\n  four NVIDIA Tesla P100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla V100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003elarge_model_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003elarge_model\u003c/i\u003e that\n  also includes a single NVIDIA Tesla V100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that\n  also includes four NVIDIA Tesla V100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_l\u003c/i\u003e that\n  also includes eight NVIDIA Tesla V100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecloud_tpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A TPU VM including one Cloud TPU. See more about\n  \u003ca href=\"/ml-engine/docs/tensorflow/using-tpus\"\u003eusing TPUs to train\n  your model\u003c/a\u003e.\n  \u003c/dd\u003e\n\u003c/dl\u003e\n\nYou may also use certain Compute Engine machine types directly in this\nfield. The following types are supported:\n\n- `n1-standard-4`\n- `n1-standard-8`\n- `n1-standard-16`\n- `n1-standard-32`\n- `n1-standard-64`\n- `n1-standard-96`\n- `n1-highmem-2`\n- `n1-highmem-4`\n- `n1-highmem-8`\n- `n1-highmem-16`\n- `n1-highmem-32`\n- `n1-highmem-64`\n- `n1-highmem-96`\n- `n1-highcpu-16`\n- `n1-highcpu-32`\n- `n1-highcpu-64`\n- `n1-highcpu-96`\n\nSee more about [using Compute Engine machine\ntypes](/ml-engine/docs/tensorflow/machine-types#compute-engine-machine-types).\n\nYou must set this value when `scaleTier` is set to `CUSTOM`.",
@@ -1865,7 +1869,7 @@
         },
         "parameterServerConfig": {
           "$ref": "GoogleCloudMlV1__ReplicaConfig",
-          "description": "Optional. The configuration for parameter servers.\n\nYou should only set `parameterServerConfig.acceleratorConfig` if\n`parameterServerConfigType` is set to a Compute Engine machine type. [Learn\nabout restrictions on accelerator configurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `parameterServerConfig.imageUri` only if you build a custom image for\nyour parameter server. If `parameterServerConfig.imageUri` has not been\nset, Cloud ML Engine uses the value of `masterConfig.imageUri`.\nLearn more about [configuring custom containers](/ml-engine/docs/distributed-training-containers)."
+          "description": "Optional. The configuration for parameter servers.\n\nYou should only set `parameterServerConfig.acceleratorConfig` if\n`parameterServerConfigType` is set to a Compute Engine machine type. [Learn\nabout restrictions on accelerator configurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `parameterServerConfig.imageUri` only if you build a custom image for\nyour parameter server. If `parameterServerConfig.imageUri` has not been\nset, Cloud ML Engine uses the value of `masterConfig.imageUri`.\nLearn more about [configuring custom\ncontainers](/ml-engine/docs/distributed-training-containers)."
         },
         "parameterServerCount": {
           "description": "Optional. The number of parameter server replicas to use for the training\njob. Each replica in the cluster will be of the type specified in\n`parameter_server_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`.If you\nset this value, you must also set `parameter_server_type`.\n\nThe default value is zero.",
@@ -1914,7 +1918,7 @@
         },
         "workerConfig": {
           "$ref": "GoogleCloudMlV1__ReplicaConfig",
-          "description": "Optional. The configuration for workers.\n\nYou should only set `workerConfig.acceleratorConfig` if `workerType` is set\nto a Compute Engine machine type. [Learn about restrictions on accelerator\nconfigurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `workerConfig.imageUri` only if you build a custom image for your\nworker. If `workerConfig.imageUri` has not been set, Cloud ML Engine uses\nthe value of `masterConfig.imageUri`. Learn more about\n[configuring custom containers](/ml-engine/docs/distributed-training-containers)."
+          "description": "Optional. The configuration for workers.\n\nYou should only set `workerConfig.acceleratorConfig` if `workerType` is set\nto a Compute Engine machine type. [Learn about restrictions on accelerator\nconfigurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `workerConfig.imageUri` only if you build a custom image for your\nworker. If `workerConfig.imageUri` has not been set, Cloud ML Engine uses\nthe value of `masterConfig.imageUri`. Learn more about\n[configuring custom\ncontainers](/ml-engine/docs/distributed-training-containers)."
         },
         "workerCount": {
           "description": "Optional. The number of worker replicas to use for the training job. Each\nreplica in the cluster will be of the type specified in `worker_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`. If you\nset this value, you must also set `worker_type`.\n\nThe default value is zero.",
@@ -1965,7 +1969,7 @@
       "type": "object"
     },
     "GoogleCloudMlV1__Version": {
-      "description": "Represents a version of the model.\n\nEach version is a trained model deployed in the cloud, ready to handle\nprediction requests. A model can have multiple versions. You can get\ninformation about all of the versions of a given model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).\nNext ID: 29",
+      "description": "Represents a version of the model.\n\nEach version is a trained model deployed in the cloud, ready to handle\nprediction requests. A model can have multiple versions. You can get\ninformation about all of the versions of a given model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).\nNext ID: 30",
       "id": "GoogleCloudMlV1__Version",
       "properties": {
         "autoScaling": {
@@ -2274,7 +2278,7 @@
       "type": "object"
     },
     "GoogleRpc__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.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [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\nmessage, and 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": "GoogleRpc__Status",
       "properties": {
         "code": {
diff --git a/ml/v1/ml-gen.go b/ml/v1/ml-gen.go
index 054941b..5748417 100644
--- a/ml/v1/ml-gen.go
+++ b/ml/v1/ml-gen.go
@@ -791,7 +791,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// GoogleCloudMlV1__Job: Represents a training or prediction job.
+// GoogleCloudMlV1__Job: Represents a training, prediction or
+// explanation job.
 type GoogleCloudMlV1__Job struct {
 	// CreateTime: Output only. When the job was created.
 	CreateTime string `json:"createTime,omitempty"`
@@ -1161,8 +1162,33 @@
 	// The model name must be unique within the project it is created in.
 	Name string `json:"name,omitempty"`
 
-	// OnlinePredictionLogging: Optional. If true, enables StackDriver
-	// Logging for online prediction.
+	// OnlinePredictionConsoleLogging: Optional. If true, enables logging of
+	// stderr and stdout streams
+	// for online prediction in Stackdriver Logging. These can be more
+	// verbose
+	// than the standard access logs (see `online_prediction_logging`) and
+	// thus
+	// can incur higher cost. However, they are helpful for debugging. Note
+	// that
+	// since Stackdriver logs may incur a cost, particularly if the total
+	// QPS
+	// in your project is high, be sure to estimate your costs before
+	// enabling
+	// this flag.
+	//
+	// Default is false.
+	OnlinePredictionConsoleLogging bool `json:"onlinePredictionConsoleLogging,omitempty"`
+
+	// OnlinePredictionLogging: Optional. If true, online prediction access
+	// logs are sent to StackDriver
+	// Logging. These logs are like standard server access logs,
+	// containing
+	// information like timestamp and latency for each request. Note
+	// that
+	// Stackdriver logs may incur a cost, particular if the total QPS in
+	// your
+	// project is high.
+	//
 	// Default is false.
 	OnlinePredictionLogging bool `json:"onlinePredictionLogging,omitempty"`
 
@@ -1442,17 +1468,21 @@
 	//   "JSON" - Each line of the file is a JSON dictionary representing
 	// one record.
 	//   "TEXT" - Deprecated. Use JSON instead.
-	//   "TF_RECORD" - INPUT ONLY. The source file is a TFRecord file.
-	//   "TF_RECORD_GZIP" - INPUT ONLY. The source file is a GZIP-compressed
-	// TFRecord file.
-	//   "CSV" - OUTPUT ONLY. Output values will be in comma-separated rows,
-	// with keys
-	// in a separate file.
+	//   "TF_RECORD" - The source file is a TFRecord file.
+	// Currently available only for input data.
+	//   "TF_RECORD_GZIP" - The source file is a GZIP-compressed TFRecord
+	// file.
+	// Currently available only for input data.
+	//   "CSV" - Values are comma-separated rows, with keys in a separate
+	// file.
+	// Currently available only for output data.
 	DataFormat string `json:"dataFormat,omitempty"`
 
 	// InputPaths: Required. The Google Cloud Storage location of the input
 	// data files.
-	// May contain wildcards.
+	// May contain wildcards. See <a
+	// href="https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNa
+	// mes</a>
 	InputPaths []string `json:"inputPaths,omitempty"`
 
 	// MaxWorkerCount: Optional. The maximum number of workers to be used
@@ -1476,12 +1506,14 @@
 	//   "JSON" - Each line of the file is a JSON dictionary representing
 	// one record.
 	//   "TEXT" - Deprecated. Use JSON instead.
-	//   "TF_RECORD" - INPUT ONLY. The source file is a TFRecord file.
-	//   "TF_RECORD_GZIP" - INPUT ONLY. The source file is a GZIP-compressed
-	// TFRecord file.
-	//   "CSV" - OUTPUT ONLY. Output values will be in comma-separated rows,
-	// with keys
-	// in a separate file.
+	//   "TF_RECORD" - The source file is a TFRecord file.
+	// Currently available only for input data.
+	//   "TF_RECORD_GZIP" - The source file is a GZIP-compressed TFRecord
+	// file.
+	// Currently available only for input data.
+	//   "CSV" - Values are comma-separated rows, with keys in a separate
+	// file.
+	// Currently available only for output data.
 	OutputDataFormat string `json:"outputDataFormat,omitempty"`
 
 	// OutputPath: Required. The output Google Cloud Storage location.
@@ -1701,7 +1733,8 @@
 	// one of
 	// `masterConfig.imageUri` and `runtimeVersion` should be set. Learn
 	// more about
-	// [configuring custom
+	// [configuring
+	// custom
 	// containers](/ml-engine/docs/distributed-training-containers).
 	MasterConfig *GoogleCloudMlV1__ReplicaConfig `json:"masterConfig,omitempty"`
 
@@ -1855,7 +1888,8 @@
 	// your parameter server. If `parameterServerConfig.imageUri` has not
 	// been
 	// set, Cloud ML Engine uses the value of `masterConfig.imageUri`.
-	// Learn more about [configuring custom
+	// Learn more about [configuring
+	// custom
 	// containers](/ml-engine/docs/distributed-training-containers).
 	ParameterServerConfig *GoogleCloudMlV1__ReplicaConfig `json:"parameterServerConfig,omitempty"`
 
@@ -1990,7 +2024,8 @@
 	// worker. If `workerConfig.imageUri` has not been set, Cloud ML Engine
 	// uses
 	// the value of `masterConfig.imageUri`. Learn more about
-	// [configuring custom
+	// [configuring
+	// custom
 	// containers](/ml-engine/docs/distributed-training-containers).
 	WorkerConfig *GoogleCloudMlV1__ReplicaConfig `json:"workerConfig,omitempty"`
 
@@ -2131,7 +2166,7 @@
 // calling
 // [projects.models.versions.list](/ml-engine/reference/rest/v1/p
 // rojects.models.versions/list).
-// Next ID: 29
+// Next ID: 30
 type GoogleCloudMlV1__Version struct {
 	// AutoScaling: Automatically scale the number of nodes used to serve
 	// the model in
@@ -2911,20 +2946,20 @@
 }
 
 // GoogleRpc__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:
+// 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
+// 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
diff --git a/monitoring/v3/monitoring-api.json b/monitoring/v3/monitoring-api.json
index f76fbc9..d13eecfb 100644
--- a/monitoring/v3/monitoring-api.json
+++ b/monitoring/v3/monitoring-api.json
@@ -1457,7 +1457,7 @@
       }
     }
   },
-  "revision": "20190312",
+  "revision": "20190318",
   "rootUrl": "https://monitoring.googleapis.com/",
   "schemas": {
     "Aggregation": {
@@ -2810,7 +2810,7 @@
       "id": "NotificationChannel",
       "properties": {
         "description": {
-          "description": "An optional human-readable description of this notification channel. This description may provide additional details, beyond the display name, for the channel. This may not exceeed 1024 Unicode characters.",
+          "description": "An optional human-readable description of this notification channel. This description may provide additional details, beyond the display name, for the channel. This may not exceed 1024 Unicode characters.",
           "type": "string"
         },
         "displayName": {
diff --git a/monitoring/v3/monitoring-gen.go b/monitoring/v3/monitoring-gen.go
index 1986d43..b08db79 100644
--- a/monitoring/v3/monitoring-gen.go
+++ b/monitoring/v3/monitoring-gen.go
@@ -2955,7 +2955,7 @@
 	// Description: An optional human-readable description of this
 	// notification channel. This description may provide additional
 	// details, beyond the display name, for the channel. This may not
-	// exceeed 1024 Unicode characters.
+	// exceed 1024 Unicode characters.
 	Description string `json:"description,omitempty"`
 
 	// DisplayName: An optional human-readable name for this notification
diff --git a/oauth2/v1/oauth2-api.json b/oauth2/v1/oauth2-api.json
index 464bc4b..0d3c403 100644
--- a/oauth2/v1/oauth2-api.json
+++ b/oauth2/v1/oauth2-api.json
@@ -2,9 +2,6 @@
   "auth": {
     "oauth2": {
       "scopes": {
-        "https://www.googleapis.com/auth/plus.login": {
-          "description": "View your basic profile info, including your age range and language"
-        },
         "https://www.googleapis.com/auth/plus.me": {
           "description": "Know who you are on Google"
         },
@@ -23,7 +20,7 @@
   "description": "Obtains end-user authorization grants for use with other Google APIs.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/accounts/docs/OAuth2",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/izr_0N7-y4dagYg2GSFs18rZ6Tw\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/6gy2tfxO0xiB1vqpE1CpGSSyBHg\"",
   "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"
@@ -31,79 +28,6 @@
   "id": "oauth2:v1",
   "kind": "discovery#restDescription",
   "methods": {
-    "getCertForOpenIdConnect": {
-      "httpMethod": "GET",
-      "id": "oauth2.getCertForOpenIdConnect",
-      "path": "oauth2/v1/certs",
-      "response": {
-        "$ref": "X509"
-      }
-    },
-    "getCertForOpenIdConnectRaw": {
-      "httpMethod": "GET",
-      "id": "oauth2.getCertForOpenIdConnectRaw",
-      "path": "oauth2/v1/raw_public_keys",
-      "response": {
-        "$ref": "Raw"
-      }
-    },
-    "getRobotJwk": {
-      "httpMethod": "GET",
-      "id": "oauth2.getRobotJwk",
-      "parameterOrder": [
-        "robotEmail"
-      ],
-      "parameters": {
-        "robotEmail": {
-          "description": "The email of robot account.",
-          "location": "path",
-          "required": true,
-          "type": "string"
-        }
-      },
-      "path": "service_accounts/v1/jwk/{robotEmail}",
-      "response": {
-        "$ref": "Jwk"
-      }
-    },
-    "getRobotMetadataRaw": {
-      "httpMethod": "GET",
-      "id": "oauth2.getRobotMetadataRaw",
-      "parameterOrder": [
-        "robotEmail"
-      ],
-      "parameters": {
-        "robotEmail": {
-          "description": "The email of robot account.",
-          "location": "path",
-          "required": true,
-          "type": "string"
-        }
-      },
-      "path": "service_accounts/v1/metadata/raw/{robotEmail}",
-      "response": {
-        "$ref": "Raw"
-      }
-    },
-    "getRobotMetadataX509": {
-      "httpMethod": "GET",
-      "id": "oauth2.getRobotMetadataX509",
-      "parameterOrder": [
-        "robotEmail"
-      ],
-      "parameters": {
-        "robotEmail": {
-          "description": "The email of robot account.",
-          "location": "path",
-          "required": true,
-          "type": "string"
-        }
-      },
-      "path": "service_accounts/v1/metadata/x509/{robotEmail}",
-      "response": {
-        "$ref": "X509"
-      }
-    },
     "tokeninfo": {
       "description": "Get token info",
       "httpMethod": "POST",
@@ -187,7 +111,6 @@
             "$ref": "Userinfoplus"
           },
           "scopes": [
-            "https://www.googleapis.com/auth/plus.login",
             "https://www.googleapis.com/auth/plus.me",
             "https://www.googleapis.com/auth/userinfo.email",
             "https://www.googleapis.com/auth/userinfo.profile"
@@ -208,7 +131,6 @@
                     "$ref": "Userinfoplus"
                   },
                   "scopes": [
-                    "https://www.googleapis.com/auth/plus.login",
                     "https://www.googleapis.com/auth/plus.me",
                     "https://www.googleapis.com/auth/userinfo.email",
                     "https://www.googleapis.com/auth/userinfo.profile"
@@ -221,71 +143,9 @@
       }
     }
   },
-  "revision": "20190129",
+  "revision": "20190313",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
-    "Jwk": {
-      "id": "Jwk",
-      "properties": {
-        "keys": {
-          "items": {
-            "properties": {
-              "alg": {
-                "default": "RS256",
-                "type": "string"
-              },
-              "e": {
-                "type": "string"
-              },
-              "kid": {
-                "type": "string"
-              },
-              "kty": {
-                "default": "RSA",
-                "type": "string"
-              },
-              "n": {
-                "type": "string"
-              },
-              "use": {
-                "default": "sig",
-                "type": "string"
-              }
-            },
-            "type": "object"
-          },
-          "type": "array"
-        }
-      },
-      "type": "object"
-    },
-    "Raw": {
-      "id": "Raw",
-      "properties": {
-        "keyvalues": {
-          "items": {
-            "properties": {
-              "algorithm": {
-                "default": "RSA",
-                "type": "string"
-              },
-              "exponent": {
-                "type": "string"
-              },
-              "keyid": {
-                "type": "string"
-              },
-              "modulus": {
-                "type": "string"
-              }
-            },
-            "type": "object"
-          },
-          "type": "array"
-        }
-      },
-      "type": "object"
-    },
     "Tokeninfo": {
       "id": "Tokeninfo",
       "properties": {
@@ -392,13 +252,6 @@
         }
       },
       "type": "object"
-    },
-    "X509": {
-      "additionalProperties": {
-        "type": "string"
-      },
-      "id": "X509",
-      "type": "object"
     }
   },
   "servicePath": "",
diff --git a/oauth2/v1/oauth2-gen.go b/oauth2/v1/oauth2-gen.go
index da0c90c..071da2a 100644
--- a/oauth2/v1/oauth2-gen.go
+++ b/oauth2/v1/oauth2-gen.go
@@ -80,9 +80,6 @@
 
 // OAuth2 scopes used by this API.
 const (
-	// View your basic profile info, including your age range and language
-	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
-
 	// Know who you are on Google
 	PlusMeScope = "https://www.googleapis.com/auth/plus.me"
 
@@ -97,7 +94,6 @@
 // NewService creates a new Service.
 func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
 	scopesOption := option.WithScopes(
-		"https://www.googleapis.com/auth/plus.login",
 		"https://www.googleapis.com/auth/plus.me",
 		"https://www.googleapis.com/auth/userinfo.email",
 		"https://www.googleapis.com/auth/userinfo.profile",
@@ -180,134 +176,6 @@
 	s *Service
 }
 
-type Jwk struct {
-	Keys []*JwkKeys `json:"keys,omitempty"`
-
-	// ServerResponse contains the HTTP response code and headers from the
-	// server.
-	googleapi.ServerResponse `json:"-"`
-
-	// ForceSendFields is a list of field names (e.g. "Keys") 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. "Keys") 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 *Jwk) MarshalJSON() ([]byte, error) {
-	type NoMethod Jwk
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-type JwkKeys struct {
-	Alg string `json:"alg,omitempty"`
-
-	E string `json:"e,omitempty"`
-
-	Kid string `json:"kid,omitempty"`
-
-	Kty string `json:"kty,omitempty"`
-
-	N string `json:"n,omitempty"`
-
-	Use string `json:"use,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Alg") 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. "Alg") 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 *JwkKeys) MarshalJSON() ([]byte, error) {
-	type NoMethod JwkKeys
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-type Raw struct {
-	Keyvalues []*RawKeyvalues `json:"keyvalues,omitempty"`
-
-	// ServerResponse contains the HTTP response code and headers from the
-	// server.
-	googleapi.ServerResponse `json:"-"`
-
-	// ForceSendFields is a list of field names (e.g. "Keyvalues") 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. "Keyvalues") 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 *Raw) MarshalJSON() ([]byte, error) {
-	type NoMethod Raw
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-type RawKeyvalues struct {
-	Algorithm string `json:"algorithm,omitempty"`
-
-	Exponent string `json:"exponent,omitempty"`
-
-	Keyid string `json:"keyid,omitempty"`
-
-	Modulus string `json:"modulus,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Algorithm") 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. "Algorithm") 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 *RawKeyvalues) MarshalJSON() ([]byte, error) {
-	type NoMethod RawKeyvalues
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 type Tokeninfo struct {
 	// AccessType: The access type granted with this token. It can be
 	// offline or online.
@@ -445,619 +313,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// method id "oauth2.getCertForOpenIdConnect":
-
-type GetCertForOpenIdConnectCall struct {
-	s            *Service
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// GetCertForOpenIdConnect:
-func (s *Service) GetCertForOpenIdConnect() *GetCertForOpenIdConnectCall {
-	c := &GetCertForOpenIdConnectCall{s: s, urlParams_: make(gensupport.URLParams)}
-	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 *GetCertForOpenIdConnectCall) Fields(s ...googleapi.Field) *GetCertForOpenIdConnectCall {
-	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 *GetCertForOpenIdConnectCall) IfNoneMatch(entityTag string) *GetCertForOpenIdConnectCall {
-	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 *GetCertForOpenIdConnectCall) Context(ctx context.Context) *GetCertForOpenIdConnectCall {
-	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 *GetCertForOpenIdConnectCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *GetCertForOpenIdConnectCall) 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, "oauth2/v1/certs")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("GET", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "oauth2.getCertForOpenIdConnect" call.
-func (c *GetCertForOpenIdConnectCall) Do(opts ...googleapi.CallOption) (map[string]string, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	var ret map[string]string
-	target := &ret
-	if err := gensupport.DecodeResponse(target, res); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "httpMethod": "GET",
-	//   "id": "oauth2.getCertForOpenIdConnect",
-	//   "path": "oauth2/v1/certs",
-	//   "response": {
-	//     "$ref": "X509"
-	//   }
-	// }
-
-}
-
-// method id "oauth2.getCertForOpenIdConnectRaw":
-
-type GetCertForOpenIdConnectRawCall struct {
-	s            *Service
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// GetCertForOpenIdConnectRaw:
-func (s *Service) GetCertForOpenIdConnectRaw() *GetCertForOpenIdConnectRawCall {
-	c := &GetCertForOpenIdConnectRawCall{s: s, urlParams_: make(gensupport.URLParams)}
-	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 *GetCertForOpenIdConnectRawCall) Fields(s ...googleapi.Field) *GetCertForOpenIdConnectRawCall {
-	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 *GetCertForOpenIdConnectRawCall) IfNoneMatch(entityTag string) *GetCertForOpenIdConnectRawCall {
-	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 *GetCertForOpenIdConnectRawCall) Context(ctx context.Context) *GetCertForOpenIdConnectRawCall {
-	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 *GetCertForOpenIdConnectRawCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *GetCertForOpenIdConnectRawCall) 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, "oauth2/v1/raw_public_keys")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("GET", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "oauth2.getCertForOpenIdConnectRaw" call.
-// Exactly one of *Raw or error will be non-nil. Any non-2xx status code
-// is an error. Response headers are in either
-// *Raw.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 *GetCertForOpenIdConnectRawCall) Do(opts ...googleapi.CallOption) (*Raw, 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 := &Raw{
-		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
-	// {
-	//   "httpMethod": "GET",
-	//   "id": "oauth2.getCertForOpenIdConnectRaw",
-	//   "path": "oauth2/v1/raw_public_keys",
-	//   "response": {
-	//     "$ref": "Raw"
-	//   }
-	// }
-
-}
-
-// method id "oauth2.getRobotJwk":
-
-type GetRobotJwkCall struct {
-	s            *Service
-	robotEmail   string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// GetRobotJwk:
-func (s *Service) GetRobotJwk(robotEmail string) *GetRobotJwkCall {
-	c := &GetRobotJwkCall{s: s, urlParams_: make(gensupport.URLParams)}
-	c.robotEmail = robotEmail
-	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 *GetRobotJwkCall) Fields(s ...googleapi.Field) *GetRobotJwkCall {
-	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 *GetRobotJwkCall) IfNoneMatch(entityTag string) *GetRobotJwkCall {
-	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 *GetRobotJwkCall) Context(ctx context.Context) *GetRobotJwkCall {
-	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 *GetRobotJwkCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *GetRobotJwkCall) 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, "service_accounts/v1/jwk/{robotEmail}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("GET", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"robotEmail": c.robotEmail,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "oauth2.getRobotJwk" call.
-// Exactly one of *Jwk or error will be non-nil. Any non-2xx status code
-// is an error. Response headers are in either
-// *Jwk.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 *GetRobotJwkCall) Do(opts ...googleapi.CallOption) (*Jwk, 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 := &Jwk{
-		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
-	// {
-	//   "httpMethod": "GET",
-	//   "id": "oauth2.getRobotJwk",
-	//   "parameterOrder": [
-	//     "robotEmail"
-	//   ],
-	//   "parameters": {
-	//     "robotEmail": {
-	//       "description": "The email of robot account.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "service_accounts/v1/jwk/{robotEmail}",
-	//   "response": {
-	//     "$ref": "Jwk"
-	//   }
-	// }
-
-}
-
-// method id "oauth2.getRobotMetadataRaw":
-
-type GetRobotMetadataRawCall struct {
-	s            *Service
-	robotEmail   string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// GetRobotMetadataRaw:
-func (s *Service) GetRobotMetadataRaw(robotEmail string) *GetRobotMetadataRawCall {
-	c := &GetRobotMetadataRawCall{s: s, urlParams_: make(gensupport.URLParams)}
-	c.robotEmail = robotEmail
-	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 *GetRobotMetadataRawCall) Fields(s ...googleapi.Field) *GetRobotMetadataRawCall {
-	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 *GetRobotMetadataRawCall) IfNoneMatch(entityTag string) *GetRobotMetadataRawCall {
-	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 *GetRobotMetadataRawCall) Context(ctx context.Context) *GetRobotMetadataRawCall {
-	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 *GetRobotMetadataRawCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *GetRobotMetadataRawCall) 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, "service_accounts/v1/metadata/raw/{robotEmail}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("GET", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"robotEmail": c.robotEmail,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "oauth2.getRobotMetadataRaw" call.
-// Exactly one of *Raw or error will be non-nil. Any non-2xx status code
-// is an error. Response headers are in either
-// *Raw.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 *GetRobotMetadataRawCall) Do(opts ...googleapi.CallOption) (*Raw, 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 := &Raw{
-		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
-	// {
-	//   "httpMethod": "GET",
-	//   "id": "oauth2.getRobotMetadataRaw",
-	//   "parameterOrder": [
-	//     "robotEmail"
-	//   ],
-	//   "parameters": {
-	//     "robotEmail": {
-	//       "description": "The email of robot account.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "service_accounts/v1/metadata/raw/{robotEmail}",
-	//   "response": {
-	//     "$ref": "Raw"
-	//   }
-	// }
-
-}
-
-// method id "oauth2.getRobotMetadataX509":
-
-type GetRobotMetadataX509Call struct {
-	s            *Service
-	robotEmail   string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// GetRobotMetadataX509:
-func (s *Service) GetRobotMetadataX509(robotEmail string) *GetRobotMetadataX509Call {
-	c := &GetRobotMetadataX509Call{s: s, urlParams_: make(gensupport.URLParams)}
-	c.robotEmail = robotEmail
-	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 *GetRobotMetadataX509Call) Fields(s ...googleapi.Field) *GetRobotMetadataX509Call {
-	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 *GetRobotMetadataX509Call) IfNoneMatch(entityTag string) *GetRobotMetadataX509Call {
-	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 *GetRobotMetadataX509Call) Context(ctx context.Context) *GetRobotMetadataX509Call {
-	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 *GetRobotMetadataX509Call) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *GetRobotMetadataX509Call) 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, "service_accounts/v1/metadata/x509/{robotEmail}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("GET", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"robotEmail": c.robotEmail,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "oauth2.getRobotMetadataX509" call.
-func (c *GetRobotMetadataX509Call) Do(opts ...googleapi.CallOption) (map[string]string, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	var ret map[string]string
-	target := &ret
-	if err := gensupport.DecodeResponse(target, res); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "httpMethod": "GET",
-	//   "id": "oauth2.getRobotMetadataX509",
-	//   "parameterOrder": [
-	//     "robotEmail"
-	//   ],
-	//   "parameters": {
-	//     "robotEmail": {
-	//       "description": "The email of robot account.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "service_accounts/v1/metadata/x509/{robotEmail}",
-	//   "response": {
-	//     "$ref": "X509"
-	//   }
-	// }
-
-}
-
 // method id "oauth2.tokeninfo":
 
 type TokeninfoCall struct {
@@ -1310,7 +565,6 @@
 	//     "$ref": "Userinfoplus"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.login",
 	//     "https://www.googleapis.com/auth/plus.me",
 	//     "https://www.googleapis.com/auth/userinfo.email",
 	//     "https://www.googleapis.com/auth/userinfo.profile"
@@ -1438,7 +692,6 @@
 	//     "$ref": "Userinfoplus"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.login",
 	//     "https://www.googleapis.com/auth/plus.me",
 	//     "https://www.googleapis.com/auth/userinfo.email",
 	//     "https://www.googleapis.com/auth/userinfo.profile"
diff --git a/oauth2/v2/oauth2-api.json b/oauth2/v2/oauth2-api.json
index 6bbee8a..b7f4bc7 100644
--- a/oauth2/v2/oauth2-api.json
+++ b/oauth2/v2/oauth2-api.json
@@ -2,9 +2,6 @@
   "auth": {
     "oauth2": {
       "scopes": {
-        "https://www.googleapis.com/auth/plus.login": {
-          "description": "View your basic profile info, including your age range and language"
-        },
         "https://www.googleapis.com/auth/plus.me": {
           "description": "Know who you are on Google"
         },
@@ -23,7 +20,7 @@
   "description": "Obtains end-user authorization grants for use with other Google APIs.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/accounts/docs/OAuth2",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/6QczsO--rzxmz6GMdr2EY6-AXwc\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/WjE37d2rRITM-tBTs5hg2w9kclk\"",
   "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"
@@ -122,7 +119,6 @@
             "$ref": "Userinfoplus"
           },
           "scopes": [
-            "https://www.googleapis.com/auth/plus.login",
             "https://www.googleapis.com/auth/plus.me",
             "https://www.googleapis.com/auth/userinfo.email",
             "https://www.googleapis.com/auth/userinfo.profile"
@@ -142,7 +138,6 @@
                     "$ref": "Userinfoplus"
                   },
                   "scopes": [
-                    "https://www.googleapis.com/auth/plus.login",
                     "https://www.googleapis.com/auth/plus.me",
                     "https://www.googleapis.com/auth/userinfo.email",
                     "https://www.googleapis.com/auth/userinfo.profile"
@@ -155,7 +150,7 @@
       }
     }
   },
-  "revision": "20190129",
+  "revision": "20190313",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Jwk": {
diff --git a/oauth2/v2/oauth2-gen.go b/oauth2/v2/oauth2-gen.go
index 14659f3..4d29fd7 100644
--- a/oauth2/v2/oauth2-gen.go
+++ b/oauth2/v2/oauth2-gen.go
@@ -80,9 +80,6 @@
 
 // OAuth2 scopes used by this API.
 const (
-	// View your basic profile info, including your age range and language
-	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
-
 	// Know who you are on Google
 	PlusMeScope = "https://www.googleapis.com/auth/plus.me"
 
@@ -97,7 +94,6 @@
 // NewService creates a new Service.
 func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
 	scopesOption := option.WithScopes(
-		"https://www.googleapis.com/auth/plus.login",
 		"https://www.googleapis.com/auth/plus.me",
 		"https://www.googleapis.com/auth/userinfo.email",
 		"https://www.googleapis.com/auth/userinfo.profile",
@@ -751,7 +747,6 @@
 	//     "$ref": "Userinfoplus"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.login",
 	//     "https://www.googleapis.com/auth/plus.me",
 	//     "https://www.googleapis.com/auth/userinfo.email",
 	//     "https://www.googleapis.com/auth/userinfo.profile"
@@ -878,7 +873,6 @@
 	//     "$ref": "Userinfoplus"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.login",
 	//     "https://www.googleapis.com/auth/plus.me",
 	//     "https://www.googleapis.com/auth/userinfo.email",
 	//     "https://www.googleapis.com/auth/userinfo.profile"
diff --git a/people/v1/people-api.json b/people/v1/people-api.json
index 44ee85b..046f854 100644
--- a/people/v1/people-api.json
+++ b/people/v1/people-api.json
@@ -27,7 +27,7 @@
           "description": "View your email address"
         },
         "https://www.googleapis.com/auth/userinfo.profile": {
-          "description": "View your basic profile info"
+          "description": "See your personal info, including any personal info you've made publically available"
         }
       }
     }
@@ -585,7 +585,7 @@
       }
     }
   },
-  "revision": "20190313",
+  "revision": "20190320",
   "rootUrl": "https://people.googleapis.com/",
   "schemas": {
     "Address": {
diff --git a/people/v1/people-gen.go b/people/v1/people-gen.go
index dcfc18c..61ecb0f 100644
--- a/people/v1/people-gen.go
+++ b/people/v1/people-gen.go
@@ -104,7 +104,8 @@
 	// View your email address
 	UserinfoEmailScope = "https://www.googleapis.com/auth/userinfo.email"
 
-	// View your basic profile info
+	// See your personal info, including any personal info you've made
+	// publically available
 	UserinfoProfileScope = "https://www.googleapis.com/auth/userinfo.profile"
 )
 
diff --git a/servicecontrol/v1/servicecontrol-api.json b/servicecontrol/v1/servicecontrol-api.json
index dc0921f..ecc896e 100644
--- a/servicecontrol/v1/servicecontrol-api.json
+++ b/servicecontrol/v1/servicecontrol-api.json
@@ -196,7 +196,7 @@
       }
     }
   },
-  "revision": "20190309",
+  "revision": "20190318",
   "rootUrl": "https://servicecontrol.googleapis.com/",
   "schemas": {
     "AllocateInfo": {
@@ -1047,7 +1047,7 @@
       "id": "Operation",
       "properties": {
         "consumerId": {
-          "description": "Identity of the consumer who is using the service.\nThis field should be filled in for the operations initiated by a\nconsumer, but not for service-initiated operations that are\nnot related to a specific consumer.\n\n- This can be in one of the following formats:\n    - project:PROJECT_ID,\n    - project`_`number:PROJECT_NUMBER,\n    - projects/RPOJECT_ID or PROJECT_NUMBER,\n    - folders/FOLDER_NUMBER,\n    - organizations/ORGANIZATION_NUMBER,\n    - api`_`key:API_KEY.",
+          "description": "Identity of the consumer who is using the service.\nThis field should be filled in for the operations initiated by a\nconsumer, but not for service-initiated operations that are\nnot related to a specific consumer.\n\n- This can be in one of the following formats:\n    - project:PROJECT_ID,\n    - project`_`number:PROJECT_NUMBER,\n    - projects/PROJECT_ID or PROJECT_NUMBER,\n    - folders/FOLDER_NUMBER,\n    - organizations/ORGANIZATION_NUMBER,\n    - api`_`key:API_KEY.",
           "type": "string"
         },
         "endTime": {
diff --git a/servicecontrol/v1/servicecontrol-gen.go b/servicecontrol/v1/servicecontrol-gen.go
index 967653d..cf2fd0b 100644
--- a/servicecontrol/v1/servicecontrol-gen.go
+++ b/servicecontrol/v1/servicecontrol-gen.go
@@ -1666,7 +1666,7 @@
 	// - This can be in one of the following formats:
 	//     - project:PROJECT_ID,
 	//     - project`_`number:PROJECT_NUMBER,
-	//     - projects/RPOJECT_ID or PROJECT_NUMBER,
+	//     - projects/PROJECT_ID or PROJECT_NUMBER,
 	//     - folders/FOLDER_NUMBER,
 	//     - organizations/ORGANIZATION_NUMBER,
 	//     - api`_`key:API_KEY.
diff --git a/servicemanagement/v1/servicemanagement-api.json b/servicemanagement/v1/servicemanagement-api.json
index ed1cd19..730e05a 100644
--- a/servicemanagement/v1/servicemanagement-api.json
+++ b/servicemanagement/v1/servicemanagement-api.json
@@ -876,7 +876,7 @@
       }
     }
   },
-  "revision": "20190308",
+  "revision": "20190315",
   "rootUrl": "https://servicemanagement.googleapis.com/",
   "schemas": {
     "Advice": {
@@ -1189,7 +1189,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/servicemanagement/v1/servicemanagement-gen.go b/servicemanagement/v1/servicemanagement-gen.go
index 6850954..c72bcd1 100644
--- a/servicemanagement/v1/servicemanagement-gen.go
+++ b/servicemanagement/v1/servicemanagement-gen.go
@@ -1047,8 +1047,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are