chore: Update discovery artifacts (#1195)

* chore(accesscontextmanager): update the api
* chore(adexchangebuyer2): update the api
* chore(admin): update the api
* chore(alertcenter): update the api
* chore(analyticsadmin): update the api
* chore(analyticsdata): update the api
* chore(androidmanagement): update the api
* chore(apigateway): update the api
* chore(apigee): update the api
* chore(appengine): update the api
* chore(area120tables): update the api
* chore(artifactregistry): update the api
* chore(bigquery): update the api
* chore(bigqueryconnection): update the api
* chore(bigqueryreservation): update the api
* chore(billingbudgets): update the api
* chore(binaryauthorization): update the api
* chore(blogger): update the api
* chore(calendar): update the api
* chore(chat): update the api
* chore(cloudasset): update the api
* chore(cloudbuild): update the api
* chore(cloudfunctions): update the api
* chore(cloudidentity): update the api
* chore(cloudkms): update the api
* chore(cloudresourcemanager): update the api
* chore(cloudscheduler): update the api
* chore(cloudtasks): update the api
* chore(composer): update the api
* chore(compute): update the api
* chore(container): update the api
* chore(containeranalysis): update the api
* chore(content): update the api
* chore(datacatalog): update the api
* chore(dataflow): update the api
* chore(datafusion): update the api
* chore(datamigration): update the api
* chore(dataproc): update the api
* chore(deploymentmanager): update the api
* chore(dialogflow): update the api
* chore(displayvideo): update the api
* chore(dlp): update the api
* chore(dns): update the api
* chore(documentai): update the api
* chore(eventarc): update the api
* chore(file): update the api
* chore(firebaseml): update the api
* chore(games): update the api
* chore(gameservices): update the api
* chore(genomics): update the api
* chore(healthcare): update the api
* chore(homegraph): update the api
* chore(iam): update the api
* chore(iap): update the api
* chore(jobs): update the api
* chore(lifesciences): update the api
* chore(localservices): update the api
* chore(managedidentities): update the api
* chore(manufacturers): update the api
* chore(memcache): update the api
* chore(ml): update the api
* chore(monitoring): update the api
* chore(notebooks): update the api
* chore(osconfig): update the api
* chore(pagespeedonline): update the api
* chore(people): update the api
* chore(privateca): update the api
* chore(prod_tt_sasportal): update the api
* chore(pubsub): update the api
* chore(pubsublite): update the api
* chore(recommender): update the api
* chore(remotebuildexecution): update the api
* chore(reseller): update the api
* chore(run): update the api
* chore(safebrowsing): update the api
* chore(sasportal): update the api
* chore(searchconsole): update the api
* chore(secretmanager): update the api
* chore(securitycenter): update the api
* chore(serviceconsumermanagement): update the api
* chore(servicecontrol): update the api
* chore(servicenetworking): update the api
* chore(serviceusage): update the api
* chore(sheets): update the api
* chore(slides): update the api
* chore(spanner): update the api
* chore(speech): update the api
* chore(sqladmin): update the api
* chore(storage): update the api
* chore(storagetransfer): update the api
* chore(sts): update the api
* chore(tagmanager): update the api
* chore(testing): update the api
* chore(toolresults): update the api
* chore(transcoder): update the api
* chore(vectortile): update the api
* chore(videointelligence): update the api
* chore(vision): update the api
* chore(webmasters): update the api
* chore(workflowexecutions): update the api
* chore(youtube): update the api
diff --git a/docs/dyn/compute_alpha.regionUrlMaps.html b/docs/dyn/compute_alpha.regionUrlMaps.html
index 9e99e1f..c5f4f0c 100644
--- a/docs/dyn/compute_alpha.regionUrlMaps.html
+++ b/docs/dyn/compute_alpha.regionUrlMaps.html
@@ -158,7 +158,52 @@
   "id": "A String", # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
   "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
   "kind": "compute#operation", # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
+  "metadata": { # `Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message. # [Output Only] Service-specific metadata attached to this operation.
+      #
+      # Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional generated methods of the Any type.
+      #
+      # Example 1: Pack and unpack a message in C++.
+      #
+      # Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { ... }
+      #
+      # Example 2: Pack and unpack a message in Java.
+      #
+      # Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); }
+      #
+      # Example 3: Pack and unpack a message in Python.
+      #
+      # foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ...
+      #
+      # Example 4: Pack and unpack a message in Go
+      #
+      # foo := &pb.Foo{...} any, err := anypb.New(foo) if err != nil { ... } ... foo := &pb.Foo{} if err := any.UnmarshalTo(foo); err != nil { ... }
+      #
+      # The pack methods provided by protobuf library will by default use 'type.googleapis.com/full.type.name' as the type URL and the unpack methods only use the fully qualified type name after the last '/' in the type URL, for example "foo.bar.com/x/y.z" will yield type name "y.z".
+      #
+      #
+      #
+      # JSON ==== The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded message, with an additional field `@type` which contains the type URL. Example:
+      #
+      # package google.profile; message Person { string first_name = 1; string last_name = 2; }
+      #
+      # { "@type": "type.googleapis.com/google.profile.Person", "firstName": , "lastName":  }
+      #
+      # If the embedded message type is well-known and has a custom JSON representation, that representation will be embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for message [google.protobuf.Duration][]):
+      #
+      # { "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" }
+    "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one "/" character. The last segment of the URL's path must represent the fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading "." is not accepted).
+        #
+        # In practice, teams usually precompile into the binary all types that they expect it to use in the context of Any. However, for URLs which use the scheme `http`, `https`, or no scheme, one can optionally set up a type server that maps type URLs to message definitions as follows:
+        #
+        # * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a [google.protobuf.Type][] value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage breaking changes.)
+        #
+        # Note: this functionality is not currently available in the official protobuf release, and it is not used for type URLs beginning with type.googleapis.com.
+        #
+        # Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics.
+    "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+  },
   "name": "A String", # [Output Only] Name of the operation.
+  "operationGroupId": "A String", # [Output Only] An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request.
   "operationType": "A String", # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
   "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
   "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
@@ -231,7 +276,7 @@
       "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
         "A String",
       ],
-      "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+      "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
           # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
         "A String",
       ],
@@ -263,6 +308,12 @@
             # The value must be between 0.0 and 100.0 inclusive.
       },
     },
+    "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+        # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+        # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+      "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+      "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+    },
     "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
         # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
       "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -426,7 +477,7 @@
           "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
             "A String",
           ],
-          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
               # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
             "A String",
           ],
@@ -458,6 +509,12 @@
                 # The value must be between 0.0 and 100.0 inclusive.
           },
         },
+        "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+            # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+            # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+          "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+          "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+        },
         "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
             # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
           "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -616,7 +673,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -648,6 +705,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -832,7 +895,7 @@
                     "rangeEnd": "A String", # The end of the range (exclusive) in signed long integer format.
                     "rangeStart": "A String", # The start of the range (inclusive) in signed long integer format.
                   },
-                  "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  github.com/google/re2/wiki/Syntax
                       # For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier.
                       # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.
                       # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
@@ -878,12 +941,12 @@
                   "name": "A String", # The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails.
                   "presentMatch": True or False, # Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not.
                       # Only one of presentMatch, exactMatch or regexMatch must be set.
-                  "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see github.com/google/re2/wiki/Syntax
                       # Only one of presentMatch, exactMatch or regexMatch must be set.
                       # Note that regexMatch only applies when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED.
                 },
               ],
-              "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
                   # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
             },
@@ -904,7 +967,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -936,6 +999,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -1050,7 +1119,19 @@
     { # Message for the expected URL mappings.
       "backendServiceWeight": 42, # The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting.
       "description": "A String", # Description of this test case.
+      "expectedOutputUrl": "A String", # The expected output URL evaluated by load balancer containing the scheme, host, path and query parameters.
+          # For rules that forward requests to backends, the test passes only when expectedOutputUrl matches the request forwarded by load balancer to backends. For rules with urlRewrite, the test verifies that the forwarded request matches hostRewrite and pathPrefixRewrite in the urlRewrite action. When service is specified, expectedOutputUrl`s scheme is ignored.
+          # For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to https. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters.
+          # expectedOutputUrl is optional when service is specified.
+      "expectedRedirectResponseCode": 42, # For rules with urlRedirect, the test passes only if expectedRedirectResponseCode matches the HTTP status code in load balancer's redirect response.
+          # expectedRedirectResponseCode cannot be set when service is set.
       "expectedUrlRedirect": "A String", # The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead.
+      "headers": [ # HTTP headers for this request. If headers contains a host header, then host must also match the header value.
+        { # HTTP headers used in UrlMapTests.
+          "name": "A String", # Header name.
+          "value": "A String", # Header value.
+        },
+      ],
       "host": "A String", # Host portion of the URL. If headers contains a host header, then host must also match the header value.
       "path": "A String", # Path portion of the URL.
       "service": "A String", # Expected BackendService or BackendBucket resource the given URL should be mapped to.
@@ -1102,7 +1183,7 @@
       "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
         "A String",
       ],
-      "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+      "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
           # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
         "A String",
       ],
@@ -1134,6 +1215,12 @@
             # The value must be between 0.0 and 100.0 inclusive.
       },
     },
+    "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+        # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+        # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+      "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+      "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+    },
     "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
         # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
       "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -1297,7 +1384,7 @@
           "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
             "A String",
           ],
-          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
               # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
             "A String",
           ],
@@ -1329,6 +1416,12 @@
                 # The value must be between 0.0 and 100.0 inclusive.
           },
         },
+        "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+            # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+            # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+          "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+          "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+        },
         "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
             # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
           "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -1487,7 +1580,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -1519,6 +1612,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -1703,7 +1802,7 @@
                     "rangeEnd": "A String", # The end of the range (exclusive) in signed long integer format.
                     "rangeStart": "A String", # The start of the range (inclusive) in signed long integer format.
                   },
-                  "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  github.com/google/re2/wiki/Syntax
                       # For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier.
                       # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.
                       # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
@@ -1749,12 +1848,12 @@
                   "name": "A String", # The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails.
                   "presentMatch": True or False, # Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not.
                       # Only one of presentMatch, exactMatch or regexMatch must be set.
-                  "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see github.com/google/re2/wiki/Syntax
                       # Only one of presentMatch, exactMatch or regexMatch must be set.
                       # Note that regexMatch only applies when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED.
                 },
               ],
-              "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
                   # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
             },
@@ -1775,7 +1874,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -1807,6 +1906,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -1921,7 +2026,19 @@
     { # Message for the expected URL mappings.
       "backendServiceWeight": 42, # The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting.
       "description": "A String", # Description of this test case.
+      "expectedOutputUrl": "A String", # The expected output URL evaluated by load balancer containing the scheme, host, path and query parameters.
+          # For rules that forward requests to backends, the test passes only when expectedOutputUrl matches the request forwarded by load balancer to backends. For rules with urlRewrite, the test verifies that the forwarded request matches hostRewrite and pathPrefixRewrite in the urlRewrite action. When service is specified, expectedOutputUrl`s scheme is ignored.
+          # For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to https. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters.
+          # expectedOutputUrl is optional when service is specified.
+      "expectedRedirectResponseCode": 42, # For rules with urlRedirect, the test passes only if expectedRedirectResponseCode matches the HTTP status code in load balancer's redirect response.
+          # expectedRedirectResponseCode cannot be set when service is set.
       "expectedUrlRedirect": "A String", # The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead.
+      "headers": [ # HTTP headers for this request. If headers contains a host header, then host must also match the header value.
+        { # HTTP headers used in UrlMapTests.
+          "name": "A String", # Header name.
+          "value": "A String", # Header value.
+        },
+      ],
       "host": "A String", # Host portion of the URL. If headers contains a host header, then host must also match the header value.
       "path": "A String", # Path portion of the URL.
       "service": "A String", # Expected BackendService or BackendBucket resource the given URL should be mapped to.
@@ -1967,7 +2084,52 @@
   "id": "A String", # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
   "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
   "kind": "compute#operation", # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
+  "metadata": { # `Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message. # [Output Only] Service-specific metadata attached to this operation.
+      #
+      # Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional generated methods of the Any type.
+      #
+      # Example 1: Pack and unpack a message in C++.
+      #
+      # Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { ... }
+      #
+      # Example 2: Pack and unpack a message in Java.
+      #
+      # Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); }
+      #
+      # Example 3: Pack and unpack a message in Python.
+      #
+      # foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ...
+      #
+      # Example 4: Pack and unpack a message in Go
+      #
+      # foo := &pb.Foo{...} any, err := anypb.New(foo) if err != nil { ... } ... foo := &pb.Foo{} if err := any.UnmarshalTo(foo); err != nil { ... }
+      #
+      # The pack methods provided by protobuf library will by default use 'type.googleapis.com/full.type.name' as the type URL and the unpack methods only use the fully qualified type name after the last '/' in the type URL, for example "foo.bar.com/x/y.z" will yield type name "y.z".
+      #
+      #
+      #
+      # JSON ==== The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded message, with an additional field `@type` which contains the type URL. Example:
+      #
+      # package google.profile; message Person { string first_name = 1; string last_name = 2; }
+      #
+      # { "@type": "type.googleapis.com/google.profile.Person", "firstName": , "lastName":  }
+      #
+      # If the embedded message type is well-known and has a custom JSON representation, that representation will be embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for message [google.protobuf.Duration][]):
+      #
+      # { "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" }
+    "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one "/" character. The last segment of the URL's path must represent the fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading "." is not accepted).
+        #
+        # In practice, teams usually precompile into the binary all types that they expect it to use in the context of Any. However, for URLs which use the scheme `http`, `https`, or no scheme, one can optionally set up a type server that maps type URLs to message definitions as follows:
+        #
+        # * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a [google.protobuf.Type][] value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage breaking changes.)
+        #
+        # Note: this functionality is not currently available in the official protobuf release, and it is not used for type URLs beginning with type.googleapis.com.
+        #
+        # Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics.
+    "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+  },
   "name": "A String", # [Output Only] Name of the operation.
+  "operationGroupId": "A String", # [Output Only] An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request.
   "operationType": "A String", # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
   "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
   "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
@@ -2051,7 +2213,52 @@
   "id": "A String", # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
   "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
   "kind": "compute#operation", # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
+  "metadata": { # `Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message. # [Output Only] Service-specific metadata attached to this operation.
+      #
+      # Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional generated methods of the Any type.
+      #
+      # Example 1: Pack and unpack a message in C++.
+      #
+      # Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { ... }
+      #
+      # Example 2: Pack and unpack a message in Java.
+      #
+      # Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); }
+      #
+      # Example 3: Pack and unpack a message in Python.
+      #
+      # foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ...
+      #
+      # Example 4: Pack and unpack a message in Go
+      #
+      # foo := &pb.Foo{...} any, err := anypb.New(foo) if err != nil { ... } ... foo := &pb.Foo{} if err := any.UnmarshalTo(foo); err != nil { ... }
+      #
+      # The pack methods provided by protobuf library will by default use 'type.googleapis.com/full.type.name' as the type URL and the unpack methods only use the fully qualified type name after the last '/' in the type URL, for example "foo.bar.com/x/y.z" will yield type name "y.z".
+      #
+      #
+      #
+      # JSON ==== The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded message, with an additional field `@type` which contains the type URL. Example:
+      #
+      # package google.profile; message Person { string first_name = 1; string last_name = 2; }
+      #
+      # { "@type": "type.googleapis.com/google.profile.Person", "firstName": , "lastName":  }
+      #
+      # If the embedded message type is well-known and has a custom JSON representation, that representation will be embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for message [google.protobuf.Duration][]):
+      #
+      # { "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" }
+    "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one "/" character. The last segment of the URL's path must represent the fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading "." is not accepted).
+        #
+        # In practice, teams usually precompile into the binary all types that they expect it to use in the context of Any. However, for URLs which use the scheme `http`, `https`, or no scheme, one can optionally set up a type server that maps type URLs to message definitions as follows:
+        #
+        # * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a [google.protobuf.Type][] value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage breaking changes.)
+        #
+        # Note: this functionality is not currently available in the official protobuf release, and it is not used for type URLs beginning with type.googleapis.com.
+        #
+        # Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics.
+    "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+  },
   "name": "A String", # [Output Only] Name of the operation.
+  "operationGroupId": "A String", # [Output Only] An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request.
   "operationType": "A String", # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
   "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
   "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
@@ -2101,7 +2308,7 @@
 
 Currently, only sorting by `name` or `creationTimestamp desc` is supported.
   pageToken: string, Specifies a page token to use. Set `pageToken` to the `nextPageToken` returned by a previous list request to get the next page of results.
-  returnPartialSuccess: boolean, Opt-in for partial success behavior which provides partial results in case of failure. The default value is false and the logic is the same as today.
+  returnPartialSuccess: boolean, Opt-in for partial success behavior which provides partial results in case of failure. The default value is false.
 
 Returns:
   An object of the form:
@@ -2141,7 +2348,7 @@
           "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
             "A String",
           ],
-          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
               # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
             "A String",
           ],
@@ -2173,6 +2380,12 @@
                 # The value must be between 0.0 and 100.0 inclusive.
           },
         },
+        "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+            # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+            # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+          "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+          "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+        },
         "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
             # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
           "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -2336,7 +2549,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -2368,6 +2581,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -2526,7 +2745,7 @@
                   "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                     "A String",
                   ],
-                  "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+                  "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                       # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                     "A String",
                   ],
@@ -2558,6 +2777,12 @@
                         # The value must be between 0.0 and 100.0 inclusive.
                   },
                 },
+                "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                    # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                    # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+                  "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+                  "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+                },
                 "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                     # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
                   "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -2742,7 +2967,7 @@
                         "rangeEnd": "A String", # The end of the range (exclusive) in signed long integer format.
                         "rangeStart": "A String", # The start of the range (inclusive) in signed long integer format.
                       },
-                      "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  en.cppreference.com/w/cpp/regex/ecmascript
+                      "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  github.com/google/re2/wiki/Syntax
                           # For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier.
                           # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.
                           # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
@@ -2788,12 +3013,12 @@
                       "name": "A String", # The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails.
                       "presentMatch": True or False, # Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not.
                           # Only one of presentMatch, exactMatch or regexMatch must be set.
-                      "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript
+                      "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see github.com/google/re2/wiki/Syntax
                           # Only one of presentMatch, exactMatch or regexMatch must be set.
                           # Note that regexMatch only applies when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED.
                     },
                   ],
-                  "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                       # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
                       # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
                 },
@@ -2814,7 +3039,7 @@
                   "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                     "A String",
                   ],
-                  "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+                  "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                       # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                     "A String",
                   ],
@@ -2846,6 +3071,12 @@
                         # The value must be between 0.0 and 100.0 inclusive.
                   },
                 },
+                "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                    # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                    # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+                  "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+                  "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+                },
                 "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                     # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
                   "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -2960,7 +3191,19 @@
         { # Message for the expected URL mappings.
           "backendServiceWeight": 42, # The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting.
           "description": "A String", # Description of this test case.
+          "expectedOutputUrl": "A String", # The expected output URL evaluated by load balancer containing the scheme, host, path and query parameters.
+              # For rules that forward requests to backends, the test passes only when expectedOutputUrl matches the request forwarded by load balancer to backends. For rules with urlRewrite, the test verifies that the forwarded request matches hostRewrite and pathPrefixRewrite in the urlRewrite action. When service is specified, expectedOutputUrl`s scheme is ignored.
+              # For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to https. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters.
+              # expectedOutputUrl is optional when service is specified.
+          "expectedRedirectResponseCode": 42, # For rules with urlRedirect, the test passes only if expectedRedirectResponseCode matches the HTTP status code in load balancer's redirect response.
+              # expectedRedirectResponseCode cannot be set when service is set.
           "expectedUrlRedirect": "A String", # The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead.
+          "headers": [ # HTTP headers for this request. If headers contains a host header, then host must also match the header value.
+            { # HTTP headers used in UrlMapTests.
+              "name": "A String", # Header name.
+              "value": "A String", # Header value.
+            },
+          ],
           "host": "A String", # Host portion of the URL. If headers contains a host header, then host must also match the header value.
           "path": "A String", # Path portion of the URL.
           "service": "A String", # Expected BackendService or BackendBucket resource the given URL should be mapped to.
@@ -3043,7 +3286,7 @@
       "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
         "A String",
       ],
-      "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+      "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
           # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
         "A String",
       ],
@@ -3075,6 +3318,12 @@
             # The value must be between 0.0 and 100.0 inclusive.
       },
     },
+    "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+        # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+        # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+      "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+      "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+    },
     "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
         # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
       "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -3238,7 +3487,7 @@
           "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
             "A String",
           ],
-          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
               # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
             "A String",
           ],
@@ -3270,6 +3519,12 @@
                 # The value must be between 0.0 and 100.0 inclusive.
           },
         },
+        "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+            # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+            # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+          "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+          "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+        },
         "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
             # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
           "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -3428,7 +3683,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -3460,6 +3715,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -3644,7 +3905,7 @@
                     "rangeEnd": "A String", # The end of the range (exclusive) in signed long integer format.
                     "rangeStart": "A String", # The start of the range (inclusive) in signed long integer format.
                   },
-                  "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  github.com/google/re2/wiki/Syntax
                       # For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier.
                       # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.
                       # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
@@ -3690,12 +3951,12 @@
                   "name": "A String", # The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails.
                   "presentMatch": True or False, # Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not.
                       # Only one of presentMatch, exactMatch or regexMatch must be set.
-                  "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see github.com/google/re2/wiki/Syntax
                       # Only one of presentMatch, exactMatch or regexMatch must be set.
                       # Note that regexMatch only applies when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED.
                 },
               ],
-              "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
                   # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
             },
@@ -3716,7 +3977,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -3748,6 +4009,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -3862,7 +4129,19 @@
     { # Message for the expected URL mappings.
       "backendServiceWeight": 42, # The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting.
       "description": "A String", # Description of this test case.
+      "expectedOutputUrl": "A String", # The expected output URL evaluated by load balancer containing the scheme, host, path and query parameters.
+          # For rules that forward requests to backends, the test passes only when expectedOutputUrl matches the request forwarded by load balancer to backends. For rules with urlRewrite, the test verifies that the forwarded request matches hostRewrite and pathPrefixRewrite in the urlRewrite action. When service is specified, expectedOutputUrl`s scheme is ignored.
+          # For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to https. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters.
+          # expectedOutputUrl is optional when service is specified.
+      "expectedRedirectResponseCode": 42, # For rules with urlRedirect, the test passes only if expectedRedirectResponseCode matches the HTTP status code in load balancer's redirect response.
+          # expectedRedirectResponseCode cannot be set when service is set.
       "expectedUrlRedirect": "A String", # The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead.
+      "headers": [ # HTTP headers for this request. If headers contains a host header, then host must also match the header value.
+        { # HTTP headers used in UrlMapTests.
+          "name": "A String", # Header name.
+          "value": "A String", # Header value.
+        },
+      ],
       "host": "A String", # Host portion of the URL. If headers contains a host header, then host must also match the header value.
       "path": "A String", # Path portion of the URL.
       "service": "A String", # Expected BackendService or BackendBucket resource the given URL should be mapped to.
@@ -3908,7 +4187,52 @@
   "id": "A String", # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
   "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
   "kind": "compute#operation", # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
+  "metadata": { # `Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message. # [Output Only] Service-specific metadata attached to this operation.
+      #
+      # Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional generated methods of the Any type.
+      #
+      # Example 1: Pack and unpack a message in C++.
+      #
+      # Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { ... }
+      #
+      # Example 2: Pack and unpack a message in Java.
+      #
+      # Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); }
+      #
+      # Example 3: Pack and unpack a message in Python.
+      #
+      # foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ...
+      #
+      # Example 4: Pack and unpack a message in Go
+      #
+      # foo := &pb.Foo{...} any, err := anypb.New(foo) if err != nil { ... } ... foo := &pb.Foo{} if err := any.UnmarshalTo(foo); err != nil { ... }
+      #
+      # The pack methods provided by protobuf library will by default use 'type.googleapis.com/full.type.name' as the type URL and the unpack methods only use the fully qualified type name after the last '/' in the type URL, for example "foo.bar.com/x/y.z" will yield type name "y.z".
+      #
+      #
+      #
+      # JSON ==== The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded message, with an additional field `@type` which contains the type URL. Example:
+      #
+      # package google.profile; message Person { string first_name = 1; string last_name = 2; }
+      #
+      # { "@type": "type.googleapis.com/google.profile.Person", "firstName": , "lastName":  }
+      #
+      # If the embedded message type is well-known and has a custom JSON representation, that representation will be embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for message [google.protobuf.Duration][]):
+      #
+      # { "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" }
+    "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one "/" character. The last segment of the URL's path must represent the fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading "." is not accepted).
+        #
+        # In practice, teams usually precompile into the binary all types that they expect it to use in the context of Any. However, for URLs which use the scheme `http`, `https`, or no scheme, one can optionally set up a type server that maps type URLs to message definitions as follows:
+        #
+        # * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a [google.protobuf.Type][] value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage breaking changes.)
+        #
+        # Note: this functionality is not currently available in the official protobuf release, and it is not used for type URLs beginning with type.googleapis.com.
+        #
+        # Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics.
+    "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+  },
   "name": "A String", # [Output Only] Name of the operation.
+  "operationGroupId": "A String", # [Output Only] An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request.
   "operationType": "A String", # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
   "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
   "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
@@ -4008,7 +4332,7 @@
       "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
         "A String",
       ],
-      "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+      "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
           # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
         "A String",
       ],
@@ -4040,6 +4364,12 @@
             # The value must be between 0.0 and 100.0 inclusive.
       },
     },
+    "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+        # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+        # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+      "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+      "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+    },
     "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
         # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
       "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -4203,7 +4533,7 @@
           "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
             "A String",
           ],
-          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+          "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
               # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
             "A String",
           ],
@@ -4235,6 +4565,12 @@
                 # The value must be between 0.0 and 100.0 inclusive.
           },
         },
+        "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+            # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+            # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+          "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+          "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+        },
         "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
             # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
           "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -4393,7 +4729,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -4425,6 +4761,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -4609,7 +4951,7 @@
                     "rangeEnd": "A String", # The end of the range (exclusive) in signed long integer format.
                     "rangeStart": "A String", # The start of the range (inclusive) in signed long integer format.
                   },
-                  "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  github.com/google/re2/wiki/Syntax
                       # For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier.
                       # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.
                       # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
@@ -4655,12 +4997,12 @@
                   "name": "A String", # The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails.
                   "presentMatch": True or False, # Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not.
                       # Only one of presentMatch, exactMatch or regexMatch must be set.
-                  "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript
+                  "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see github.com/google/re2/wiki/Syntax
                       # Only one of presentMatch, exactMatch or regexMatch must be set.
                       # Note that regexMatch only applies when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED.
                 },
               ],
-              "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
                   # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
             },
@@ -4681,7 +5023,7 @@
               "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                 "A String",
               ],
-              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+              "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                   # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                 "A String",
               ],
@@ -4713,6 +5055,12 @@
                     # The value must be between 0.0 and 100.0 inclusive.
               },
             },
+            "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+              "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+              "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+            },
             "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                 # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
               "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -4827,7 +5175,19 @@
     { # Message for the expected URL mappings.
       "backendServiceWeight": 42, # The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting.
       "description": "A String", # Description of this test case.
+      "expectedOutputUrl": "A String", # The expected output URL evaluated by load balancer containing the scheme, host, path and query parameters.
+          # For rules that forward requests to backends, the test passes only when expectedOutputUrl matches the request forwarded by load balancer to backends. For rules with urlRewrite, the test verifies that the forwarded request matches hostRewrite and pathPrefixRewrite in the urlRewrite action. When service is specified, expectedOutputUrl`s scheme is ignored.
+          # For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to https. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters.
+          # expectedOutputUrl is optional when service is specified.
+      "expectedRedirectResponseCode": 42, # For rules with urlRedirect, the test passes only if expectedRedirectResponseCode matches the HTTP status code in load balancer's redirect response.
+          # expectedRedirectResponseCode cannot be set when service is set.
       "expectedUrlRedirect": "A String", # The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead.
+      "headers": [ # HTTP headers for this request. If headers contains a host header, then host must also match the header value.
+        { # HTTP headers used in UrlMapTests.
+          "name": "A String", # Header name.
+          "value": "A String", # Header value.
+        },
+      ],
       "host": "A String", # Host portion of the URL. If headers contains a host header, then host must also match the header value.
       "path": "A String", # Path portion of the URL.
       "service": "A String", # Expected BackendService or BackendBucket resource the given URL should be mapped to.
@@ -4873,7 +5233,52 @@
   "id": "A String", # [Output Only] The unique identifier for the operation. This identifier is defined by the server.
   "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
   "kind": "compute#operation", # [Output Only] Type of the resource. Always `compute#operation` for Operation resources.
+  "metadata": { # `Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message. # [Output Only] Service-specific metadata attached to this operation.
+      #
+      # Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional generated methods of the Any type.
+      #
+      # Example 1: Pack and unpack a message in C++.
+      #
+      # Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { ... }
+      #
+      # Example 2: Pack and unpack a message in Java.
+      #
+      # Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); }
+      #
+      # Example 3: Pack and unpack a message in Python.
+      #
+      # foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ...
+      #
+      # Example 4: Pack and unpack a message in Go
+      #
+      # foo := &pb.Foo{...} any, err := anypb.New(foo) if err != nil { ... } ... foo := &pb.Foo{} if err := any.UnmarshalTo(foo); err != nil { ... }
+      #
+      # The pack methods provided by protobuf library will by default use 'type.googleapis.com/full.type.name' as the type URL and the unpack methods only use the fully qualified type name after the last '/' in the type URL, for example "foo.bar.com/x/y.z" will yield type name "y.z".
+      #
+      #
+      #
+      # JSON ==== The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded message, with an additional field `@type` which contains the type URL. Example:
+      #
+      # package google.profile; message Person { string first_name = 1; string last_name = 2; }
+      #
+      # { "@type": "type.googleapis.com/google.profile.Person", "firstName": , "lastName":  }
+      #
+      # If the embedded message type is well-known and has a custom JSON representation, that representation will be embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for message [google.protobuf.Duration][]):
+      #
+      # { "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" }
+    "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one "/" character. The last segment of the URL's path must represent the fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading "." is not accepted).
+        #
+        # In practice, teams usually precompile into the binary all types that they expect it to use in the context of Any. However, for URLs which use the scheme `http`, `https`, or no scheme, one can optionally set up a type server that maps type URLs to message definitions as follows:
+        #
+        # * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a [google.protobuf.Type][] value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage breaking changes.)
+        #
+        # Note: this functionality is not currently available in the official protobuf release, and it is not used for type URLs beginning with type.googleapis.com.
+        #
+        # Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics.
+    "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+  },
   "name": "A String", # [Output Only] Name of the operation.
+  "operationGroupId": "A String", # [Output Only] An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request.
   "operationType": "A String", # [Output Only] The type of operation, such as `insert`, `update`, or `delete`, and so on.
   "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
   "region": "A String", # [Output Only] The URL of the region where the operation resides. Only applicable when performing regional operations.
@@ -4946,7 +5351,7 @@
         "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
           "A String",
         ],
-        "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+        "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
             # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
           "A String",
         ],
@@ -4978,6 +5383,12 @@
               # The value must be between 0.0 and 100.0 inclusive.
         },
       },
+      "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+          # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+          # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+        "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+        "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+      },
       "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
           # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
         "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -5141,7 +5552,7 @@
             "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
               "A String",
             ],
-            "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+            "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                 # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
               "A String",
             ],
@@ -5173,6 +5584,12 @@
                   # The value must be between 0.0 and 100.0 inclusive.
             },
           },
+          "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+              # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+              # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+            "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+            "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+          },
           "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
               # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
             "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -5331,7 +5748,7 @@
                 "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                   "A String",
                 ],
-                "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+                "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                     # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                   "A String",
                 ],
@@ -5363,6 +5780,12 @@
                       # The value must be between 0.0 and 100.0 inclusive.
                 },
               },
+              "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                  # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                  # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+                "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+                "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+              },
               "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                   # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
                 "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -5547,7 +5970,7 @@
                       "rangeEnd": "A String", # The end of the range (exclusive) in signed long integer format.
                       "rangeStart": "A String", # The start of the range (inclusive) in signed long integer format.
                     },
-                    "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  en.cppreference.com/w/cpp/regex/ecmascript
+                    "regexMatch": "A String", # The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see:  github.com/google/re2/wiki/Syntax
                         # For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier.
                         # Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.
                         # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
@@ -5593,12 +6016,12 @@
                     "name": "A String", # The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails.
                     "presentMatch": True or False, # Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not.
                         # Only one of presentMatch, exactMatch or regexMatch must be set.
-                    "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript
+                    "regexMatch": "A String", # The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see github.com/google/re2/wiki/Syntax
                         # Only one of presentMatch, exactMatch or regexMatch must be set.
                         # Note that regexMatch only applies when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED.
                   },
                 ],
-                "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+                "regexMatch": "A String", # For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                     # Only one of prefixMatch, fullPathMatch or regexMatch must be specified.
                     # Note that regexMatch only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.
               },
@@ -5619,7 +6042,7 @@
                 "allowMethods": [ # Specifies the content for the Access-Control-Allow-Methods header.
                   "A String",
                 ],
-                "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript
+                "allowOriginRegexes": [ # Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see github.com/google/re2/wiki/Syntax
                     # An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.
                   "A String",
                 ],
@@ -5651,6 +6074,12 @@
                       # The value must be between 0.0 and 100.0 inclusive.
                 },
               },
+              "maxStreamDuration": { # A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". Range is approximately 10,000 years. # Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (i.e. end-of-stream), the duration in this field is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.
+                  # If not specified, will use the largest maxStreamDuration among all backend services associated with the route.
+                  # This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+                "nanos": 42, # Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.
+                "seconds": "A String", # Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+              },
               "requestMirrorPolicy": { # A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow. # Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.
                   # Not supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true.
                 "backendService": "A String", # The full or partial URL to the BackendService resource being mirrored to.
@@ -5765,7 +6194,19 @@
       { # Message for the expected URL mappings.
         "backendServiceWeight": 42, # The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting.
         "description": "A String", # Description of this test case.
+        "expectedOutputUrl": "A String", # The expected output URL evaluated by load balancer containing the scheme, host, path and query parameters.
+            # For rules that forward requests to backends, the test passes only when expectedOutputUrl matches the request forwarded by load balancer to backends. For rules with urlRewrite, the test verifies that the forwarded request matches hostRewrite and pathPrefixRewrite in the urlRewrite action. When service is specified, expectedOutputUrl`s scheme is ignored.
+            # For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to https. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters.
+            # expectedOutputUrl is optional when service is specified.
+        "expectedRedirectResponseCode": 42, # For rules with urlRedirect, the test passes only if expectedRedirectResponseCode matches the HTTP status code in load balancer's redirect response.
+            # expectedRedirectResponseCode cannot be set when service is set.
         "expectedUrlRedirect": "A String", # The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead.
+        "headers": [ # HTTP headers for this request. If headers contains a host header, then host must also match the header value.
+          { # HTTP headers used in UrlMapTests.
+            "name": "A String", # Header name.
+            "value": "A String", # Header value.
+          },
+        ],
         "host": "A String", # Host portion of the URL. If headers contains a host header, then host must also match the header value.
         "path": "A String", # Path portion of the URL.
         "service": "A String", # Expected BackendService or BackendBucket resource the given URL should be mapped to.
@@ -5787,8 +6228,18 @@
     "loadSucceeded": True or False, # Whether the given UrlMap can be successfully loaded. If false, 'loadErrors' indicates the reasons.
     "testFailures": [
       {
+        "actualOutputUrl": "A String", # The actual output URL evaluated by load balancer containing the scheme, host, path and query parameters.
+        "actualRedirectResponseCode": 42, # Actual HTTP status code for rule with `urlRedirect` calculated by load balancer
         "actualService": "A String", # BackendService or BackendBucket returned by load balancer.
+        "expectedOutputUrl": "A String", # The expected output URL evaluated by load balancer containing the scheme, host, path and query parameters.
+        "expectedRedirectResponseCode": 42, # Expected HTTP status code for rule with `urlRedirect` calculated by load balancer
         "expectedService": "A String", # Expected BackendService or BackendBucket resource the given URL should be mapped to.
+        "headers": [ # HTTP headers of the request.
+          { # HTTP headers used in UrlMapTests.
+            "name": "A String", # Header name.
+            "value": "A String", # Header value.
+          },
+        ],
         "host": "A String", # Host portion of the URL.
         "path": "A String", # Path portion including query parameters in the URL.
       },