diff --git a/docs/dyn/trafficdirector_v3.discovery.html b/docs/dyn/trafficdirector_v3.discovery.html
index b6bcf30b83..37fc6f90c1 100644
--- a/docs/dyn/trafficdirector_v3.discovery.html
+++ b/docs/dyn/trafficdirector_v3.discovery.html
@@ -168,8 +168,14 @@
Method Details
},
"nodeMatchers": [ # Management server can use these match criteria to identify clients. The match follows OR semantics.
{ # Specifies the way to match a Node. The match follows AND semantics.
- "nodeId": { # Specifies the way to match a string. [#next-free-field: 8] # Specifies match criteria on the node id.
+ "nodeId": { # Specifies the way to match a string. [#next-free-field: 9] # Specifies match criteria on the node id.
"contains": "A String", # The input string must have the substring specified here. Note: empty contains match is not allowed, please use regex instead. Examples: * ``abc`` matches the value ``xyz.abc.def``
+ "custom": { # Message type for extension configuration. # Use an extension as the matcher type. [#extension-category: envoy.string_matcher]
+ "name": "A String", # The name of an extension. This is not used to select the extension, instead it serves the role of an opaque identifier.
+ "typedConfig": { # The typed config for the extension. The type URL will be used to identify the extension. In the case that the type URL is *xds.type.v3.TypedStruct* (or, for historical reasons, *udpa.type.v1.TypedStruct*), the inner type URL of *TypedStruct* will be utilized. See the :ref:`extension configuration overview ` for further details.
+ "a_key": "", # Properties of the object. Contains field @type with type URL.
+ },
+ },
"exact": "A String", # The input string must match exactly the string specified here. Examples: * ``abc`` only matches the value ``abc``.
"ignoreCase": True or False, # If true, indicates the exact/prefix/suffix/contains matching should be case insensitive. This has no effect for the safe_regex match. For example, the matcher ``data`` will match both input string ``Data`` and ``data`` if set to true.
"prefix": "A String", # The input string must have the prefix specified here. Note: empty prefix is not allowed, please use regex instead. Examples: * ``abc`` matches the value ``abc.xyz``
@@ -208,8 +214,14 @@ Method Details
],
},
"presentMatch": True or False, # If specified, value match will be performed based on whether the path is referring to a valid primitive value in the metadata. If the path is referring to a non-primitive value, the result is always not matched.
- "stringMatch": { # Specifies the way to match a string. [#next-free-field: 8] # If specified, a match occurs if and only if the target value is a string value and is matched to this field.
+ "stringMatch": { # Specifies the way to match a string. [#next-free-field: 9] # If specified, a match occurs if and only if the target value is a string value and is matched to this field.
"contains": "A String", # The input string must have the substring specified here. Note: empty contains match is not allowed, please use regex instead. Examples: * ``abc`` matches the value ``xyz.abc.def``
+ "custom": { # Message type for extension configuration. # Use an extension as the matcher type. [#extension-category: envoy.string_matcher]
+ "name": "A String", # The name of an extension. This is not used to select the extension, instead it serves the role of an opaque identifier.
+ "typedConfig": { # The typed config for the extension. The type URL will be used to identify the extension. In the case that the type URL is *xds.type.v3.TypedStruct* (or, for historical reasons, *udpa.type.v1.TypedStruct*), the inner type URL of *TypedStruct* will be utilized. See the :ref:`extension configuration overview ` for further details.
+ "a_key": "", # Properties of the object. Contains field @type with type URL.
+ },
+ },
"exact": "A String", # The input string must match exactly the string specified here. Examples: * ``abc`` only matches the value ``abc``.
"ignoreCase": True or False, # If true, indicates the exact/prefix/suffix/contains matching should be case insensitive. This has no effect for the safe_regex match. For example, the matcher ``data`` will match both input string ``Data`` and ``data`` if set to true.
"prefix": "A String", # The input string must have the prefix specified here. Note: empty prefix is not allowed, please use regex instead. Examples: * ``abc`` matches the value ``abc.xyz``
diff --git a/googleapiclient/discovery_cache/documents/trafficdirector.v3.json b/googleapiclient/discovery_cache/documents/trafficdirector.v3.json
index 6daa49d323..22ba537d08 100644
--- a/googleapiclient/discovery_cache/documents/trafficdirector.v3.json
+++ b/googleapiclient/discovery_cache/documents/trafficdirector.v3.json
@@ -128,7 +128,7 @@
}
}
},
-"revision": "20240312",
+"revision": "20240322",
"rootUrl": "https://trafficdirector.googleapis.com/",
"schemas": {
"Address": {
@@ -1192,13 +1192,17 @@
"type": "object"
},
"StringMatcher": {
-"description": "Specifies the way to match a string. [#next-free-field: 8]",
+"description": "Specifies the way to match a string. [#next-free-field: 9]",
"id": "StringMatcher",
"properties": {
"contains": {
"description": "The input string must have the substring specified here. Note: empty contains match is not allowed, please use regex instead. Examples: * ``abc`` matches the value ``xyz.abc.def``",
"type": "string"
},
+"custom": {
+"$ref": "TypedExtensionConfig",
+"description": "Use an extension as the matcher type. [#extension-category: envoy.string_matcher]"
+},
"exact": {
"description": "The input string must match exactly the string specified here. Examples: * ``abc`` only matches the value ``abc``.",
"type": "string"
@@ -1240,6 +1244,25 @@
},
"type": "object"
},
+"TypedExtensionConfig": {
+"description": "Message type for extension configuration.",
+"id": "TypedExtensionConfig",
+"properties": {
+"name": {
+"description": "The name of an extension. This is not used to select the extension, instead it serves the role of an opaque identifier.",
+"type": "string"
+},
+"typedConfig": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The typed config for the extension. The type URL will be used to identify the extension. In the case that the type URL is *xds.type.v3.TypedStruct* (or, for historical reasons, *udpa.type.v1.TypedStruct*), the inner type URL of *TypedStruct* will be utilized. See the :ref:`extension configuration overview ` for further details.",
+"type": "object"
+}
+},
+"type": "object"
+},
"UpdateFailureState": {
"id": "UpdateFailureState",
"properties": {