diff --git a/.github/workflows/conformance-tests-storage-emulator.yaml b/.github/workflows/conformance-tests-storage-emulator.yaml
index ea679a96b186..7a2c50bbeb56 100644
--- a/.github/workflows/conformance-tests-storage-emulator.yaml
+++ b/.github/workflows/conformance-tests-storage-emulator.yaml
@@ -16,7 +16,7 @@ jobs:
services:
emulator:
- image: gcr.io/cloud-devrel-public-resources/storage-testbench:v0.62.0
+ image: gcr.io/cloud-devrel-public-resources/storage-testbench:v0.63.0
ports:
- 9000:9000
diff --git a/Dialogflow/metadata/V2/AudioConfig.php b/Dialogflow/metadata/V2/AudioConfig.php
index 78723dbddf4e..4c5a680451e1 100644
--- a/Dialogflow/metadata/V2/AudioConfig.php
+++ b/Dialogflow/metadata/V2/AudioConfig.php
@@ -18,7 +18,7 @@ public static function initOnce() {
\GPBMetadata\Google\Api\Resource::initOnce();
\GPBMetadata\Google\Protobuf\Duration::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xF5\x1C\x0A-google/cloud/dialogflow/v2/audio_config.proto\x12\x1Agoogle.cloud.dialogflow.v2\x1A\x19google/api/resource.proto\x1A\x1Egoogle/protobuf/duration.proto\"9\x0A\x0DSpeechContext\x12\x14\x0A\x07phrases\x18\x01 \x03(\x09B\x03\xE0A\x01\x12\x12\x0A\x05boost\x18\x02 \x01(\x02B\x03\xE0A\x01\"\x92\x01\x0A\x0ESpeechWordInfo\x12\x0C\x0A\x04word\x18\x03 \x01(\x09\x12/\x0A\x0Cstart_offset\x18\x01 \x01(\x0B2\x19.google.protobuf.Duration\x12-\x0A\x0Aend_offset\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\x12\x12\x0A\x0Aconfidence\x18\x04 \x01(\x02\"\xB6\x04\x0A\x10InputAudioConfig\x12F\x0A\x0Eaudio_encoding\x18\x01 \x01(\x0E2).google.cloud.dialogflow.v2.AudioEncodingB\x03\xE0A\x02\x12\x1E\x0A\x11sample_rate_hertz\x18\x02 \x01(\x05B\x03\xE0A\x02\x12\x1A\x0A\x0Dlanguage_code\x18\x03 \x01(\x09B\x03\xE0A\x02\x12\x18\x0A\x10enable_word_info\x18\x0D \x01(\x08\x12\x18\x0A\x0Cphrase_hints\x18\x04 \x03(\x09B\x02\x18\x01\x12B\x0A\x0Fspeech_contexts\x18\x0B \x03(\x0B2).google.cloud.dialogflow.v2.SpeechContext\x12\x0D\x0A\x05model\x18\x07 \x01(\x09\x12E\x0A\x0Dmodel_variant\x18\x0A \x01(\x0E2..google.cloud.dialogflow.v2.SpeechModelVariant\x12\x18\x0A\x10single_utterance\x18\x08 \x01(\x08\x12*\x0A\"disable_no_speech_recognized_event\x18\x0E \x01(\x08\x12\$\x0A\x1Cenable_automatic_punctuation\x18\x11 \x01(\x08\x129\x0A\x0Bphrase_sets\x18\x14 \x03(\x09B\$\xFAA!\x0A\x1Fspeech.googleapis.com/PhraseSet\x12)\x0A!opt_out_conformer_model_migration\x18\x1A \x01(\x08\"p\x0A\x14VoiceSelectionParams\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x01\x12E\x0A\x0Bssml_gender\x18\x02 \x01(\x0E2+.google.cloud.dialogflow.v2.SsmlVoiceGenderB\x03\xE0A\x01\"\xA0\x02\x0A\x16SynthesizeSpeechConfig\x12\x1A\x0A\x0Dspeaking_rate\x18\x01 \x01(\x01B\x03\xE0A\x01\x12\x12\x0A\x05pitch\x18\x02 \x01(\x01B\x03\xE0A\x01\x12\x1B\x0A\x0Evolume_gain_db\x18\x03 \x01(\x01B\x03\xE0A\x01\x12\x1F\x0A\x12effects_profile_id\x18\x05 \x03(\x09B\x03\xE0A\x01\x12D\x0A\x05voice\x18\x04 \x01(\x0B20.google.cloud.dialogflow.v2.VoiceSelectionParamsB\x03\xE0A\x01\x12R\x0A\x0Epronunciations\x18\x06 \x03(\x0B25.google.cloud.dialogflow.v2.CustomPronunciationParamsB\x03\xE0A\x01\"\x96\x02\x0A\x19CustomPronunciationParams\x12\x0E\x0A\x06phrase\x18\x01 \x01(\x09\x12a\x0A\x11phonetic_encoding\x18\x02 \x01(\x0E2F.google.cloud.dialogflow.v2.CustomPronunciationParams.PhoneticEncoding\x12\x15\x0A\x0Dpronunciation\x18\x03 \x01(\x09\"o\x0A\x10PhoneticEncoding\x12!\x0A\x1DPHONETIC_ENCODING_UNSPECIFIED\x10\x00\x12\x19\x0A\x15PHONETIC_ENCODING_IPA\x10\x01\x12\x1D\x0A\x19PHONETIC_ENCODING_X_SAMPA\x10\x02\"\xD2\x01\x0A\x11OutputAudioConfig\x12L\x0A\x0Eaudio_encoding\x18\x01 \x01(\x0E2/.google.cloud.dialogflow.v2.OutputAudioEncodingB\x03\xE0A\x02\x12\x19\x0A\x11sample_rate_hertz\x18\x02 \x01(\x05\x12T\x0A\x18synthesize_speech_config\x18\x03 \x01(\x0B22.google.cloud.dialogflow.v2.SynthesizeSpeechConfig\"U\x0A\x13TelephonyDtmfEvents\x12>\x0A\x0Bdtmf_events\x18\x01 \x03(\x0E2).google.cloud.dialogflow.v2.TelephonyDtmf\"\xE2\x02\x0A\x12SpeechToTextConfig\x12L\x0A\x14speech_model_variant\x18\x01 \x01(\x0E2..google.cloud.dialogflow.v2.SpeechModelVariant\x12\x0D\x0A\x05model\x18\x02 \x01(\x09\x129\x0A\x0Bphrase_sets\x18\x04 \x03(\x09B\$\xFAA!\x0A\x1Fspeech.googleapis.com/PhraseSet\x12A\x0A\x0Eaudio_encoding\x18\x06 \x01(\x0E2).google.cloud.dialogflow.v2.AudioEncoding\x12\x19\x0A\x11sample_rate_hertz\x18\x07 \x01(\x05\x12\x15\x0A\x0Dlanguage_code\x18\x08 \x01(\x09\x12\x18\x0A\x10enable_word_info\x18\x09 \x01(\x08\x12%\x0A\x1Duse_timeout_based_endpointing\x18\x0B \x01(\x08*\x94\x02\x0A\x0DTelephonyDtmf\x12\x1E\x0A\x1ATELEPHONY_DTMF_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08DTMF_ONE\x10\x01\x12\x0C\x0A\x08DTMF_TWO\x10\x02\x12\x0E\x0A\x0ADTMF_THREE\x10\x03\x12\x0D\x0A\x09DTMF_FOUR\x10\x04\x12\x0D\x0A\x09DTMF_FIVE\x10\x05\x12\x0C\x0A\x08DTMF_SIX\x10\x06\x12\x0E\x0A\x0ADTMF_SEVEN\x10\x07\x12\x0E\x0A\x0ADTMF_EIGHT\x10\x08\x12\x0D\x0A\x09DTMF_NINE\x10\x09\x12\x0D\x0A\x09DTMF_ZERO\x10\x0A\x12\x0A\x0A\x06DTMF_A\x10\x0B\x12\x0A\x0A\x06DTMF_B\x10\x0C\x12\x0A\x0A\x06DTMF_C\x10\x0D\x12\x0A\x0A\x06DTMF_D\x10\x0E\x12\x0D\x0A\x09DTMF_STAR\x10\x0F\x12\x0E\x0A\x0ADTMF_POUND\x10\x10*\x94\x02\x0A\x0DAudioEncoding\x12\x1E\x0A\x1AAUDIO_ENCODING_UNSPECIFIED\x10\x00\x12\x1C\x0A\x18AUDIO_ENCODING_LINEAR_16\x10\x01\x12\x17\x0A\x13AUDIO_ENCODING_FLAC\x10\x02\x12\x18\x0A\x14AUDIO_ENCODING_MULAW\x10\x03\x12\x16\x0A\x12AUDIO_ENCODING_AMR\x10\x04\x12\x19\x0A\x15AUDIO_ENCODING_AMR_WB\x10\x05\x12\x1B\x0A\x17AUDIO_ENCODING_OGG_OPUS\x10\x06\x12)\x0A%AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE\x10\x07\x12\x17\x0A\x13AUDIO_ENCODING_ALAW\x10\x08*v\x0A\x12SpeechModelVariant\x12\$\x0A SPEECH_MODEL_VARIANT_UNSPECIFIED\x10\x00\x12\x16\x0A\x12USE_BEST_AVAILABLE\x10\x01\x12\x10\x0A\x0CUSE_STANDARD\x10\x02\x12\x10\x0A\x0CUSE_ENHANCED\x10\x03*\x8D\x01\x0A\x0FSsmlVoiceGender\x12!\x0A\x1DSSML_VOICE_GENDER_UNSPECIFIED\x10\x00\x12\x1A\x0A\x16SSML_VOICE_GENDER_MALE\x10\x01\x12\x1C\x0A\x18SSML_VOICE_GENDER_FEMALE\x10\x02\x12\x1D\x0A\x19SSML_VOICE_GENDER_NEUTRAL\x10\x03*\x90\x02\x0A\x13OutputAudioEncoding\x12%\x0A!OUTPUT_AUDIO_ENCODING_UNSPECIFIED\x10\x00\x12#\x0A\x1FOUTPUT_AUDIO_ENCODING_LINEAR_16\x10\x01\x12!\x0A\x19OUTPUT_AUDIO_ENCODING_MP3\x10\x02\x1A\x02\x08\x01\x12%\x0A!OUTPUT_AUDIO_ENCODING_MP3_64_KBPS\x10\x04\x12\"\x0A\x1EOUTPUT_AUDIO_ENCODING_OGG_OPUS\x10\x03\x12\x1F\x0A\x1BOUTPUT_AUDIO_ENCODING_MULAW\x10\x05\x12\x1E\x0A\x1AOUTPUT_AUDIO_ENCODING_ALAW\x10\x06B\xD3\x02\x0A\x1Ecom.google.cloud.dialogflow.v2B\x10AudioConfigProtoP\x01Z>cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb\xA2\x02\x02DF\xAA\x02\x1AGoogle.Cloud.Dialogflow.V2\xEAAU\x0A\x1Bautoml.googleapis.com/Model\x126projects/{project}/locations/{location}/models/{model}\xEAAb\x0A\x1Fspeech.googleapis.com/PhraseSet\x12?projects/{project}/locations/{location}/phraseSets/{phrase_set}b\x06proto3"
+ "\x0A\xA0\x1D\x0A-google/cloud/dialogflow/v2/audio_config.proto\x12\x1Agoogle.cloud.dialogflow.v2\x1A\x19google/api/resource.proto\x1A\x1Egoogle/protobuf/duration.proto\"9\x0A\x0DSpeechContext\x12\x14\x0A\x07phrases\x18\x01 \x03(\x09B\x03\xE0A\x01\x12\x12\x0A\x05boost\x18\x02 \x01(\x02B\x03\xE0A\x01\"\x92\x01\x0A\x0ESpeechWordInfo\x12\x0C\x0A\x04word\x18\x03 \x01(\x09\x12/\x0A\x0Cstart_offset\x18\x01 \x01(\x0B2\x19.google.protobuf.Duration\x12-\x0A\x0Aend_offset\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\x12\x12\x0A\x0Aconfidence\x18\x04 \x01(\x02\"\xE1\x04\x0A\x10InputAudioConfig\x12F\x0A\x0Eaudio_encoding\x18\x01 \x01(\x0E2).google.cloud.dialogflow.v2.AudioEncodingB\x03\xE0A\x02\x12\x1E\x0A\x11sample_rate_hertz\x18\x02 \x01(\x05B\x03\xE0A\x02\x12\x1A\x0A\x0Dlanguage_code\x18\x03 \x01(\x09B\x03\xE0A\x02\x12\x18\x0A\x10enable_word_info\x18\x0D \x01(\x08\x12\x18\x0A\x0Cphrase_hints\x18\x04 \x03(\x09B\x02\x18\x01\x12B\x0A\x0Fspeech_contexts\x18\x0B \x03(\x0B2).google.cloud.dialogflow.v2.SpeechContext\x12\x0D\x0A\x05model\x18\x07 \x01(\x09\x12E\x0A\x0Dmodel_variant\x18\x0A \x01(\x0E2..google.cloud.dialogflow.v2.SpeechModelVariant\x12\x18\x0A\x10single_utterance\x18\x08 \x01(\x08\x12)\x0A\x1Cenable_voice_activity_events\x18\x1B \x01(\x08B\x03\xE0A\x01\x12*\x0A\"disable_no_speech_recognized_event\x18\x0E \x01(\x08\x12\$\x0A\x1Cenable_automatic_punctuation\x18\x11 \x01(\x08\x129\x0A\x0Bphrase_sets\x18\x14 \x03(\x09B\$\xFAA!\x0A\x1Fspeech.googleapis.com/PhraseSet\x12)\x0A!opt_out_conformer_model_migration\x18\x1A \x01(\x08\"p\x0A\x14VoiceSelectionParams\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x01\x12E\x0A\x0Bssml_gender\x18\x02 \x01(\x0E2+.google.cloud.dialogflow.v2.SsmlVoiceGenderB\x03\xE0A\x01\"\xA0\x02\x0A\x16SynthesizeSpeechConfig\x12\x1A\x0A\x0Dspeaking_rate\x18\x01 \x01(\x01B\x03\xE0A\x01\x12\x12\x0A\x05pitch\x18\x02 \x01(\x01B\x03\xE0A\x01\x12\x1B\x0A\x0Evolume_gain_db\x18\x03 \x01(\x01B\x03\xE0A\x01\x12\x1F\x0A\x12effects_profile_id\x18\x05 \x03(\x09B\x03\xE0A\x01\x12D\x0A\x05voice\x18\x04 \x01(\x0B20.google.cloud.dialogflow.v2.VoiceSelectionParamsB\x03\xE0A\x01\x12R\x0A\x0Epronunciations\x18\x06 \x03(\x0B25.google.cloud.dialogflow.v2.CustomPronunciationParamsB\x03\xE0A\x01\"\x96\x02\x0A\x19CustomPronunciationParams\x12\x0E\x0A\x06phrase\x18\x01 \x01(\x09\x12a\x0A\x11phonetic_encoding\x18\x02 \x01(\x0E2F.google.cloud.dialogflow.v2.CustomPronunciationParams.PhoneticEncoding\x12\x15\x0A\x0Dpronunciation\x18\x03 \x01(\x09\"o\x0A\x10PhoneticEncoding\x12!\x0A\x1DPHONETIC_ENCODING_UNSPECIFIED\x10\x00\x12\x19\x0A\x15PHONETIC_ENCODING_IPA\x10\x01\x12\x1D\x0A\x19PHONETIC_ENCODING_X_SAMPA\x10\x02\"\xD2\x01\x0A\x11OutputAudioConfig\x12L\x0A\x0Eaudio_encoding\x18\x01 \x01(\x0E2/.google.cloud.dialogflow.v2.OutputAudioEncodingB\x03\xE0A\x02\x12\x19\x0A\x11sample_rate_hertz\x18\x02 \x01(\x05\x12T\x0A\x18synthesize_speech_config\x18\x03 \x01(\x0B22.google.cloud.dialogflow.v2.SynthesizeSpeechConfig\"U\x0A\x13TelephonyDtmfEvents\x12>\x0A\x0Bdtmf_events\x18\x01 \x03(\x0E2).google.cloud.dialogflow.v2.TelephonyDtmf\"\xE2\x02\x0A\x12SpeechToTextConfig\x12L\x0A\x14speech_model_variant\x18\x01 \x01(\x0E2..google.cloud.dialogflow.v2.SpeechModelVariant\x12\x0D\x0A\x05model\x18\x02 \x01(\x09\x129\x0A\x0Bphrase_sets\x18\x04 \x03(\x09B\$\xFAA!\x0A\x1Fspeech.googleapis.com/PhraseSet\x12A\x0A\x0Eaudio_encoding\x18\x06 \x01(\x0E2).google.cloud.dialogflow.v2.AudioEncoding\x12\x19\x0A\x11sample_rate_hertz\x18\x07 \x01(\x05\x12\x15\x0A\x0Dlanguage_code\x18\x08 \x01(\x09\x12\x18\x0A\x10enable_word_info\x18\x09 \x01(\x08\x12%\x0A\x1Duse_timeout_based_endpointing\x18\x0B \x01(\x08*\x94\x02\x0A\x0DTelephonyDtmf\x12\x1E\x0A\x1ATELEPHONY_DTMF_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08DTMF_ONE\x10\x01\x12\x0C\x0A\x08DTMF_TWO\x10\x02\x12\x0E\x0A\x0ADTMF_THREE\x10\x03\x12\x0D\x0A\x09DTMF_FOUR\x10\x04\x12\x0D\x0A\x09DTMF_FIVE\x10\x05\x12\x0C\x0A\x08DTMF_SIX\x10\x06\x12\x0E\x0A\x0ADTMF_SEVEN\x10\x07\x12\x0E\x0A\x0ADTMF_EIGHT\x10\x08\x12\x0D\x0A\x09DTMF_NINE\x10\x09\x12\x0D\x0A\x09DTMF_ZERO\x10\x0A\x12\x0A\x0A\x06DTMF_A\x10\x0B\x12\x0A\x0A\x06DTMF_B\x10\x0C\x12\x0A\x0A\x06DTMF_C\x10\x0D\x12\x0A\x0A\x06DTMF_D\x10\x0E\x12\x0D\x0A\x09DTMF_STAR\x10\x0F\x12\x0E\x0A\x0ADTMF_POUND\x10\x10*\x94\x02\x0A\x0DAudioEncoding\x12\x1E\x0A\x1AAUDIO_ENCODING_UNSPECIFIED\x10\x00\x12\x1C\x0A\x18AUDIO_ENCODING_LINEAR_16\x10\x01\x12\x17\x0A\x13AUDIO_ENCODING_FLAC\x10\x02\x12\x18\x0A\x14AUDIO_ENCODING_MULAW\x10\x03\x12\x16\x0A\x12AUDIO_ENCODING_AMR\x10\x04\x12\x19\x0A\x15AUDIO_ENCODING_AMR_WB\x10\x05\x12\x1B\x0A\x17AUDIO_ENCODING_OGG_OPUS\x10\x06\x12)\x0A%AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE\x10\x07\x12\x17\x0A\x13AUDIO_ENCODING_ALAW\x10\x08*v\x0A\x12SpeechModelVariant\x12\$\x0A SPEECH_MODEL_VARIANT_UNSPECIFIED\x10\x00\x12\x16\x0A\x12USE_BEST_AVAILABLE\x10\x01\x12\x10\x0A\x0CUSE_STANDARD\x10\x02\x12\x10\x0A\x0CUSE_ENHANCED\x10\x03*\x8D\x01\x0A\x0FSsmlVoiceGender\x12!\x0A\x1DSSML_VOICE_GENDER_UNSPECIFIED\x10\x00\x12\x1A\x0A\x16SSML_VOICE_GENDER_MALE\x10\x01\x12\x1C\x0A\x18SSML_VOICE_GENDER_FEMALE\x10\x02\x12\x1D\x0A\x19SSML_VOICE_GENDER_NEUTRAL\x10\x03*\x90\x02\x0A\x13OutputAudioEncoding\x12%\x0A!OUTPUT_AUDIO_ENCODING_UNSPECIFIED\x10\x00\x12#\x0A\x1FOUTPUT_AUDIO_ENCODING_LINEAR_16\x10\x01\x12!\x0A\x19OUTPUT_AUDIO_ENCODING_MP3\x10\x02\x1A\x02\x08\x01\x12%\x0A!OUTPUT_AUDIO_ENCODING_MP3_64_KBPS\x10\x04\x12\"\x0A\x1EOUTPUT_AUDIO_ENCODING_OGG_OPUS\x10\x03\x12\x1F\x0A\x1BOUTPUT_AUDIO_ENCODING_MULAW\x10\x05\x12\x1E\x0A\x1AOUTPUT_AUDIO_ENCODING_ALAW\x10\x06B\xD3\x02\x0A\x1Ecom.google.cloud.dialogflow.v2B\x10AudioConfigProtoP\x01Z>cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb\xA2\x02\x02DF\xAA\x02\x1AGoogle.Cloud.Dialogflow.V2\xEAAU\x0A\x1Bautoml.googleapis.com/Model\x126projects/{project}/locations/{location}/models/{model}\xEAAb\x0A\x1Fspeech.googleapis.com/PhraseSet\x12?projects/{project}/locations/{location}/phraseSets/{phrase_set}b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/Dialogflow/metadata/V2/Conversation.php b/Dialogflow/metadata/V2/Conversation.php
index 6c57d75cc3e4..a71904af718f 100644
--- a/Dialogflow/metadata/V2/Conversation.php
+++ b/Dialogflow/metadata/V2/Conversation.php
@@ -25,7 +25,7 @@ public static function initOnce() {
\GPBMetadata\Google\Protobuf\Struct::initOnce();
\GPBMetadata\Google\Protobuf\Timestamp::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\x97w\x0A-google/cloud/dialogflow/v2/conversation.proto\x12\x1Agoogle.cloud.dialogflow.v2\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x19google/api/resource.proto\x1A5google/cloud/dialogflow/v2/conversation_profile.proto\x1A*google/cloud/dialogflow/v2/generator.proto\x1A,google/cloud/dialogflow/v2/participant.proto\x1A(google/cloud/dialogflow/v2/session.proto\x1A\x1Cgoogle/protobuf/struct.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\"\xF4\x16\x0A\x0CConversation\x12\x14\x0A\x04name\x18\x01 \x01(\x09B\x06\xE0A\x03\xE0A\x08\x12U\x0A\x0Flifecycle_state\x18\x02 \x01(\x0E27.google.cloud.dialogflow.v2.Conversation.LifecycleStateB\x03\xE0A\x03\x12S\x0A\x14conversation_profile\x18\x03 \x01(\x09B5\xE0A\x02\xFAA/\x0A-dialogflow.googleapis.com/ConversationProfile\x12N\x0A\x0Cphone_number\x18\x04 \x01(\x0B23.google.cloud.dialogflow.v2.ConversationPhoneNumberB\x03\xE0A\x03\x123\x0A\x0Astart_time\x18\x05 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x121\x0A\x08end_time\x18\x06 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12[\x0A\x12conversation_stage\x18\x07 \x01(\x0E2:.google.cloud.dialogflow.v2.Conversation.ConversationStageB\x03\xE0A\x01\x12h\x0A\x19telephony_connection_info\x18\x0A \x01(\x0B2@.google.cloud.dialogflow.v2.Conversation.TelephonyConnectionInfoB\x03\xE0A\x03\x12]\x0A\x1Cinitial_conversation_profile\x18\x0F \x01(\x0B2/.google.cloud.dialogflow.v2.ConversationProfileB\x06\xE0A\x01\xE0A\x03\x12q\x0A\x1Bingested_context_references\x18\x11 \x03(\x0B2G.google.cloud.dialogflow.v2.Conversation.IngestedContextReferencesEntryB\x03\xE0A\x03\x12o\x0A\x1Ainitial_generator_contexts\x18\x12 \x03(\x0B2F.google.cloud.dialogflow.v2.Conversation.InitialGeneratorContextsEntryB\x03\xE0A\x03\x1A\x8E\x03\x0A\x17TelephonyConnectionInfo\x12\x1A\x0A\x0Ddialed_number\x18\x02 \x01(\x09B\x03\xE0A\x03\x12\x10\x0A\x03sdp\x18\x05 \x01(\x09B\x03\xE0A\x01\x12d\x0A\x0Bsip_headers\x18\x0C \x03(\x0B2J.google.cloud.dialogflow.v2.Conversation.TelephonyConnectionInfo.SipHeaderB\x03\xE0A\x03\x12n\x0A\x13extra_mime_contents\x18\x0D \x03(\x0B2L.google.cloud.dialogflow.v2.Conversation.TelephonyConnectionInfo.MimeContentB\x03\xE0A\x03\x1A2\x0A\x09SipHeader\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x12\x0A\x05value\x18\x02 \x01(\x09B\x03\xE0A\x01\x1A;\x0A\x0BMimeContent\x12\x16\x0A\x09mime_type\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x14\x0A\x07content\x18\x02 \x01(\x0CB\x03\xE0A\x01\x1A\xAC\x05\x0A\x10ContextReference\x12g\x0A\x10context_contents\x18\x01 \x03(\x0B2H.google.cloud.dialogflow.v2.Conversation.ContextReference.ContextContentB\x03\xE0A\x02\x12^\x0A\x0Bupdate_mode\x18\x02 \x01(\x0E2D.google.cloud.dialogflow.v2.Conversation.ContextReference.UpdateModeB\x03\xE0A\x02\x12\x1A\x0A\x0Dlanguage_code\x18\x03 \x01(\x09B\x03\xE0A\x01\x124\x0A\x0Bcreate_time\x18\x04 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x1A\xB6\x02\x0A\x0EContextContent\x12\x14\x0A\x07content\x18\x01 \x01(\x09B\x03\xE0A\x02\x12s\x0A\x0Econtent_format\x18\x02 \x01(\x0E2V.google.cloud.dialogflow.v2.Conversation.ContextReference.ContextContent.ContentFormatB\x03\xE0A\x02\x127\x0A\x0Eingestion_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x15\x0A\x0Danswer_record\x18\x04 \x01(\x09\"I\x0A\x0DContentFormat\x12\x1E\x0A\x1ACONTENT_FORMAT_UNSPECIFIED\x10\x00\x12\x08\x0A\x04JSON\x10\x01\x12\x0E\x0A\x0APLAIN_TEXT\x10\x02\"D\x0A\x0AUpdateMode\x12\x1B\x0A\x17UPDATE_MODE_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06APPEND\x10\x01\x12\x0D\x0A\x09OVERWRITE\x10\x02\x1A\xA6\x02\x0A\x10GeneratorContext\x12d\x0A\x0Egenerator_type\x18\x01 \x01(\x0E2G.google.cloud.dialogflow.v2.Conversation.GeneratorContext.GeneratorTypeB\x03\xE0A\x03\"\xAB\x01\x0A\x0DGeneratorType\x12\x1E\x0A\x1AGENERATOR_TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09FREE_FORM\x10\x01\x12\x12\x0A\x0EAGENT_COACHING\x10\x02\x12\x11\x0A\x0DSUMMARIZATION\x10\x03\x12\x0F\x0A\x0BTRANSLATION\x10\x04\x12\x12\x0A\x0EAGENT_FEEDBACK\x10\x05\x12\x1F\x0A\x1BCUSTOMER_MESSAGE_GENERATION\x10\x06\x1A{\x0A\x1EIngestedContextReferencesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.ContextReference:\x028\x01\x1Az\x0A\x1DInitialGeneratorContextsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.GeneratorContext:\x028\x01\"Q\x0A\x0ELifecycleState\x12\x1F\x0A\x1BLIFECYCLE_STATE_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BIN_PROGRESS\x10\x01\x12\x0D\x0A\x09COMPLETED\x10\x02\"h\x0A\x11ConversationStage\x12\"\x0A\x1ECONVERSATION_STAGE_UNSPECIFIED\x10\x00\x12\x17\x0A\x13VIRTUAL_AGENT_STAGE\x10\x01\x12\x16\x0A\x12HUMAN_ASSIST_STAGE\x10\x02:\xC0\x01\xEAA\xBC\x01\x0A&dialogflow.googleapis.com/Conversation\x12/projects/{project}/conversations/{conversation}\x12Dprojects/{project}/locations/{location}/conversations/{conversation}*\x0Dconversations2\x0Cconversation\"\xBE\x01\x0A\x19CreateConversationRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x12&dialogflow.googleapis.com/Conversation\x12C\x0A\x0Cconversation\x18\x02 \x01(\x0B2(.google.cloud.dialogflow.v2.ConversationB\x03\xE0A\x02\x12\x1C\x0A\x0Fconversation_id\x18\x03 \x01(\x09B\x03\xE0A\x01\"\xA0\x01\x0A\x18ListConversationsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x12&dialogflow.googleapis.com/Conversation\x12\x16\x0A\x09page_size\x18\x02 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x03 \x01(\x09B\x03\xE0A\x01\x12\x13\x0A\x06filter\x18\x04 \x01(\x09B\x03\xE0A\x01\"u\x0A\x19ListConversationsResponse\x12?\x0A\x0Dconversations\x18\x01 \x03(\x0B2(.google.cloud.dialogflow.v2.Conversation\x12\x17\x0A\x0Fnext_page_token\x18\x02 \x01(\x09\"V\x0A\x16GetConversationRequest\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\"[\x0A\x1BCompleteConversationRequest\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\"\x96\x01\x0A\x13ListMessagesRequest\x129\x0A\x06parent\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x12!dialogflow.googleapis.com/Message\x12\x13\x0A\x06filter\x18\x04 \x01(\x09B\x03\xE0A\x01\x12\x16\x0A\x09page_size\x18\x02 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x03 \x01(\x09B\x03\xE0A\x01\"f\x0A\x14ListMessagesResponse\x125\x0A\x08messages\x18\x01 \x03(\x0B2#.google.cloud.dialogflow.v2.Message\x12\x17\x0A\x0Fnext_page_token\x18\x02 \x01(\x09\"O\x0A\x17ConversationPhoneNumber\x12\x19\x0A\x0Ccountry_code\x18\x02 \x01(\x05B\x03\xE0A\x03\x12\x19\x0A\x0Cphone_number\x18\x03 \x01(\x09B\x03\xE0A\x03\"\xCF\x02\x0A\x1EIngestContextReferencesRequest\x12D\x0A\x0Cconversation\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\x12r\x0A\x12context_references\x18\x02 \x03(\x0B2Q.google.cloud.dialogflow.v2.IngestContextReferencesRequest.ContextReferencesEntryB\x03\xE0A\x02\x1As\x0A\x16ContextReferencesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.ContextReference:\x028\x01\"\x9F\x02\x0A\x1FIngestContextReferencesResponse\x12\x7F\x0A\x1Bingested_context_references\x18\x01 \x03(\x0B2Z.google.cloud.dialogflow.v2.IngestContextReferencesResponse.IngestedContextReferencesEntry\x1A{\x0A\x1EIngestedContextReferencesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.ContextReference:\x028\x01\"\x9C\x02\x0A!SuggestConversationSummaryRequest\x12D\x0A\x0Cconversation\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\x12A\x0A\x0Elatest_message\x18\x03 \x01(\x09B)\xE0A\x01\xFAA#\x0A!dialogflow.googleapis.com/Message\x12\x19\x0A\x0Ccontext_size\x18\x04 \x01(\x05B\x03\xE0A\x01\x12S\x0A\x13assist_query_params\x18\x05 \x01(\x0B21.google.cloud.dialogflow.v2.AssistQueryParametersB\x03\xE0A\x01\"\xAA\x05\x0A\"SuggestConversationSummaryResponse\x12W\x0A\x07summary\x18\x01 \x01(\x0B2F.google.cloud.dialogflow.v2.SuggestConversationSummaryResponse.Summary\x12>\x0A\x0Elatest_message\x18\x02 \x01(\x09B&\xFAA#\x0A!dialogflow.googleapis.com/Message\x12\x14\x0A\x0Ccontext_size\x18\x03 \x01(\x05\x1A\xD4\x03\x0A\x07Summary\x12\x0C\x0A\x04text\x18\x01 \x01(\x09\x12o\x0A\x0Dtext_sections\x18\x04 \x03(\x0B2X.google.cloud.dialogflow.v2.SuggestConversationSummaryResponse.Summary.TextSectionsEntry\x12s\x0A\x14sorted_text_sections\x18\x06 \x03(\x0B2U.google.cloud.dialogflow.v2.SuggestConversationSummaryResponse.Summary.SummarySection\x12B\x0A\x0Danswer_record\x18\x03 \x01(\x09B+\xFAA(\x0A&dialogflow.googleapis.com/AnswerRecord\x12\x1E\x0A\x16baseline_model_version\x18\x05 \x01(\x09\x1A<\x0A\x0ESummarySection\x12\x14\x0A\x07section\x18\x01 \x01(\x09B\x03\xE0A\x03\x12\x14\x0A\x07summary\x18\x02 \x01(\x09B\x03\xE0A\x03\x1A3\x0A\x11TextSectionsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01\"\xDC\x03\x0A\x1FGenerateStatelessSummaryRequest\x12t\x0A\x16stateless_conversation\x18\x01 \x01(\x0B2O.google.cloud.dialogflow.v2.GenerateStatelessSummaryRequest.MinimalConversationB\x03\xE0A\x02\x12R\x0A\x14conversation_profile\x18\x02 \x01(\x0B2/.google.cloud.dialogflow.v2.ConversationProfileB\x03\xE0A\x02\x12A\x0A\x0Elatest_message\x18\x03 \x01(\x09B)\xE0A\x01\xFAA#\x0A!dialogflow.googleapis.com/Message\x12\x1D\x0A\x10max_context_size\x18\x04 \x01(\x05B\x03\xE0A\x01\x1A\x8C\x01\x0A\x13MinimalConversation\x12:\x0A\x08messages\x18\x01 \x03(\x0B2#.google.cloud.dialogflow.v2.MessageB\x03\xE0A\x02\x129\x0A\x06parent\x18\x02 \x01(\x09B)\xE0A\x02\xFAA#\x0A!locations.googleapis.com/Location\"\xAD\x03\x0A GenerateStatelessSummaryResponse\x12U\x0A\x07summary\x18\x01 \x01(\x0B2D.google.cloud.dialogflow.v2.GenerateStatelessSummaryResponse.Summary\x12>\x0A\x0Elatest_message\x18\x02 \x01(\x09B&\xFAA#\x0A!dialogflow.googleapis.com/Message\x12\x14\x0A\x0Ccontext_size\x18\x03 \x01(\x05\x1A\xDB\x01\x0A\x07Summary\x12\x0C\x0A\x04text\x18\x01 \x01(\x09\x12m\x0A\x0Dtext_sections\x18\x02 \x03(\x0B2V.google.cloud.dialogflow.v2.GenerateStatelessSummaryResponse.Summary.TextSectionsEntry\x12\x1E\x0A\x16baseline_model_version\x18\x04 \x01(\x09\x1A3\x0A\x11TextSectionsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01\"\xF3\x04\x0A\"GenerateStatelessSuggestionRequest\x129\x0A\x06parent\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!locations.googleapis.com/Location\x12:\x0A\x09generator\x18\x02 \x01(\x0B2%.google.cloud.dialogflow.v2.GeneratorH\x00\x12\x18\x0A\x0Egenerator_name\x18\x03 \x01(\x09H\x00\x12v\x0A\x12context_references\x18\x04 \x03(\x0B2U.google.cloud.dialogflow.v2.GenerateStatelessSuggestionRequest.ContextReferencesEntryB\x03\xE0A\x01\x12R\x0A\x14conversation_context\x18\x05 \x01(\x0B2/.google.cloud.dialogflow.v2.ConversationContextB\x03\xE0A\x01\x12E\x0A\x0Etrigger_events\x18\x06 \x03(\x0E2(.google.cloud.dialogflow.v2.TriggerEventB\x03\xE0A\x01\x12\x1E\x0A\x11security_settings\x18\x08 \x01(\x09B\x03\xE0A\x01\x1As\x0A\x16ContextReferencesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.ContextReference:\x028\x01B\x14\x0A\x12generator_resource\"y\x0A#GenerateStatelessSuggestionResponse\x12R\x0A\x14generator_suggestion\x18\x01 \x01(\x0B2/.google.cloud.dialogflow.v2.GeneratorSuggestionB\x03\xE0A\x02\"\x9C\x12\x0A\x16SearchKnowledgeRequest\x12\x13\x0A\x06parent\x18\x06 \x01(\x09B\x03\xE0A\x02\x129\x0A\x05query\x18\x01 \x01(\x0B2%.google.cloud.dialogflow.v2.TextInputB\x03\xE0A\x02\x12S\x0A\x14conversation_profile\x18\x02 \x01(\x09B5\xE0A\x02\xFAA/\x0A-dialogflow.googleapis.com/ConversationProfile\x12\x17\x0A\x0Asession_id\x18\x03 \x01(\x09B\x03\xE0A\x02\x12D\x0A\x0Cconversation\x18\x04 \x01(\x09B.\xE0A\x01\xFAA(\x0A&dialogflow.googleapis.com/Conversation\x12A\x0A\x0Elatest_message\x18\x05 \x01(\x09B)\xE0A\x01\xFAA#\x0A!dialogflow.googleapis.com/Message\x12Y\x0A\x0Cquery_source\x18\x07 \x01(\x0E2>.google.cloud.dialogflow.v2.SearchKnowledgeRequest.QuerySourceB\x03\xE0A\x01\x127\x0A\x11end_user_metadata\x18\x09 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12[\x0A\x0Dsearch_config\x18\x0B \x01(\x0B2?.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfigB\x03\xE0A\x01\x12\x19\x0A\x0Cexact_search\x18\x0E \x01(\x08B\x03\xE0A\x01\x1A\xDB\x0C\x0A\x0CSearchConfig\x12d\x0A\x0Bboost_specs\x18\x01 \x03(\x0B2J.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecsB\x03\xE0A\x01\x12f\x0A\x0Cfilter_specs\x18\x02 \x03(\x0B2K.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.FilterSpecsB\x03\xE0A\x01\x1A\xBE\x0A\x0A\x0ABoostSpecs\x12E\x0A\x0Bdata_stores\x18\x01 \x03(\x09B0\xE0A\x01\xFAA*\x0A(discoveryengine.googleapis.com/DataStore\x12g\x0A\x04spec\x18\x02 \x03(\x0B2T.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpecB\x03\xE0A\x01\x1A\xFF\x08\x0A\x09BoostSpec\x12\x8B\x01\x0A\x15condition_boost_specs\x18\x01 \x03(\x0B2g.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpecB\x03\xE0A\x01\x1A\xE3\x07\x0A\x12ConditionBoostSpec\x12\x16\x0A\x09condition\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x12\x0A\x05boost\x18\x02 \x01(\x02B\x03\xE0A\x01\x12\x99\x01\x0A\x12boost_control_spec\x18\x04 \x01(\x0B2x.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpecB\x03\xE0A\x01\x1A\x84\x06\x0A\x10BoostControlSpec\x12\x17\x0A\x0Afield_name\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\xA4\x01\x0A\x0Eattribute_type\x18\x02 \x01(\x0E2\x86\x01.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.AttributeTypeB\x03\xE0A\x01\x12\xAC\x01\x0A\x12interpolation_type\x18\x03 \x01(\x0E2\x8A\x01.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.InterpolationTypeB\x03\xE0A\x01\x12\xA3\x01\x0A\x0Econtrol_points\x18\x04 \x03(\x0B2\x85\x01.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.ControlPointB\x03\xE0A\x01\x1AG\x0A\x0CControlPoint\x12\x1C\x0A\x0Fattribute_value\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x19\x0A\x0Cboost_amount\x18\x02 \x01(\x02B\x03\xE0A\x01\"M\x0A\x0DAttributeType\x12\x1E\x0A\x1AATTRIBUTE_TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09NUMERICAL\x10\x01\x12\x0D\x0A\x09FRESHNESS\x10\x02\"C\x0A\x11InterpolationType\x12\"\x0A\x1EINTERPOLATION_TYPE_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06LINEAR\x10\x01\x1A<\x0A\x0BFilterSpecs\x12\x18\x0A\x0Bdata_stores\x18\x01 \x03(\x09B\x03\xE0A\x01\x12\x13\x0A\x06filter\x18\x02 \x01(\x09B\x03\xE0A\x01\"Q\x0A\x0BQuerySource\x12\x1C\x0A\x18QUERY_SOURCE_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BAGENT_QUERY\x10\x01\x12\x13\x0A\x0FSUGGESTED_QUERY\x10\x02\"\xA4\x04\x0A\x18SearchKnowledgeDebugInfo\x12V\x0A\x19datastore_response_reason\x18\x01 \x01(\x0E23.google.cloud.dialogflow.v2.DatastoreResponseReason\x12o\x0A\x19search_knowledge_behavior\x18\x02 \x01(\x0B2L.google.cloud.dialogflow.v2.SearchKnowledgeDebugInfo.SearchKnowledgeBehavior\x12l\x0A%ingested_context_reference_debug_info\x18\x03 \x01(\x0B2=.google.cloud.dialogflow.v2.IngestedContextReferenceDebugInfo\x12C\x0A\x0Fservice_latency\x18\x04 \x01(\x0B2*.google.cloud.dialogflow.v2.ServiceLatency\x1A\x8B\x01\x0A\x17SearchKnowledgeBehavior\x12%\x0A\x1Danswer_generation_rewriter_on\x18\x01 \x01(\x08\x12\"\x0A\x1Aend_user_metadata_included\x18\x02 \x01(\x08\x12%\x0A\x1Dthird_party_connector_allowed\x18\x04 \x01(\x08\"\xD1\x01\x0A\x17SearchKnowledgeResponse\x12B\x0A\x07answers\x18\x02 \x03(\x0B21.google.cloud.dialogflow.v2.SearchKnowledgeAnswer\x12\x17\x0A\x0Frewritten_query\x18\x03 \x01(\x09\x12Y\x0A\x1Bsearch_knowledge_debug_info\x18\x04 \x01(\x0B24.google.cloud.dialogflow.v2.SearchKnowledgeDebugInfo\"\xE7\x03\x0A\x15SearchKnowledgeAnswer\x12\x0E\x0A\x06answer\x18\x01 \x01(\x09\x12Q\x0A\x0Banswer_type\x18\x02 \x01(\x0E2<.google.cloud.dialogflow.v2.SearchKnowledgeAnswer.AnswerType\x12V\x0A\x0Eanswer_sources\x18\x03 \x03(\x0B2>.google.cloud.dialogflow.v2.SearchKnowledgeAnswer.AnswerSource\x12B\x0A\x0Danswer_record\x18\x05 \x01(\x09B+\xFAA(\x0A&dialogflow.googleapis.com/AnswerRecord\x1Af\x0A\x0CAnswerSource\x12\x0D\x0A\x05title\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x0F\x0A\x07snippet\x18\x03 \x01(\x09\x12)\x0A\x08metadata\x18\x05 \x01(\x0B2\x17.google.protobuf.Struct\"g\x0A\x0AAnswerType\x12\x1B\x0A\x17ANSWER_TYPE_UNSPECIFIED\x10\x00\x12\x07\x0A\x03FAQ\x10\x01\x12\x0E\x0A\x0AGENERATIVE\x10\x02\x12\x0A\x0A\x06INTENT\x10\x03\x12\x0C\x0A\x08PLAYBOOK\x10\x04\x12\x09\x0A\x05EVENT\x10\x05\"\xEC\x01\x0A\x1AGenerateSuggestionsRequest\x12D\x0A\x0Cconversation\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\x12A\x0A\x0Elatest_message\x18\x02 \x01(\x09B)\xE0A\x01\xFAA#\x0A!dialogflow.googleapis.com/Message\x12E\x0A\x0Etrigger_events\x18\x03 \x03(\x0E2(.google.cloud.dialogflow.v2.TriggerEventB\x03\xE0A\x012\xA6\x1A\x0A\x0DConversations\x12\x8C\x02\x0A\x12CreateConversation\x125.google.cloud.dialogflow.v2.CreateConversationRequest\x1A(.google.cloud.dialogflow.v2.Conversation\"\x94\x01\xDAA\x13parent,conversation\x82\xD3\xE4\x93\x02x\"%/v2/{parent=projects/*}/conversations:\x0CconversationZA\"1/v2/{parent=projects/*/locations/*}/conversations:\x0Cconversation\x12\xED\x01\x0A\x11ListConversations\x124.google.cloud.dialogflow.v2.ListConversationsRequest\x1A5.google.cloud.dialogflow.v2.ListConversationsResponse\"k\xDAA\x06parent\x82\xD3\xE4\x93\x02\\\x12%/v2/{parent=projects/*}/conversationsZ3\x121/v2/{parent=projects/*/locations/*}/conversations\x12\xDA\x01\x0A\x0FGetConversation\x122.google.cloud.dialogflow.v2.GetConversationRequest\x1A(.google.cloud.dialogflow.v2.Conversation\"i\xDAA\x04name\x82\xD3\xE4\x93\x02\\\x12%/v2/{name=projects/*/conversations/*}Z3\x121/v2/{name=projects/*/locations/*/conversations/*}\x12\xFD\x01\x0A\x14CompleteConversation\x127.google.cloud.dialogflow.v2.CompleteConversationRequest\x1A(.google.cloud.dialogflow.v2.Conversation\"\x81\x01\xDAA\x04name\x82\xD3\xE4\x93\x02t\"./v2/{name=projects/*/conversations/*}:complete:\x01*Z?\":/v2/{name=projects/*/locations/*/conversations/*}:complete:\x01*\x12\x92\x02\x0A\x17IngestContextReferences\x12:.google.cloud.dialogflow.v2.IngestContextReferencesRequest\x1A;.google.cloud.dialogflow.v2.IngestContextReferencesResponse\"~\xDAA\x1Fconversation,context_references\x82\xD3\xE4\x93\x02V\"Q/v2/{conversation=projects/*/locations/*/conversations/*}:ingestContextReferences:\x01*\x12\xF5\x01\x0A\x0CListMessages\x12/.google.cloud.dialogflow.v2.ListMessagesRequest\x1A0.google.cloud.dialogflow.v2.ListMessagesResponse\"\x81\x01\xDAA\x06parent\x82\xD3\xE4\x93\x02r\x120/v2/{parent=projects/*/conversations/*}/messagesZ>\x12.google.cloud.dialogflow.v2.SuggestConversationSummaryResponse\"\xD6\x01\xDAA\x0Cconversation\x82\xD3\xE4\x93\x02\xC0\x01\"T/v2/{conversation=projects/*/conversations/*}/suggestions:suggestConversationSummary:\x01*Ze\"`/v2/{conversation=projects/*/locations/*/conversations/*}/suggestions:suggestConversationSummary:\x01*\x12\xDD\x02\x0A\x18GenerateStatelessSummary\x12;.google.cloud.dialogflow.v2.GenerateStatelessSummaryRequest\x1A<.google.cloud.dialogflow.v2.GenerateStatelessSummaryResponse\"\xC5\x01\x82\xD3\xE4\x93\x02\xBE\x01\"S/v2/{stateless_conversation.parent=projects/*}/suggestions:generateStatelessSummary:\x01*Zd\"_/v2/{stateless_conversation.parent=projects/*/locations/*}/suggestions:generateStatelessSummary:\x01*\x12\xEB\x01\x0A\x1BGenerateStatelessSuggestion\x12>.google.cloud.dialogflow.v2.GenerateStatelessSuggestionRequest\x1A?.google.cloud.dialogflow.v2.GenerateStatelessSuggestionResponse\"K\x82\xD3\xE4\x93\x02E\"@/v2/{parent=projects/*/locations/*}/statelessSuggestion:generate:\x01*\x12\xAE\x03\x0A\x0FSearchKnowledge\x122.google.cloud.dialogflow.v2.SearchKnowledgeRequest\x1A3.google.cloud.dialogflow.v2.SearchKnowledgeResponse\"\xB1\x02\x82\xD3\xE4\x93\x02\xAA\x02\"3/v2/{parent=projects/*}/suggestions:searchKnowledge:\x01*ZD\"?/v2/{parent=projects/*/locations/*}/suggestions:searchKnowledge:\x01*ZN\"I/v2/{conversation=projects/*/conversations/*}/suggestions:searchKnowledge:\x01*ZZ\"U/v2/{conversation=projects/*/locations/*/conversations/*}/suggestions:searchKnowledge:\x01*\x12\xBB\x02\x0A\x13GenerateSuggestions\x126.google.cloud.dialogflow.v2.GenerateSuggestionsRequest\x1A7.google.cloud.dialogflow.v2.GenerateSuggestionsResponse\"\xB2\x01\xDAA\x0Cconversation\x82\xD3\xE4\x93\x02\x9C\x01\"B/v2/{conversation=projects/*/conversations/*}/suggestions:generate:\x01*ZS\"N/v2/{conversation=projects/*/locations/*/conversations/*}/suggestions:generate:\x01*\x1Ax\xCAA\x19dialogflow.googleapis.com\xD2AYhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/dialogflowB\xBD\x03\x0A\x1Ecom.google.cloud.dialogflow.v2B\x11ConversationProtoP\x01Z>cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb\xA2\x02\x02DF\xAA\x02\x1AGoogle.Cloud.Dialogflow.V2\xEAA\xC5\x01\x0A(discoveryengine.googleapis.com/DataStore\x12Xprojects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}\x12?projects/{project}/locations/{location}/dataStores/{data_store}\xEAAZ\x0A\x17ces.googleapis.com/Tool\x12?projects/{project}/locations/{location}/apps/{app}/tools/{tool}b\x06proto3"
+ "\x0A\xCDw\x0A-google/cloud/dialogflow/v2/conversation.proto\x12\x1Agoogle.cloud.dialogflow.v2\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x19google/api/resource.proto\x1A5google/cloud/dialogflow/v2/conversation_profile.proto\x1A*google/cloud/dialogflow/v2/generator.proto\x1A,google/cloud/dialogflow/v2/participant.proto\x1A(google/cloud/dialogflow/v2/session.proto\x1A\x1Cgoogle/protobuf/struct.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\"\xF4\x16\x0A\x0CConversation\x12\x14\x0A\x04name\x18\x01 \x01(\x09B\x06\xE0A\x03\xE0A\x08\x12U\x0A\x0Flifecycle_state\x18\x02 \x01(\x0E27.google.cloud.dialogflow.v2.Conversation.LifecycleStateB\x03\xE0A\x03\x12S\x0A\x14conversation_profile\x18\x03 \x01(\x09B5\xE0A\x02\xFAA/\x0A-dialogflow.googleapis.com/ConversationProfile\x12N\x0A\x0Cphone_number\x18\x04 \x01(\x0B23.google.cloud.dialogflow.v2.ConversationPhoneNumberB\x03\xE0A\x03\x123\x0A\x0Astart_time\x18\x05 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x121\x0A\x08end_time\x18\x06 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12[\x0A\x12conversation_stage\x18\x07 \x01(\x0E2:.google.cloud.dialogflow.v2.Conversation.ConversationStageB\x03\xE0A\x01\x12h\x0A\x19telephony_connection_info\x18\x0A \x01(\x0B2@.google.cloud.dialogflow.v2.Conversation.TelephonyConnectionInfoB\x03\xE0A\x03\x12]\x0A\x1Cinitial_conversation_profile\x18\x0F \x01(\x0B2/.google.cloud.dialogflow.v2.ConversationProfileB\x06\xE0A\x01\xE0A\x03\x12q\x0A\x1Bingested_context_references\x18\x11 \x03(\x0B2G.google.cloud.dialogflow.v2.Conversation.IngestedContextReferencesEntryB\x03\xE0A\x03\x12o\x0A\x1Ainitial_generator_contexts\x18\x12 \x03(\x0B2F.google.cloud.dialogflow.v2.Conversation.InitialGeneratorContextsEntryB\x03\xE0A\x03\x1A\x8E\x03\x0A\x17TelephonyConnectionInfo\x12\x1A\x0A\x0Ddialed_number\x18\x02 \x01(\x09B\x03\xE0A\x03\x12\x10\x0A\x03sdp\x18\x05 \x01(\x09B\x03\xE0A\x01\x12d\x0A\x0Bsip_headers\x18\x0C \x03(\x0B2J.google.cloud.dialogflow.v2.Conversation.TelephonyConnectionInfo.SipHeaderB\x03\xE0A\x03\x12n\x0A\x13extra_mime_contents\x18\x0D \x03(\x0B2L.google.cloud.dialogflow.v2.Conversation.TelephonyConnectionInfo.MimeContentB\x03\xE0A\x03\x1A2\x0A\x09SipHeader\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x12\x0A\x05value\x18\x02 \x01(\x09B\x03\xE0A\x01\x1A;\x0A\x0BMimeContent\x12\x16\x0A\x09mime_type\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x14\x0A\x07content\x18\x02 \x01(\x0CB\x03\xE0A\x01\x1A\xAC\x05\x0A\x10ContextReference\x12g\x0A\x10context_contents\x18\x01 \x03(\x0B2H.google.cloud.dialogflow.v2.Conversation.ContextReference.ContextContentB\x03\xE0A\x02\x12^\x0A\x0Bupdate_mode\x18\x02 \x01(\x0E2D.google.cloud.dialogflow.v2.Conversation.ContextReference.UpdateModeB\x03\xE0A\x02\x12\x1A\x0A\x0Dlanguage_code\x18\x03 \x01(\x09B\x03\xE0A\x01\x124\x0A\x0Bcreate_time\x18\x04 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x1A\xB6\x02\x0A\x0EContextContent\x12\x14\x0A\x07content\x18\x01 \x01(\x09B\x03\xE0A\x02\x12s\x0A\x0Econtent_format\x18\x02 \x01(\x0E2V.google.cloud.dialogflow.v2.Conversation.ContextReference.ContextContent.ContentFormatB\x03\xE0A\x02\x127\x0A\x0Eingestion_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x15\x0A\x0Danswer_record\x18\x04 \x01(\x09\"I\x0A\x0DContentFormat\x12\x1E\x0A\x1ACONTENT_FORMAT_UNSPECIFIED\x10\x00\x12\x08\x0A\x04JSON\x10\x01\x12\x0E\x0A\x0APLAIN_TEXT\x10\x02\"D\x0A\x0AUpdateMode\x12\x1B\x0A\x17UPDATE_MODE_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06APPEND\x10\x01\x12\x0D\x0A\x09OVERWRITE\x10\x02\x1A\xA6\x02\x0A\x10GeneratorContext\x12d\x0A\x0Egenerator_type\x18\x01 \x01(\x0E2G.google.cloud.dialogflow.v2.Conversation.GeneratorContext.GeneratorTypeB\x03\xE0A\x03\"\xAB\x01\x0A\x0DGeneratorType\x12\x1E\x0A\x1AGENERATOR_TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09FREE_FORM\x10\x01\x12\x12\x0A\x0EAGENT_COACHING\x10\x02\x12\x11\x0A\x0DSUMMARIZATION\x10\x03\x12\x0F\x0A\x0BTRANSLATION\x10\x04\x12\x12\x0A\x0EAGENT_FEEDBACK\x10\x05\x12\x1F\x0A\x1BCUSTOMER_MESSAGE_GENERATION\x10\x06\x1A{\x0A\x1EIngestedContextReferencesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.ContextReference:\x028\x01\x1Az\x0A\x1DInitialGeneratorContextsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.GeneratorContext:\x028\x01\"Q\x0A\x0ELifecycleState\x12\x1F\x0A\x1BLIFECYCLE_STATE_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BIN_PROGRESS\x10\x01\x12\x0D\x0A\x09COMPLETED\x10\x02\"h\x0A\x11ConversationStage\x12\"\x0A\x1ECONVERSATION_STAGE_UNSPECIFIED\x10\x00\x12\x17\x0A\x13VIRTUAL_AGENT_STAGE\x10\x01\x12\x16\x0A\x12HUMAN_ASSIST_STAGE\x10\x02:\xC0\x01\xEAA\xBC\x01\x0A&dialogflow.googleapis.com/Conversation\x12/projects/{project}/conversations/{conversation}\x12Dprojects/{project}/locations/{location}/conversations/{conversation}*\x0Dconversations2\x0Cconversation\"\xBE\x01\x0A\x19CreateConversationRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x12&dialogflow.googleapis.com/Conversation\x12C\x0A\x0Cconversation\x18\x02 \x01(\x0B2(.google.cloud.dialogflow.v2.ConversationB\x03\xE0A\x02\x12\x1C\x0A\x0Fconversation_id\x18\x03 \x01(\x09B\x03\xE0A\x01\"\xA0\x01\x0A\x18ListConversationsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x12&dialogflow.googleapis.com/Conversation\x12\x16\x0A\x09page_size\x18\x02 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x03 \x01(\x09B\x03\xE0A\x01\x12\x13\x0A\x06filter\x18\x04 \x01(\x09B\x03\xE0A\x01\"u\x0A\x19ListConversationsResponse\x12?\x0A\x0Dconversations\x18\x01 \x03(\x0B2(.google.cloud.dialogflow.v2.Conversation\x12\x17\x0A\x0Fnext_page_token\x18\x02 \x01(\x09\"V\x0A\x16GetConversationRequest\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\"[\x0A\x1BCompleteConversationRequest\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\"\x96\x01\x0A\x13ListMessagesRequest\x129\x0A\x06parent\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x12!dialogflow.googleapis.com/Message\x12\x13\x0A\x06filter\x18\x04 \x01(\x09B\x03\xE0A\x01\x12\x16\x0A\x09page_size\x18\x02 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x03 \x01(\x09B\x03\xE0A\x01\"f\x0A\x14ListMessagesResponse\x125\x0A\x08messages\x18\x01 \x03(\x0B2#.google.cloud.dialogflow.v2.Message\x12\x17\x0A\x0Fnext_page_token\x18\x02 \x01(\x09\"O\x0A\x17ConversationPhoneNumber\x12\x19\x0A\x0Ccountry_code\x18\x02 \x01(\x05B\x03\xE0A\x03\x12\x19\x0A\x0Cphone_number\x18\x03 \x01(\x09B\x03\xE0A\x03\"\xCF\x02\x0A\x1EIngestContextReferencesRequest\x12D\x0A\x0Cconversation\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\x12r\x0A\x12context_references\x18\x02 \x03(\x0B2Q.google.cloud.dialogflow.v2.IngestContextReferencesRequest.ContextReferencesEntryB\x03\xE0A\x02\x1As\x0A\x16ContextReferencesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.ContextReference:\x028\x01\"\x9F\x02\x0A\x1FIngestContextReferencesResponse\x12\x7F\x0A\x1Bingested_context_references\x18\x01 \x03(\x0B2Z.google.cloud.dialogflow.v2.IngestContextReferencesResponse.IngestedContextReferencesEntry\x1A{\x0A\x1EIngestedContextReferencesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.ContextReference:\x028\x01\"\x9C\x02\x0A!SuggestConversationSummaryRequest\x12D\x0A\x0Cconversation\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\x12A\x0A\x0Elatest_message\x18\x03 \x01(\x09B)\xE0A\x01\xFAA#\x0A!dialogflow.googleapis.com/Message\x12\x19\x0A\x0Ccontext_size\x18\x04 \x01(\x05B\x03\xE0A\x01\x12S\x0A\x13assist_query_params\x18\x05 \x01(\x0B21.google.cloud.dialogflow.v2.AssistQueryParametersB\x03\xE0A\x01\"\xAA\x05\x0A\"SuggestConversationSummaryResponse\x12W\x0A\x07summary\x18\x01 \x01(\x0B2F.google.cloud.dialogflow.v2.SuggestConversationSummaryResponse.Summary\x12>\x0A\x0Elatest_message\x18\x02 \x01(\x09B&\xFAA#\x0A!dialogflow.googleapis.com/Message\x12\x14\x0A\x0Ccontext_size\x18\x03 \x01(\x05\x1A\xD4\x03\x0A\x07Summary\x12\x0C\x0A\x04text\x18\x01 \x01(\x09\x12o\x0A\x0Dtext_sections\x18\x04 \x03(\x0B2X.google.cloud.dialogflow.v2.SuggestConversationSummaryResponse.Summary.TextSectionsEntry\x12s\x0A\x14sorted_text_sections\x18\x06 \x03(\x0B2U.google.cloud.dialogflow.v2.SuggestConversationSummaryResponse.Summary.SummarySection\x12B\x0A\x0Danswer_record\x18\x03 \x01(\x09B+\xFAA(\x0A&dialogflow.googleapis.com/AnswerRecord\x12\x1E\x0A\x16baseline_model_version\x18\x05 \x01(\x09\x1A<\x0A\x0ESummarySection\x12\x14\x0A\x07section\x18\x01 \x01(\x09B\x03\xE0A\x03\x12\x14\x0A\x07summary\x18\x02 \x01(\x09B\x03\xE0A\x03\x1A3\x0A\x11TextSectionsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01\"\xDC\x03\x0A\x1FGenerateStatelessSummaryRequest\x12t\x0A\x16stateless_conversation\x18\x01 \x01(\x0B2O.google.cloud.dialogflow.v2.GenerateStatelessSummaryRequest.MinimalConversationB\x03\xE0A\x02\x12R\x0A\x14conversation_profile\x18\x02 \x01(\x0B2/.google.cloud.dialogflow.v2.ConversationProfileB\x03\xE0A\x02\x12A\x0A\x0Elatest_message\x18\x03 \x01(\x09B)\xE0A\x01\xFAA#\x0A!dialogflow.googleapis.com/Message\x12\x1D\x0A\x10max_context_size\x18\x04 \x01(\x05B\x03\xE0A\x01\x1A\x8C\x01\x0A\x13MinimalConversation\x12:\x0A\x08messages\x18\x01 \x03(\x0B2#.google.cloud.dialogflow.v2.MessageB\x03\xE0A\x02\x129\x0A\x06parent\x18\x02 \x01(\x09B)\xE0A\x02\xFAA#\x0A!locations.googleapis.com/Location\"\xAD\x03\x0A GenerateStatelessSummaryResponse\x12U\x0A\x07summary\x18\x01 \x01(\x0B2D.google.cloud.dialogflow.v2.GenerateStatelessSummaryResponse.Summary\x12>\x0A\x0Elatest_message\x18\x02 \x01(\x09B&\xFAA#\x0A!dialogflow.googleapis.com/Message\x12\x14\x0A\x0Ccontext_size\x18\x03 \x01(\x05\x1A\xDB\x01\x0A\x07Summary\x12\x0C\x0A\x04text\x18\x01 \x01(\x09\x12m\x0A\x0Dtext_sections\x18\x02 \x03(\x0B2V.google.cloud.dialogflow.v2.GenerateStatelessSummaryResponse.Summary.TextSectionsEntry\x12\x1E\x0A\x16baseline_model_version\x18\x04 \x01(\x09\x1A3\x0A\x11TextSectionsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01\"\xF3\x04\x0A\"GenerateStatelessSuggestionRequest\x129\x0A\x06parent\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!locations.googleapis.com/Location\x12:\x0A\x09generator\x18\x02 \x01(\x0B2%.google.cloud.dialogflow.v2.GeneratorH\x00\x12\x18\x0A\x0Egenerator_name\x18\x03 \x01(\x09H\x00\x12v\x0A\x12context_references\x18\x04 \x03(\x0B2U.google.cloud.dialogflow.v2.GenerateStatelessSuggestionRequest.ContextReferencesEntryB\x03\xE0A\x01\x12R\x0A\x14conversation_context\x18\x05 \x01(\x0B2/.google.cloud.dialogflow.v2.ConversationContextB\x03\xE0A\x01\x12E\x0A\x0Etrigger_events\x18\x06 \x03(\x0E2(.google.cloud.dialogflow.v2.TriggerEventB\x03\xE0A\x01\x12\x1E\x0A\x11security_settings\x18\x08 \x01(\x09B\x03\xE0A\x01\x1As\x0A\x16ContextReferencesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12H\x0A\x05value\x18\x02 \x01(\x0B29.google.cloud.dialogflow.v2.Conversation.ContextReference:\x028\x01B\x14\x0A\x12generator_resource\"y\x0A#GenerateStatelessSuggestionResponse\x12R\x0A\x14generator_suggestion\x18\x01 \x01(\x0B2/.google.cloud.dialogflow.v2.GeneratorSuggestionB\x03\xE0A\x02\"\x9C\x12\x0A\x16SearchKnowledgeRequest\x12\x13\x0A\x06parent\x18\x06 \x01(\x09B\x03\xE0A\x02\x129\x0A\x05query\x18\x01 \x01(\x0B2%.google.cloud.dialogflow.v2.TextInputB\x03\xE0A\x02\x12S\x0A\x14conversation_profile\x18\x02 \x01(\x09B5\xE0A\x02\xFAA/\x0A-dialogflow.googleapis.com/ConversationProfile\x12\x17\x0A\x0Asession_id\x18\x03 \x01(\x09B\x03\xE0A\x02\x12D\x0A\x0Cconversation\x18\x04 \x01(\x09B.\xE0A\x01\xFAA(\x0A&dialogflow.googleapis.com/Conversation\x12A\x0A\x0Elatest_message\x18\x05 \x01(\x09B)\xE0A\x01\xFAA#\x0A!dialogflow.googleapis.com/Message\x12Y\x0A\x0Cquery_source\x18\x07 \x01(\x0E2>.google.cloud.dialogflow.v2.SearchKnowledgeRequest.QuerySourceB\x03\xE0A\x01\x127\x0A\x11end_user_metadata\x18\x09 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12[\x0A\x0Dsearch_config\x18\x0B \x01(\x0B2?.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfigB\x03\xE0A\x01\x12\x19\x0A\x0Cexact_search\x18\x0E \x01(\x08B\x03\xE0A\x01\x1A\xDB\x0C\x0A\x0CSearchConfig\x12d\x0A\x0Bboost_specs\x18\x01 \x03(\x0B2J.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecsB\x03\xE0A\x01\x12f\x0A\x0Cfilter_specs\x18\x02 \x03(\x0B2K.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.FilterSpecsB\x03\xE0A\x01\x1A\xBE\x0A\x0A\x0ABoostSpecs\x12E\x0A\x0Bdata_stores\x18\x01 \x03(\x09B0\xE0A\x01\xFAA*\x0A(discoveryengine.googleapis.com/DataStore\x12g\x0A\x04spec\x18\x02 \x03(\x0B2T.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpecB\x03\xE0A\x01\x1A\xFF\x08\x0A\x09BoostSpec\x12\x8B\x01\x0A\x15condition_boost_specs\x18\x01 \x03(\x0B2g.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpecB\x03\xE0A\x01\x1A\xE3\x07\x0A\x12ConditionBoostSpec\x12\x16\x0A\x09condition\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x12\x0A\x05boost\x18\x02 \x01(\x02B\x03\xE0A\x01\x12\x99\x01\x0A\x12boost_control_spec\x18\x04 \x01(\x0B2x.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpecB\x03\xE0A\x01\x1A\x84\x06\x0A\x10BoostControlSpec\x12\x17\x0A\x0Afield_name\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\xA4\x01\x0A\x0Eattribute_type\x18\x02 \x01(\x0E2\x86\x01.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.AttributeTypeB\x03\xE0A\x01\x12\xAC\x01\x0A\x12interpolation_type\x18\x03 \x01(\x0E2\x8A\x01.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.InterpolationTypeB\x03\xE0A\x01\x12\xA3\x01\x0A\x0Econtrol_points\x18\x04 \x03(\x0B2\x85\x01.google.cloud.dialogflow.v2.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.ControlPointB\x03\xE0A\x01\x1AG\x0A\x0CControlPoint\x12\x1C\x0A\x0Fattribute_value\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x19\x0A\x0Cboost_amount\x18\x02 \x01(\x02B\x03\xE0A\x01\"M\x0A\x0DAttributeType\x12\x1E\x0A\x1AATTRIBUTE_TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09NUMERICAL\x10\x01\x12\x0D\x0A\x09FRESHNESS\x10\x02\"C\x0A\x11InterpolationType\x12\"\x0A\x1EINTERPOLATION_TYPE_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06LINEAR\x10\x01\x1A<\x0A\x0BFilterSpecs\x12\x18\x0A\x0Bdata_stores\x18\x01 \x03(\x09B\x03\xE0A\x01\x12\x13\x0A\x06filter\x18\x02 \x01(\x09B\x03\xE0A\x01\"Q\x0A\x0BQuerySource\x12\x1C\x0A\x18QUERY_SOURCE_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BAGENT_QUERY\x10\x01\x12\x13\x0A\x0FSUGGESTED_QUERY\x10\x02\"\xDA\x04\x0A\x18SearchKnowledgeDebugInfo\x12V\x0A\x19datastore_response_reason\x18\x01 \x01(\x0E23.google.cloud.dialogflow.v2.DatastoreResponseReason\x12o\x0A\x19search_knowledge_behavior\x18\x02 \x01(\x0B2L.google.cloud.dialogflow.v2.SearchKnowledgeDebugInfo.SearchKnowledgeBehavior\x12l\x0A%ingested_context_reference_debug_info\x18\x03 \x01(\x0B2=.google.cloud.dialogflow.v2.IngestedContextReferenceDebugInfo\x12C\x0A\x0Fservice_latency\x18\x04 \x01(\x0B2*.google.cloud.dialogflow.v2.ServiceLatency\x124\x0A\x0Eces_debug_info\x18\x05 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x1A\x8B\x01\x0A\x17SearchKnowledgeBehavior\x12%\x0A\x1Danswer_generation_rewriter_on\x18\x01 \x01(\x08\x12\"\x0A\x1Aend_user_metadata_included\x18\x02 \x01(\x08\x12%\x0A\x1Dthird_party_connector_allowed\x18\x04 \x01(\x08\"\xD1\x01\x0A\x17SearchKnowledgeResponse\x12B\x0A\x07answers\x18\x02 \x03(\x0B21.google.cloud.dialogflow.v2.SearchKnowledgeAnswer\x12\x17\x0A\x0Frewritten_query\x18\x03 \x01(\x09\x12Y\x0A\x1Bsearch_knowledge_debug_info\x18\x04 \x01(\x0B24.google.cloud.dialogflow.v2.SearchKnowledgeDebugInfo\"\xE7\x03\x0A\x15SearchKnowledgeAnswer\x12\x0E\x0A\x06answer\x18\x01 \x01(\x09\x12Q\x0A\x0Banswer_type\x18\x02 \x01(\x0E2<.google.cloud.dialogflow.v2.SearchKnowledgeAnswer.AnswerType\x12V\x0A\x0Eanswer_sources\x18\x03 \x03(\x0B2>.google.cloud.dialogflow.v2.SearchKnowledgeAnswer.AnswerSource\x12B\x0A\x0Danswer_record\x18\x05 \x01(\x09B+\xFAA(\x0A&dialogflow.googleapis.com/AnswerRecord\x1Af\x0A\x0CAnswerSource\x12\x0D\x0A\x05title\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x0F\x0A\x07snippet\x18\x03 \x01(\x09\x12)\x0A\x08metadata\x18\x05 \x01(\x0B2\x17.google.protobuf.Struct\"g\x0A\x0AAnswerType\x12\x1B\x0A\x17ANSWER_TYPE_UNSPECIFIED\x10\x00\x12\x07\x0A\x03FAQ\x10\x01\x12\x0E\x0A\x0AGENERATIVE\x10\x02\x12\x0A\x0A\x06INTENT\x10\x03\x12\x0C\x0A\x08PLAYBOOK\x10\x04\x12\x09\x0A\x05EVENT\x10\x05\"\xEC\x01\x0A\x1AGenerateSuggestionsRequest\x12D\x0A\x0Cconversation\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&dialogflow.googleapis.com/Conversation\x12A\x0A\x0Elatest_message\x18\x02 \x01(\x09B)\xE0A\x01\xFAA#\x0A!dialogflow.googleapis.com/Message\x12E\x0A\x0Etrigger_events\x18\x03 \x03(\x0E2(.google.cloud.dialogflow.v2.TriggerEventB\x03\xE0A\x012\xA6\x1A\x0A\x0DConversations\x12\x8C\x02\x0A\x12CreateConversation\x125.google.cloud.dialogflow.v2.CreateConversationRequest\x1A(.google.cloud.dialogflow.v2.Conversation\"\x94\x01\xDAA\x13parent,conversation\x82\xD3\xE4\x93\x02x\"%/v2/{parent=projects/*}/conversations:\x0CconversationZA\"1/v2/{parent=projects/*/locations/*}/conversations:\x0Cconversation\x12\xED\x01\x0A\x11ListConversations\x124.google.cloud.dialogflow.v2.ListConversationsRequest\x1A5.google.cloud.dialogflow.v2.ListConversationsResponse\"k\xDAA\x06parent\x82\xD3\xE4\x93\x02\\\x12%/v2/{parent=projects/*}/conversationsZ3\x121/v2/{parent=projects/*/locations/*}/conversations\x12\xDA\x01\x0A\x0FGetConversation\x122.google.cloud.dialogflow.v2.GetConversationRequest\x1A(.google.cloud.dialogflow.v2.Conversation\"i\xDAA\x04name\x82\xD3\xE4\x93\x02\\\x12%/v2/{name=projects/*/conversations/*}Z3\x121/v2/{name=projects/*/locations/*/conversations/*}\x12\xFD\x01\x0A\x14CompleteConversation\x127.google.cloud.dialogflow.v2.CompleteConversationRequest\x1A(.google.cloud.dialogflow.v2.Conversation\"\x81\x01\xDAA\x04name\x82\xD3\xE4\x93\x02t\"./v2/{name=projects/*/conversations/*}:complete:\x01*Z?\":/v2/{name=projects/*/locations/*/conversations/*}:complete:\x01*\x12\x92\x02\x0A\x17IngestContextReferences\x12:.google.cloud.dialogflow.v2.IngestContextReferencesRequest\x1A;.google.cloud.dialogflow.v2.IngestContextReferencesResponse\"~\xDAA\x1Fconversation,context_references\x82\xD3\xE4\x93\x02V\"Q/v2/{conversation=projects/*/locations/*/conversations/*}:ingestContextReferences:\x01*\x12\xF5\x01\x0A\x0CListMessages\x12/.google.cloud.dialogflow.v2.ListMessagesRequest\x1A0.google.cloud.dialogflow.v2.ListMessagesResponse\"\x81\x01\xDAA\x06parent\x82\xD3\xE4\x93\x02r\x120/v2/{parent=projects/*/conversations/*}/messagesZ>\x12.google.cloud.dialogflow.v2.SuggestConversationSummaryResponse\"\xD6\x01\xDAA\x0Cconversation\x82\xD3\xE4\x93\x02\xC0\x01\"T/v2/{conversation=projects/*/conversations/*}/suggestions:suggestConversationSummary:\x01*Ze\"`/v2/{conversation=projects/*/locations/*/conversations/*}/suggestions:suggestConversationSummary:\x01*\x12\xDD\x02\x0A\x18GenerateStatelessSummary\x12;.google.cloud.dialogflow.v2.GenerateStatelessSummaryRequest\x1A<.google.cloud.dialogflow.v2.GenerateStatelessSummaryResponse\"\xC5\x01\x82\xD3\xE4\x93\x02\xBE\x01\"S/v2/{stateless_conversation.parent=projects/*}/suggestions:generateStatelessSummary:\x01*Zd\"_/v2/{stateless_conversation.parent=projects/*/locations/*}/suggestions:generateStatelessSummary:\x01*\x12\xEB\x01\x0A\x1BGenerateStatelessSuggestion\x12>.google.cloud.dialogflow.v2.GenerateStatelessSuggestionRequest\x1A?.google.cloud.dialogflow.v2.GenerateStatelessSuggestionResponse\"K\x82\xD3\xE4\x93\x02E\"@/v2/{parent=projects/*/locations/*}/statelessSuggestion:generate:\x01*\x12\xAE\x03\x0A\x0FSearchKnowledge\x122.google.cloud.dialogflow.v2.SearchKnowledgeRequest\x1A3.google.cloud.dialogflow.v2.SearchKnowledgeResponse\"\xB1\x02\x82\xD3\xE4\x93\x02\xAA\x02\"3/v2/{parent=projects/*}/suggestions:searchKnowledge:\x01*ZD\"?/v2/{parent=projects/*/locations/*}/suggestions:searchKnowledge:\x01*ZN\"I/v2/{conversation=projects/*/conversations/*}/suggestions:searchKnowledge:\x01*ZZ\"U/v2/{conversation=projects/*/locations/*/conversations/*}/suggestions:searchKnowledge:\x01*\x12\xBB\x02\x0A\x13GenerateSuggestions\x126.google.cloud.dialogflow.v2.GenerateSuggestionsRequest\x1A7.google.cloud.dialogflow.v2.GenerateSuggestionsResponse\"\xB2\x01\xDAA\x0Cconversation\x82\xD3\xE4\x93\x02\x9C\x01\"B/v2/{conversation=projects/*/conversations/*}/suggestions:generate:\x01*ZS\"N/v2/{conversation=projects/*/locations/*/conversations/*}/suggestions:generate:\x01*\x1Ax\xCAA\x19dialogflow.googleapis.com\xD2AYhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/dialogflowB\xBD\x03\x0A\x1Ecom.google.cloud.dialogflow.v2B\x11ConversationProtoP\x01Z>cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb\xA2\x02\x02DF\xAA\x02\x1AGoogle.Cloud.Dialogflow.V2\xEAA\xC5\x01\x0A(discoveryengine.googleapis.com/DataStore\x12Xprojects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}\x12?projects/{project}/locations/{location}/dataStores/{data_store}\xEAAZ\x0A\x17ces.googleapis.com/Tool\x12?projects/{project}/locations/{location}/apps/{app}/tools/{tool}b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/Dialogflow/metadata/V2/Session.php b/Dialogflow/metadata/V2/Session.php
index cd3bf58ead74..890a1af49b97 100644
--- a/Dialogflow/metadata/V2/Session.php
+++ b/Dialogflow/metadata/V2/Session.php
@@ -28,7 +28,7 @@ public static function initOnce() {
\GPBMetadata\Google\Rpc\Status::initOnce();
\GPBMetadata\Google\Type\Latlng::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\x8E2\x0A(google/cloud/dialogflow/v2/session.proto\x12\x1Agoogle.cloud.dialogflow.v2\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x19google/api/resource.proto\x1A-google/cloud/dialogflow/v2/audio_config.proto\x1A(google/cloud/dialogflow/v2/context.proto\x1A'google/cloud/dialogflow/v2/intent.proto\x1A4google/cloud/dialogflow/v2/session_entity_type.proto\x1A\x1Egoogle/protobuf/duration.proto\x1A google/protobuf/field_mask.proto\x1A\x1Cgoogle/protobuf/struct.proto\x1A\x17google/rpc/status.proto\x1A\x18google/type/latlng.proto\"\xF5\x02\x0A\x13DetectIntentRequest\x12:\x0A\x07session\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!dialogflow.googleapis.com/Session\x12A\x0A\x0Cquery_params\x18\x02 \x01(\x0B2+.google.cloud.dialogflow.v2.QueryParameters\x12@\x0A\x0Bquery_input\x18\x03 \x01(\x0B2&.google.cloud.dialogflow.v2.QueryInputB\x03\xE0A\x02\x12J\x0A\x13output_audio_config\x18\x04 \x01(\x0B2-.google.cloud.dialogflow.v2.OutputAudioConfig\x12<\x0A\x18output_audio_config_mask\x18\x07 \x01(\x0B2\x1A.google.protobuf.FieldMask\x12\x13\x0A\x0Binput_audio\x18\x05 \x01(\x0C\"\xF8\x01\x0A\x14DetectIntentResponse\x12\x13\x0A\x0Bresponse_id\x18\x01 \x01(\x09\x12=\x0A\x0Cquery_result\x18\x02 \x01(\x0B2'.google.cloud.dialogflow.v2.QueryResult\x12*\x0A\x0Ewebhook_status\x18\x03 \x01(\x0B2\x12.google.rpc.Status\x12\x14\x0A\x0Coutput_audio\x18\x04 \x01(\x0C\x12J\x0A\x13output_audio_config\x18\x06 \x01(\x0B2-.google.cloud.dialogflow.v2.OutputAudioConfig\"\x9F\x04\x0A\x0FQueryParameters\x12\x11\x0A\x09time_zone\x18\x01 \x01(\x09\x12)\x0A\x0Cgeo_location\x18\x02 \x01(\x0B2\x13.google.type.LatLng\x125\x0A\x08contexts\x18\x03 \x03(\x0B2#.google.cloud.dialogflow.v2.Context\x12\x16\x0A\x0Ereset_contexts\x18\x04 \x01(\x08\x12K\x0A\x14session_entity_types\x18\x05 \x03(\x0B2-.google.cloud.dialogflow.v2.SessionEntityType\x12(\x0A\x07payload\x18\x06 \x01(\x0B2\x17.google.protobuf.Struct\x12e\x0A!sentiment_analysis_request_config\x18\x0A \x01(\x0B2:.google.cloud.dialogflow.v2.SentimentAnalysisRequestConfig\x12X\x0A\x0Fwebhook_headers\x18\x0E \x03(\x0B2?.google.cloud.dialogflow.v2.QueryParameters.WebhookHeadersEntry\x12\x10\x0A\x08platform\x18\x12 \x01(\x09\x1A5\x0A\x13WebhookHeadersEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01\"\xCB\x01\x0A\x0AQueryInput\x12D\x0A\x0Caudio_config\x18\x01 \x01(\x0B2,.google.cloud.dialogflow.v2.InputAudioConfigH\x00\x125\x0A\x04text\x18\x02 \x01(\x0B2%.google.cloud.dialogflow.v2.TextInputH\x00\x127\x0A\x05event\x18\x03 \x01(\x0B2&.google.cloud.dialogflow.v2.EventInputH\x00B\x07\x0A\x05input\"\xAE\x05\x0A\x0BQueryResult\x12\x12\x0A\x0Aquery_text\x18\x01 \x01(\x09\x12\x15\x0A\x0Dlanguage_code\x18\x0F \x01(\x09\x12%\x0A\x1Dspeech_recognition_confidence\x18\x02 \x01(\x02\x12\x0E\x0A\x06action\x18\x03 \x01(\x09\x12+\x0A\x0Aparameters\x18\x04 \x01(\x0B2\x17.google.protobuf.Struct\x12#\x0A\x1Ball_required_params_present\x18\x05 \x01(\x08\x12\x1C\x0A\x14cancels_slot_filling\x18\x15 \x01(\x08\x12\x18\x0A\x10fulfillment_text\x18\x06 \x01(\x09\x12H\x0A\x14fulfillment_messages\x18\x07 \x03(\x0B2*.google.cloud.dialogflow.v2.Intent.Message\x12\x16\x0A\x0Ewebhook_source\x18\x08 \x01(\x09\x120\x0A\x0Fwebhook_payload\x18\x09 \x01(\x0B2\x17.google.protobuf.Struct\x12<\x0A\x0Foutput_contexts\x18\x0A \x03(\x0B2#.google.cloud.dialogflow.v2.Context\x122\x0A\x06intent\x18\x0B \x01(\x0B2\".google.cloud.dialogflow.v2.Intent\x12#\x0A\x1Bintent_detection_confidence\x18\x0C \x01(\x02\x120\x0A\x0Fdiagnostic_info\x18\x0E \x01(\x0B2\x17.google.protobuf.Struct\x12V\x0A\x19sentiment_analysis_result\x18\x11 \x01(\x0B23.google.cloud.dialogflow.v2.SentimentAnalysisResult\"\xBB\x03\x0A\x1CStreamingDetectIntentRequest\x12:\x0A\x07session\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!dialogflow.googleapis.com/Session\x12A\x0A\x0Cquery_params\x18\x02 \x01(\x0B2+.google.cloud.dialogflow.v2.QueryParameters\x12@\x0A\x0Bquery_input\x18\x03 \x01(\x0B2&.google.cloud.dialogflow.v2.QueryInputB\x03\xE0A\x02\x12\x1C\x0A\x10single_utterance\x18\x04 \x01(\x08B\x02\x18\x01\x12J\x0A\x13output_audio_config\x18\x05 \x01(\x0B2-.google.cloud.dialogflow.v2.OutputAudioConfig\x12<\x0A\x18output_audio_config_mask\x18\x07 \x01(\x0B2\x1A.google.protobuf.FieldMask\x12\x13\x0A\x0Binput_audio\x18\x06 \x01(\x0C\x12\x1D\x0A\x15enable_debugging_info\x18\x08 \x01(\x08\"\xB0\x07\x0A\x1ECloudConversationDebuggingInfo\x12\x19\x0A\x11audio_data_chunks\x18\x01 \x01(\x05\x129\x0A\x16result_end_time_offset\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\x127\x0A\x14first_audio_duration\x18\x03 \x01(\x0B2\x19.google.protobuf.Duration\x12\x18\x0A\x10single_utterance\x18\x05 \x01(\x08\x12C\x0A speech_partial_results_end_times\x18\x06 \x03(\x0B2\x19.google.protobuf.Duration\x12A\x0A\x1Espeech_final_results_end_times\x18\x07 \x03(\x0B2\x19.google.protobuf.Duration\x12\x19\x0A\x11partial_responses\x18\x08 \x01(\x05\x12,\x0A\$speaker_id_passive_latency_ms_offset\x18\x09 \x01(\x05\x12\x1F\x0A\x17bargein_event_triggered\x18\x0A \x01(\x08\x12\x1F\x0A\x17speech_single_utterance\x18\x0B \x01(\x08\x12=\x0A\x1Adtmf_partial_results_times\x18\x0C \x03(\x0B2\x19.google.protobuf.Duration\x12;\x0A\x18dtmf_final_results_times\x18\x0D \x03(\x0B2\x19.google.protobuf.Duration\x12C\x0A single_utterance_end_time_offset\x18\x0E \x01(\x0B2\x19.google.protobuf.Duration\x124\x0A\x11no_speech_timeout\x18\x0F \x01(\x0B2\x19.google.protobuf.Duration\x126\x0A\x13endpointing_timeout\x18\x13 \x01(\x0B2\x19.google.protobuf.Duration\x12\x15\x0A\x0Dis_input_text\x18\x10 \x01(\x08\x12@\x0A\x1Dclient_half_close_time_offset\x18\x11 \x01(\x0B2\x19.google.protobuf.Duration\x12J\x0A'client_half_close_streaming_time_offset\x18\x12 \x01(\x0B2\x19.google.protobuf.Duration\"\xA9\x03\x0A\x1DStreamingDetectIntentResponse\x12\x13\x0A\x0Bresponse_id\x18\x01 \x01(\x09\x12R\x0A\x12recognition_result\x18\x02 \x01(\x0B26.google.cloud.dialogflow.v2.StreamingRecognitionResult\x12=\x0A\x0Cquery_result\x18\x03 \x01(\x0B2'.google.cloud.dialogflow.v2.QueryResult\x12*\x0A\x0Ewebhook_status\x18\x04 \x01(\x0B2\x12.google.rpc.Status\x12\x14\x0A\x0Coutput_audio\x18\x05 \x01(\x0C\x12J\x0A\x13output_audio_config\x18\x06 \x01(\x0B2-.google.cloud.dialogflow.v2.OutputAudioConfig\x12R\x0A\x0Edebugging_info\x18\x08 \x01(\x0B2:.google.cloud.dialogflow.v2.CloudConversationDebuggingInfo\"\x9D\x03\x0A\x1AStreamingRecognitionResult\x12X\x0A\x0Cmessage_type\x18\x01 \x01(\x0E2B.google.cloud.dialogflow.v2.StreamingRecognitionResult.MessageType\x12\x12\x0A\x0Atranscript\x18\x02 \x01(\x09\x12\x10\x0A\x08is_final\x18\x03 \x01(\x08\x12\x12\x0A\x0Aconfidence\x18\x04 \x01(\x02\x12D\x0A\x10speech_word_info\x18\x07 \x03(\x0B2*.google.cloud.dialogflow.v2.SpeechWordInfo\x124\x0A\x11speech_end_offset\x18\x08 \x01(\x0B2\x19.google.protobuf.Duration\x12\x15\x0A\x0Dlanguage_code\x18\x0A \x01(\x09\"X\x0A\x0BMessageType\x12\x1C\x0A\x18MESSAGE_TYPE_UNSPECIFIED\x10\x00\x12\x0E\x0A\x0ATRANSCRIPT\x10\x01\x12\x1B\x0A\x17END_OF_SINGLE_UTTERANCE\x10\x02\":\x0A\x09TextInput\x12\x11\x0A\x04text\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x1A\x0A\x0Dlanguage_code\x18\x02 \x01(\x09B\x03\xE0A\x02\"h\x0A\x0AEventInput\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x02\x12+\x0A\x0Aparameters\x18\x02 \x01(\x0B2\x17.google.protobuf.Struct\x12\x1A\x0A\x0Dlanguage_code\x18\x03 \x01(\x09B\x03\xE0A\x02\"F\x0A\x1ESentimentAnalysisRequestConfig\x12\$\x0A\x1Canalyze_query_text_sentiment\x18\x01 \x01(\x08\"^\x0A\x17SentimentAnalysisResult\x12C\x0A\x14query_text_sentiment\x18\x01 \x01(\x0B2%.google.cloud.dialogflow.v2.Sentiment\"-\x0A\x09Sentiment\x12\x0D\x0A\x05score\x18\x01 \x01(\x02\x12\x11\x0A\x09magnitude\x18\x02 \x01(\x022\xE5\x05\x0A\x08Sessions\x12\xC9\x03\x0A\x0CDetectIntent\x12/.google.cloud.dialogflow.v2.DetectIntentRequest\x1A0.google.cloud.dialogflow.v2.DetectIntentResponse\"\xD5\x02\xDAA\x13session,query_input\x82\xD3\xE4\x93\x02\xB8\x02\"6/v2/{session=projects/*/agent/sessions/*}:detectIntent:\x01*ZR\"M/v2/{session=projects/*/agent/environments/*/users/*/sessions/*}:detectIntent:\x01*ZG\"B/v2/{session=projects/*/locations/*/agent/sessions/*}:detectIntent:\x01*Z^\"Y/v2/{session=projects/*/locations/*/agent/environments/*/users/*/sessions/*}:detectIntent:\x01*\x12\x92\x01\x0A\x15StreamingDetectIntent\x128.google.cloud.dialogflow.v2.StreamingDetectIntentRequest\x1A9.google.cloud.dialogflow.v2.StreamingDetectIntentResponse\"\x00(\x010\x01\x1Ax\xCAA\x19dialogflow.googleapis.com\xD2AYhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/dialogflowB\xE7\x03\x0A\x1Ecom.google.cloud.dialogflow.v2B\x0CSessionProtoP\x01Z>cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb\xA2\x02\x02DF\xAA\x02\x1AGoogle.Cloud.Dialogflow.V2\xEAA\xD1\x02\x0A!dialogflow.googleapis.com/Session\x12+projects/{project}/agent/sessions/{session}\x12Sprojects/{project}/agent/environments/{environment}/users/{user}/sessions/{session}\x12@projects/{project}/locations/{location}/agent/sessions/{session}\x12hprojects/{project}/locations/{location}/agent/environments/{environment}/users/{user}/sessions/{session}b\x06proto3"
+ "\x0A\xED2\x0A(google/cloud/dialogflow/v2/session.proto\x12\x1Agoogle.cloud.dialogflow.v2\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x19google/api/resource.proto\x1A-google/cloud/dialogflow/v2/audio_config.proto\x1A(google/cloud/dialogflow/v2/context.proto\x1A'google/cloud/dialogflow/v2/intent.proto\x1A4google/cloud/dialogflow/v2/session_entity_type.proto\x1A\x1Egoogle/protobuf/duration.proto\x1A google/protobuf/field_mask.proto\x1A\x1Cgoogle/protobuf/struct.proto\x1A\x17google/rpc/status.proto\x1A\x18google/type/latlng.proto\"\xF5\x02\x0A\x13DetectIntentRequest\x12:\x0A\x07session\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!dialogflow.googleapis.com/Session\x12A\x0A\x0Cquery_params\x18\x02 \x01(\x0B2+.google.cloud.dialogflow.v2.QueryParameters\x12@\x0A\x0Bquery_input\x18\x03 \x01(\x0B2&.google.cloud.dialogflow.v2.QueryInputB\x03\xE0A\x02\x12J\x0A\x13output_audio_config\x18\x04 \x01(\x0B2-.google.cloud.dialogflow.v2.OutputAudioConfig\x12<\x0A\x18output_audio_config_mask\x18\x07 \x01(\x0B2\x1A.google.protobuf.FieldMask\x12\x13\x0A\x0Binput_audio\x18\x05 \x01(\x0C\"\xF8\x01\x0A\x14DetectIntentResponse\x12\x13\x0A\x0Bresponse_id\x18\x01 \x01(\x09\x12=\x0A\x0Cquery_result\x18\x02 \x01(\x0B2'.google.cloud.dialogflow.v2.QueryResult\x12*\x0A\x0Ewebhook_status\x18\x03 \x01(\x0B2\x12.google.rpc.Status\x12\x14\x0A\x0Coutput_audio\x18\x04 \x01(\x0C\x12J\x0A\x13output_audio_config\x18\x06 \x01(\x0B2-.google.cloud.dialogflow.v2.OutputAudioConfig\"\x9F\x04\x0A\x0FQueryParameters\x12\x11\x0A\x09time_zone\x18\x01 \x01(\x09\x12)\x0A\x0Cgeo_location\x18\x02 \x01(\x0B2\x13.google.type.LatLng\x125\x0A\x08contexts\x18\x03 \x03(\x0B2#.google.cloud.dialogflow.v2.Context\x12\x16\x0A\x0Ereset_contexts\x18\x04 \x01(\x08\x12K\x0A\x14session_entity_types\x18\x05 \x03(\x0B2-.google.cloud.dialogflow.v2.SessionEntityType\x12(\x0A\x07payload\x18\x06 \x01(\x0B2\x17.google.protobuf.Struct\x12e\x0A!sentiment_analysis_request_config\x18\x0A \x01(\x0B2:.google.cloud.dialogflow.v2.SentimentAnalysisRequestConfig\x12X\x0A\x0Fwebhook_headers\x18\x0E \x03(\x0B2?.google.cloud.dialogflow.v2.QueryParameters.WebhookHeadersEntry\x12\x10\x0A\x08platform\x18\x12 \x01(\x09\x1A5\x0A\x13WebhookHeadersEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01\"\xCB\x01\x0A\x0AQueryInput\x12D\x0A\x0Caudio_config\x18\x01 \x01(\x0B2,.google.cloud.dialogflow.v2.InputAudioConfigH\x00\x125\x0A\x04text\x18\x02 \x01(\x0B2%.google.cloud.dialogflow.v2.TextInputH\x00\x127\x0A\x05event\x18\x03 \x01(\x0B2&.google.cloud.dialogflow.v2.EventInputH\x00B\x07\x0A\x05input\"\xAE\x05\x0A\x0BQueryResult\x12\x12\x0A\x0Aquery_text\x18\x01 \x01(\x09\x12\x15\x0A\x0Dlanguage_code\x18\x0F \x01(\x09\x12%\x0A\x1Dspeech_recognition_confidence\x18\x02 \x01(\x02\x12\x0E\x0A\x06action\x18\x03 \x01(\x09\x12+\x0A\x0Aparameters\x18\x04 \x01(\x0B2\x17.google.protobuf.Struct\x12#\x0A\x1Ball_required_params_present\x18\x05 \x01(\x08\x12\x1C\x0A\x14cancels_slot_filling\x18\x15 \x01(\x08\x12\x18\x0A\x10fulfillment_text\x18\x06 \x01(\x09\x12H\x0A\x14fulfillment_messages\x18\x07 \x03(\x0B2*.google.cloud.dialogflow.v2.Intent.Message\x12\x16\x0A\x0Ewebhook_source\x18\x08 \x01(\x09\x120\x0A\x0Fwebhook_payload\x18\x09 \x01(\x0B2\x17.google.protobuf.Struct\x12<\x0A\x0Foutput_contexts\x18\x0A \x03(\x0B2#.google.cloud.dialogflow.v2.Context\x122\x0A\x06intent\x18\x0B \x01(\x0B2\".google.cloud.dialogflow.v2.Intent\x12#\x0A\x1Bintent_detection_confidence\x18\x0C \x01(\x02\x120\x0A\x0Fdiagnostic_info\x18\x0E \x01(\x0B2\x17.google.protobuf.Struct\x12V\x0A\x19sentiment_analysis_result\x18\x11 \x01(\x0B23.google.cloud.dialogflow.v2.SentimentAnalysisResult\"\xBB\x03\x0A\x1CStreamingDetectIntentRequest\x12:\x0A\x07session\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!dialogflow.googleapis.com/Session\x12A\x0A\x0Cquery_params\x18\x02 \x01(\x0B2+.google.cloud.dialogflow.v2.QueryParameters\x12@\x0A\x0Bquery_input\x18\x03 \x01(\x0B2&.google.cloud.dialogflow.v2.QueryInputB\x03\xE0A\x02\x12\x1C\x0A\x10single_utterance\x18\x04 \x01(\x08B\x02\x18\x01\x12J\x0A\x13output_audio_config\x18\x05 \x01(\x0B2-.google.cloud.dialogflow.v2.OutputAudioConfig\x12<\x0A\x18output_audio_config_mask\x18\x07 \x01(\x0B2\x1A.google.protobuf.FieldMask\x12\x13\x0A\x0Binput_audio\x18\x06 \x01(\x0C\x12\x1D\x0A\x15enable_debugging_info\x18\x08 \x01(\x08\"\xB0\x07\x0A\x1ECloudConversationDebuggingInfo\x12\x19\x0A\x11audio_data_chunks\x18\x01 \x01(\x05\x129\x0A\x16result_end_time_offset\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\x127\x0A\x14first_audio_duration\x18\x03 \x01(\x0B2\x19.google.protobuf.Duration\x12\x18\x0A\x10single_utterance\x18\x05 \x01(\x08\x12C\x0A speech_partial_results_end_times\x18\x06 \x03(\x0B2\x19.google.protobuf.Duration\x12A\x0A\x1Espeech_final_results_end_times\x18\x07 \x03(\x0B2\x19.google.protobuf.Duration\x12\x19\x0A\x11partial_responses\x18\x08 \x01(\x05\x12,\x0A\$speaker_id_passive_latency_ms_offset\x18\x09 \x01(\x05\x12\x1F\x0A\x17bargein_event_triggered\x18\x0A \x01(\x08\x12\x1F\x0A\x17speech_single_utterance\x18\x0B \x01(\x08\x12=\x0A\x1Adtmf_partial_results_times\x18\x0C \x03(\x0B2\x19.google.protobuf.Duration\x12;\x0A\x18dtmf_final_results_times\x18\x0D \x03(\x0B2\x19.google.protobuf.Duration\x12C\x0A single_utterance_end_time_offset\x18\x0E \x01(\x0B2\x19.google.protobuf.Duration\x124\x0A\x11no_speech_timeout\x18\x0F \x01(\x0B2\x19.google.protobuf.Duration\x126\x0A\x13endpointing_timeout\x18\x13 \x01(\x0B2\x19.google.protobuf.Duration\x12\x15\x0A\x0Dis_input_text\x18\x10 \x01(\x08\x12@\x0A\x1Dclient_half_close_time_offset\x18\x11 \x01(\x0B2\x19.google.protobuf.Duration\x12J\x0A'client_half_close_streaming_time_offset\x18\x12 \x01(\x0B2\x19.google.protobuf.Duration\"\xA9\x03\x0A\x1DStreamingDetectIntentResponse\x12\x13\x0A\x0Bresponse_id\x18\x01 \x01(\x09\x12R\x0A\x12recognition_result\x18\x02 \x01(\x0B26.google.cloud.dialogflow.v2.StreamingRecognitionResult\x12=\x0A\x0Cquery_result\x18\x03 \x01(\x0B2'.google.cloud.dialogflow.v2.QueryResult\x12*\x0A\x0Ewebhook_status\x18\x04 \x01(\x0B2\x12.google.rpc.Status\x12\x14\x0A\x0Coutput_audio\x18\x05 \x01(\x0C\x12J\x0A\x13output_audio_config\x18\x06 \x01(\x0B2-.google.cloud.dialogflow.v2.OutputAudioConfig\x12R\x0A\x0Edebugging_info\x18\x08 \x01(\x0B2:.google.cloud.dialogflow.v2.CloudConversationDebuggingInfo\"\xFC\x03\x0A\x1AStreamingRecognitionResult\x12X\x0A\x0Cmessage_type\x18\x01 \x01(\x0E2B.google.cloud.dialogflow.v2.StreamingRecognitionResult.MessageType\x12\x12\x0A\x0Atranscript\x18\x02 \x01(\x09\x12\x10\x0A\x08is_final\x18\x03 \x01(\x08\x12\x12\x0A\x0Aconfidence\x18\x04 \x01(\x02\x12D\x0A\x10speech_word_info\x18\x07 \x03(\x0B2*.google.cloud.dialogflow.v2.SpeechWordInfo\x124\x0A\x11speech_end_offset\x18\x08 \x01(\x0B2\x19.google.protobuf.Duration\x12\x15\x0A\x0Dlanguage_code\x18\x0A \x01(\x09\"\xB6\x01\x0A\x0BMessageType\x12\x1C\x0A\x18MESSAGE_TYPE_UNSPECIFIED\x10\x00\x12\x0E\x0A\x0ATRANSCRIPT\x10\x01\x12\x0F\x0A\x0BDTMF_DIGITS\x10\x03\x12\x1B\x0A\x17END_OF_SINGLE_UTTERANCE\x10\x02\x12\x17\x0A\x13PARTIAL_DTMF_DIGITS\x10\x04\x12\x19\x0A\x15SPEECH_ACTIVITY_BEGIN\x10\x05\x12\x17\x0A\x13SPEECH_ACTIVITY_END\x10\x06\":\x0A\x09TextInput\x12\x11\x0A\x04text\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x1A\x0A\x0Dlanguage_code\x18\x02 \x01(\x09B\x03\xE0A\x02\"h\x0A\x0AEventInput\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x02\x12+\x0A\x0Aparameters\x18\x02 \x01(\x0B2\x17.google.protobuf.Struct\x12\x1A\x0A\x0Dlanguage_code\x18\x03 \x01(\x09B\x03\xE0A\x02\"F\x0A\x1ESentimentAnalysisRequestConfig\x12\$\x0A\x1Canalyze_query_text_sentiment\x18\x01 \x01(\x08\"^\x0A\x17SentimentAnalysisResult\x12C\x0A\x14query_text_sentiment\x18\x01 \x01(\x0B2%.google.cloud.dialogflow.v2.Sentiment\"-\x0A\x09Sentiment\x12\x0D\x0A\x05score\x18\x01 \x01(\x02\x12\x11\x0A\x09magnitude\x18\x02 \x01(\x022\xE5\x05\x0A\x08Sessions\x12\xC9\x03\x0A\x0CDetectIntent\x12/.google.cloud.dialogflow.v2.DetectIntentRequest\x1A0.google.cloud.dialogflow.v2.DetectIntentResponse\"\xD5\x02\xDAA\x13session,query_input\x82\xD3\xE4\x93\x02\xB8\x02\"6/v2/{session=projects/*/agent/sessions/*}:detectIntent:\x01*ZR\"M/v2/{session=projects/*/agent/environments/*/users/*/sessions/*}:detectIntent:\x01*ZG\"B/v2/{session=projects/*/locations/*/agent/sessions/*}:detectIntent:\x01*Z^\"Y/v2/{session=projects/*/locations/*/agent/environments/*/users/*/sessions/*}:detectIntent:\x01*\x12\x92\x01\x0A\x15StreamingDetectIntent\x128.google.cloud.dialogflow.v2.StreamingDetectIntentRequest\x1A9.google.cloud.dialogflow.v2.StreamingDetectIntentResponse\"\x00(\x010\x01\x1Ax\xCAA\x19dialogflow.googleapis.com\xD2AYhttps://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/dialogflowB\xE7\x03\x0A\x1Ecom.google.cloud.dialogflow.v2B\x0CSessionProtoP\x01Z>cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb\xA2\x02\x02DF\xAA\x02\x1AGoogle.Cloud.Dialogflow.V2\xEAA\xD1\x02\x0A!dialogflow.googleapis.com/Session\x12+projects/{project}/agent/sessions/{session}\x12Sprojects/{project}/agent/environments/{environment}/users/{user}/sessions/{session}\x12@projects/{project}/locations/{location}/agent/sessions/{session}\x12hprojects/{project}/locations/{location}/agent/environments/{environment}/users/{user}/sessions/{session}b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/Dialogflow/metadata/V2/ToolCall.php b/Dialogflow/metadata/V2/ToolCall.php
index b7d6c738c7e2..d7eb711e6160 100644
--- a/Dialogflow/metadata/V2/ToolCall.php
+++ b/Dialogflow/metadata/V2/ToolCall.php
@@ -19,7 +19,7 @@ public static function initOnce() {
\GPBMetadata\Google\Protobuf\Struct::initOnce();
\GPBMetadata\Google\Protobuf\Timestamp::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\x90\x0B\x0A*google/cloud/dialogflow/v2/tool_call.proto\x12\x1Agoogle.cloud.dialogflow.v2\x1A\x19google/api/resource.proto\x1A\x1Cgoogle/protobuf/struct.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\"\xD8\x04\x0A\x08ToolCall\x126\x0A\x04tool\x18\x01 \x01(\x09B&\xE0A\x01\xFAA \x0A\x1Edialogflow.googleapis.com/ToolH\x00\x123\x0A\x08ces_tool\x18\x0B \x01(\x09B\x1F\xE0A\x01\xFAA\x19\x0A\x17ces.googleapis.com/ToolH\x00\x129\x0A\x0Bces_toolset\x18\x0C \x01(\x09B\"\xE0A\x01\xFAA\x1C\x0A\x1Aces.googleapis.com/ToolsetH\x00\x121\x0A\x07ces_app\x18\x08 \x01(\x09B\x1E\xE0A\x01\xFAA\x18\x0A\x16ces.googleapis.com/AppH\x00\x12\x1E\x0A\x11tool_display_name\x18\x09 \x01(\x09B\x03\xE0A\x01\x12!\x0A\x14tool_display_details\x18\x0A \x01(\x09B\x03\xE0A\x01\x12\x13\x0A\x06action\x18\x02 \x01(\x09B\x03\xE0A\x01\x126\x0A\x10input_parameters\x18\x03 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x124\x0A\x0Bcreate_time\x18\x04 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x1A\x0A\x0Danswer_record\x18\x06 \x01(\x09B\x03\xE0A\x01\x12>\x0A\x05state\x18\x07 \x01(\x0E2*.google.cloud.dialogflow.v2.ToolCall.StateB\x03\xE0A\x03\"E\x0A\x05State\x12\x15\x0A\x11STATE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09TRIGGERED\x10\x01\x12\x16\x0A\x12NEEDS_CONFIRMATION\x10\x02B\x08\x0A\x06source\"\xF2\x03\x0A\x0EToolCallResult\x126\x0A\x04tool\x18\x01 \x01(\x09B&\xE0A\x01\xFAA \x0A\x1Edialogflow.googleapis.com/ToolH\x00\x129\x0A\x0Bces_toolset\x18\x0D \x01(\x09B\"\xE0A\x01\xFAA\x1C\x0A\x1Aces.googleapis.com/ToolsetH\x00\x123\x0A\x08ces_tool\x18\x0C \x01(\x09B\x1F\xE0A\x01\xFAA\x19\x0A\x17ces.googleapis.com/ToolH\x00\x121\x0A\x07ces_app\x18\x0B \x01(\x09B\x1E\xE0A\x01\xFAA\x18\x0A\x16ces.googleapis.com/AppH\x00\x12\x13\x0A\x06action\x18\x02 \x01(\x09B\x03\xE0A\x01\x12A\x0A\x05error\x18\x03 \x01(\x0B20.google.cloud.dialogflow.v2.ToolCallResult.ErrorH\x01\x12\x15\x0A\x0Braw_content\x18\x05 \x01(\x0CH\x01\x12\x11\x0A\x07content\x18\x06 \x01(\x09H\x01\x124\x0A\x0Bcreate_time\x18\x07 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x1A\x0A\x0Danswer_record\x18\x09 \x01(\x09B\x03\xE0A\x01\x1A\x1D\x0A\x05Error\x12\x14\x0A\x07message\x18\x01 \x01(\x09B\x03\xE0A\x01B\x08\x0A\x06sourceB\x08\x0A\x06resultB\x93\x01\x0A\x1Ecom.google.cloud.dialogflow.v2B\x0DToolCallProtoP\x01Z>cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb\xA2\x02\x02DF\xAA\x02\x1AGoogle.Cloud.Dialogflow.V2b\x06proto3"
+ "\x0A\x9F\x0B\x0A*google/cloud/dialogflow/v2/tool_call.proto\x12\x1Agoogle.cloud.dialogflow.v2\x1A\x19google/api/resource.proto\x1A\x1Cgoogle/protobuf/struct.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\"\xD8\x04\x0A\x08ToolCall\x126\x0A\x04tool\x18\x01 \x01(\x09B&\xE0A\x01\xFAA \x0A\x1Edialogflow.googleapis.com/ToolH\x00\x123\x0A\x08ces_tool\x18\x0B \x01(\x09B\x1F\xE0A\x01\xFAA\x19\x0A\x17ces.googleapis.com/ToolH\x00\x129\x0A\x0Bces_toolset\x18\x0C \x01(\x09B\"\xE0A\x01\xFAA\x1C\x0A\x1Aces.googleapis.com/ToolsetH\x00\x121\x0A\x07ces_app\x18\x08 \x01(\x09B\x1E\xE0A\x01\xFAA\x18\x0A\x16ces.googleapis.com/AppH\x00\x12\x1E\x0A\x11tool_display_name\x18\x09 \x01(\x09B\x03\xE0A\x01\x12!\x0A\x14tool_display_details\x18\x0A \x01(\x09B\x03\xE0A\x01\x12\x13\x0A\x06action\x18\x02 \x01(\x09B\x03\xE0A\x01\x126\x0A\x10input_parameters\x18\x03 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x124\x0A\x0Bcreate_time\x18\x04 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x1A\x0A\x0Danswer_record\x18\x06 \x01(\x09B\x03\xE0A\x01\x12>\x0A\x05state\x18\x07 \x01(\x0E2*.google.cloud.dialogflow.v2.ToolCall.StateB\x03\xE0A\x03\"E\x0A\x05State\x12\x15\x0A\x11STATE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09TRIGGERED\x10\x01\x12\x16\x0A\x12NEEDS_CONFIRMATION\x10\x02B\x08\x0A\x06source\"\x81\x04\x0A\x0EToolCallResult\x126\x0A\x04tool\x18\x01 \x01(\x09B&\xE0A\x01\xFAA \x0A\x1Edialogflow.googleapis.com/ToolH\x00\x129\x0A\x0Bces_toolset\x18\x0D \x01(\x09B\"\xE0A\x01\xFAA\x1C\x0A\x1Aces.googleapis.com/ToolsetH\x00\x123\x0A\x08ces_tool\x18\x0C \x01(\x09B\x1F\xE0A\x01\xFAA\x19\x0A\x17ces.googleapis.com/ToolH\x00\x121\x0A\x07ces_app\x18\x0B \x01(\x09B\x1E\xE0A\x01\xFAA\x18\x0A\x16ces.googleapis.com/AppH\x00\x12\x13\x0A\x06action\x18\x02 \x01(\x09B\x03\xE0A\x01\x12F\x0A\x05error\x18\x03 \x01(\x0B20.google.cloud.dialogflow.v2.ToolCallResult.ErrorB\x03\xE0A\x01H\x01\x12\x1A\x0A\x0Braw_content\x18\x05 \x01(\x0CB\x03\xE0A\x01H\x01\x12\x16\x0A\x07content\x18\x06 \x01(\x09B\x03\xE0A\x01H\x01\x124\x0A\x0Bcreate_time\x18\x07 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x1A\x0A\x0Danswer_record\x18\x09 \x01(\x09B\x03\xE0A\x01\x1A\x1D\x0A\x05Error\x12\x14\x0A\x07message\x18\x01 \x01(\x09B\x03\xE0A\x01B\x08\x0A\x06sourceB\x08\x0A\x06resultB\x93\x01\x0A\x1Ecom.google.cloud.dialogflow.v2B\x0DToolCallProtoP\x01Z>cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb\xA2\x02\x02DF\xAA\x02\x1AGoogle.Cloud.Dialogflow.V2b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/Dialogflow/src/V2/InputAudioConfig.php b/Dialogflow/src/V2/InputAudioConfig.php
index 7f233f8d5f40..db794454462d 100644
--- a/Dialogflow/src/V2/InputAudioConfig.php
+++ b/Dialogflow/src/V2/InputAudioConfig.php
@@ -106,6 +106,14 @@ class InputAudioConfig extends \Google\Protobuf\Internal\Message
* Generated from protobuf field bool single_utterance = 8;
*/
protected $single_utterance = false;
+ /**
+ * Optional. If `true`, responses with voice activity speech events will be
+ * returned as they are detected.
+ * Note: This setting is relevant only for streaming methods.
+ *
+ * Generated from protobuf field bool enable_voice_activity_events = 27 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $enable_voice_activity_events = false;
/**
* Only used in
* [Participants.AnalyzeContent][google.cloud.dialogflow.v2.Participants.AnalyzeContent]
@@ -199,6 +207,10 @@ class InputAudioConfig extends \Google\Protobuf\Internal\Message
* Note: This setting is relevant only for streaming methods.
* Note: When specified, InputAudioConfig.single_utterance takes precedence
* over StreamingDetectIntentRequest.single_utterance.
+ * @type bool $enable_voice_activity_events
+ * Optional. If `true`, responses with voice activity speech events will be
+ * returned as they are detected.
+ * Note: This setting is relevant only for streaming methods.
* @type bool $disable_no_speech_recognized_event
* Only used in
* [Participants.AnalyzeContent][google.cloud.dialogflow.v2.Participants.AnalyzeContent]
@@ -536,6 +548,36 @@ public function setSingleUtterance($var)
return $this;
}
+ /**
+ * Optional. If `true`, responses with voice activity speech events will be
+ * returned as they are detected.
+ * Note: This setting is relevant only for streaming methods.
+ *
+ * Generated from protobuf field bool enable_voice_activity_events = 27 [(.google.api.field_behavior) = OPTIONAL];
+ * @return bool
+ */
+ public function getEnableVoiceActivityEvents()
+ {
+ return $this->enable_voice_activity_events;
+ }
+
+ /**
+ * Optional. If `true`, responses with voice activity speech events will be
+ * returned as they are detected.
+ * Note: This setting is relevant only for streaming methods.
+ *
+ * Generated from protobuf field bool enable_voice_activity_events = 27 [(.google.api.field_behavior) = OPTIONAL];
+ * @param bool $var
+ * @return $this
+ */
+ public function setEnableVoiceActivityEvents($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->enable_voice_activity_events = $var;
+
+ return $this;
+ }
+
/**
* Only used in
* [Participants.AnalyzeContent][google.cloud.dialogflow.v2.Participants.AnalyzeContent]
diff --git a/Dialogflow/src/V2/SearchKnowledgeDebugInfo.php b/Dialogflow/src/V2/SearchKnowledgeDebugInfo.php
index 6e8887ae08c7..b85cee4ab0b7 100644
--- a/Dialogflow/src/V2/SearchKnowledgeDebugInfo.php
+++ b/Dialogflow/src/V2/SearchKnowledgeDebugInfo.php
@@ -40,6 +40,12 @@ class SearchKnowledgeDebugInfo extends \Google\Protobuf\Internal\Message
* Generated from protobuf field .google.cloud.dialogflow.v2.ServiceLatency service_latency = 4;
*/
protected $service_latency = null;
+ /**
+ * Optional. Debug info from the Customer Engagement Suite (CES) execution.
+ *
+ * Generated from protobuf field .google.protobuf.Struct ces_debug_info = 5 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $ces_debug_info = null;
/**
* Constructor.
@@ -56,6 +62,8 @@ class SearchKnowledgeDebugInfo extends \Google\Protobuf\Internal\Message
* Information about parameters ingested for search knowledge.
* @type \Google\Cloud\Dialogflow\V2\ServiceLatency $service_latency
* The latency of the service.
+ * @type \Google\Protobuf\Struct $ces_debug_info
+ * Optional. Debug info from the Customer Engagement Suite (CES) execution.
* }
*/
public function __construct($data = NULL) {
@@ -199,5 +207,41 @@ public function setServiceLatency($var)
return $this;
}
+ /**
+ * Optional. Debug info from the Customer Engagement Suite (CES) execution.
+ *
+ * Generated from protobuf field .google.protobuf.Struct ces_debug_info = 5 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Protobuf\Struct|null
+ */
+ public function getCesDebugInfo()
+ {
+ return $this->ces_debug_info;
+ }
+
+ public function hasCesDebugInfo()
+ {
+ return isset($this->ces_debug_info);
+ }
+
+ public function clearCesDebugInfo()
+ {
+ unset($this->ces_debug_info);
+ }
+
+ /**
+ * Optional. Debug info from the Customer Engagement Suite (CES) execution.
+ *
+ * Generated from protobuf field .google.protobuf.Struct ces_debug_info = 5 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Protobuf\Struct $var
+ * @return $this
+ */
+ public function setCesDebugInfo($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Struct::class);
+ $this->ces_debug_info = $var;
+
+ return $this;
+ }
+
}
diff --git a/Dialogflow/src/V2/StreamingRecognitionResult/MessageType.php b/Dialogflow/src/V2/StreamingRecognitionResult/MessageType.php
index d62c45eb6020..1dae82d484eb 100644
--- a/Dialogflow/src/V2/StreamingRecognitionResult/MessageType.php
+++ b/Dialogflow/src/V2/StreamingRecognitionResult/MessageType.php
@@ -25,6 +25,12 @@ class MessageType
* Generated from protobuf enum TRANSCRIPT = 1;
*/
const TRANSCRIPT = 1;
+ /**
+ * Message contains DTMF digits.
+ *
+ * Generated from protobuf enum DTMF_DIGITS = 3;
+ */
+ const DTMF_DIGITS = 3;
/**
* This event indicates that the server has detected the end of the user's
* speech utterance and expects no additional inputs.
@@ -38,11 +44,39 @@ class MessageType
* Generated from protobuf enum END_OF_SINGLE_UTTERANCE = 2;
*/
const END_OF_SINGLE_UTTERANCE = 2;
+ /**
+ * Message contains DTMF digits. Before a message with DTMF_DIGITS is sent,
+ * a message with PARTIAL_DTMF_DIGITS may be sent with DTMF digits collected
+ * up to the time of sending, which represents an intermediate result.
+ *
+ * Generated from protobuf enum PARTIAL_DTMF_DIGITS = 4;
+ */
+ const PARTIAL_DTMF_DIGITS = 4;
+ /**
+ * This event indicates that the server has detected the beginning of human
+ * voice activity in the stream. This event can be returned multiple times
+ * if speech starts and stops repeatedly throughout the stream.
+ *
+ * Generated from protobuf enum SPEECH_ACTIVITY_BEGIN = 5;
+ */
+ const SPEECH_ACTIVITY_BEGIN = 5;
+ /**
+ * This event indicates that the server has detected the end of human voice
+ * activity in the stream. This event can be returned multiple times if
+ * speech starts and stops repeatedly throughout the stream.
+ *
+ * Generated from protobuf enum SPEECH_ACTIVITY_END = 6;
+ */
+ const SPEECH_ACTIVITY_END = 6;
private static $valueToName = [
self::MESSAGE_TYPE_UNSPECIFIED => 'MESSAGE_TYPE_UNSPECIFIED',
self::TRANSCRIPT => 'TRANSCRIPT',
+ self::DTMF_DIGITS => 'DTMF_DIGITS',
self::END_OF_SINGLE_UTTERANCE => 'END_OF_SINGLE_UTTERANCE',
+ self::PARTIAL_DTMF_DIGITS => 'PARTIAL_DTMF_DIGITS',
+ self::SPEECH_ACTIVITY_BEGIN => 'SPEECH_ACTIVITY_BEGIN',
+ self::SPEECH_ACTIVITY_END => 'SPEECH_ACTIVITY_END',
];
public static function name($value)
diff --git a/Dialogflow/src/V2/ToolCallResult.php b/Dialogflow/src/V2/ToolCallResult.php
index 065ac453f0e8..e730627b8021 100644
--- a/Dialogflow/src/V2/ToolCallResult.php
+++ b/Dialogflow/src/V2/ToolCallResult.php
@@ -61,12 +61,12 @@ class ToolCallResult extends \Google\Protobuf\Internal\Message
* @type string $action
* Optional. The name of the tool's action associated with this call.
* @type \Google\Cloud\Dialogflow\V2\ToolCallResult\Error $error
- * The tool call's error.
+ * Optional. The tool call's error.
* @type string $raw_content
- * Only populated if the response content is not utf-8 encoded.
+ * Optional. Only populated if the response content is not utf-8 encoded.
* (by definition byte fields are base64 encoded).
* @type string $content
- * Only populated if the response content is utf-8 encoded.
+ * Optional. Only populated if the response content is utf-8 encoded.
* @type \Google\Protobuf\Timestamp $create_time
* Output only. Create time of the tool call result.
* @type string $answer_record
@@ -245,9 +245,9 @@ public function setAction($var)
}
/**
- * The tool call's error.
+ * Optional. The tool call's error.
*
- * Generated from protobuf field .google.cloud.dialogflow.v2.ToolCallResult.Error error = 3;
+ * Generated from protobuf field .google.cloud.dialogflow.v2.ToolCallResult.Error error = 3 [(.google.api.field_behavior) = OPTIONAL];
* @return \Google\Cloud\Dialogflow\V2\ToolCallResult\Error|null
*/
public function getError()
@@ -261,9 +261,9 @@ public function hasError()
}
/**
- * The tool call's error.
+ * Optional. The tool call's error.
*
- * Generated from protobuf field .google.cloud.dialogflow.v2.ToolCallResult.Error error = 3;
+ * Generated from protobuf field .google.cloud.dialogflow.v2.ToolCallResult.Error error = 3 [(.google.api.field_behavior) = OPTIONAL];
* @param \Google\Cloud\Dialogflow\V2\ToolCallResult\Error $var
* @return $this
*/
@@ -276,10 +276,10 @@ public function setError($var)
}
/**
- * Only populated if the response content is not utf-8 encoded.
+ * Optional. Only populated if the response content is not utf-8 encoded.
* (by definition byte fields are base64 encoded).
*
- * Generated from protobuf field bytes raw_content = 5;
+ * Generated from protobuf field bytes raw_content = 5 [(.google.api.field_behavior) = OPTIONAL];
* @return string
*/
public function getRawContent()
@@ -293,10 +293,10 @@ public function hasRawContent()
}
/**
- * Only populated if the response content is not utf-8 encoded.
+ * Optional. Only populated if the response content is not utf-8 encoded.
* (by definition byte fields are base64 encoded).
*
- * Generated from protobuf field bytes raw_content = 5;
+ * Generated from protobuf field bytes raw_content = 5 [(.google.api.field_behavior) = OPTIONAL];
* @param string $var
* @return $this
*/
@@ -309,9 +309,9 @@ public function setRawContent($var)
}
/**
- * Only populated if the response content is utf-8 encoded.
+ * Optional. Only populated if the response content is utf-8 encoded.
*
- * Generated from protobuf field string content = 6;
+ * Generated from protobuf field string content = 6 [(.google.api.field_behavior) = OPTIONAL];
* @return string
*/
public function getContent()
@@ -325,9 +325,9 @@ public function hasContent()
}
/**
- * Only populated if the response content is utf-8 encoded.
+ * Optional. Only populated if the response content is utf-8 encoded.
*
- * Generated from protobuf field string content = 6;
+ * Generated from protobuf field string content = 6 [(.google.api.field_behavior) = OPTIONAL];
* @param string $var
* @return $this
*/
diff --git a/DialogflowCx/metadata/V3/AudioConfig.php b/DialogflowCx/metadata/V3/AudioConfig.php
index 6f189ffa8884..ae87bfaffdea 100644
--- a/DialogflowCx/metadata/V3/AudioConfig.php
+++ b/DialogflowCx/metadata/V3/AudioConfig.php
@@ -18,7 +18,7 @@ public static function initOnce() {
\GPBMetadata\Google\Api\Resource::initOnce();
\GPBMetadata\Google\Protobuf\Duration::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xF6\x14\x0A0google/cloud/dialogflow/cx/v3/audio_config.proto\x12\x1Dgoogle.cloud.dialogflow.cx.v3\x1A\x19google/api/resource.proto\x1A\x1Egoogle/protobuf/duration.proto\"\x92\x01\x0A\x0ESpeechWordInfo\x12\x0C\x0A\x04word\x18\x03 \x01(\x09\x12/\x0A\x0Cstart_offset\x18\x01 \x01(\x0B2\x19.google.protobuf.Duration\x12-\x0A\x0Aend_offset\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\x12\x12\x0A\x0Aconfidence\x18\x04 \x01(\x02\"{\x0A\x0DBargeInConfig\x127\x0A\x14no_barge_in_duration\x18\x01 \x01(\x0B2\x19.google.protobuf.Duration\x121\x0A\x0Etotal_duration\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\"\x8D\x03\x0A\x10InputAudioConfig\x12I\x0A\x0Eaudio_encoding\x18\x01 \x01(\x0E2,.google.cloud.dialogflow.cx.v3.AudioEncodingB\x03\xE0A\x02\x12\x19\x0A\x11sample_rate_hertz\x18\x02 \x01(\x05\x12\x18\x0A\x10enable_word_info\x18\x0D \x01(\x08\x12\x14\x0A\x0Cphrase_hints\x18\x04 \x03(\x09\x12\x0D\x0A\x05model\x18\x07 \x01(\x09\x12H\x0A\x0Dmodel_variant\x18\x0A \x01(\x0E21.google.cloud.dialogflow.cx.v3.SpeechModelVariant\x12\x18\x0A\x10single_utterance\x18\x08 \x01(\x08\x12E\x0A\x0Fbarge_in_config\x18\x0F \x01(\x0B2,.google.cloud.dialogflow.cx.v3.BargeInConfig\x12)\x0A!opt_out_conformer_model_migration\x18\x1A \x01(\x08\"i\x0A\x14VoiceSelectionParams\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12C\x0A\x0Bssml_gender\x18\x02 \x01(\x0E2..google.cloud.dialogflow.cx.v3.SsmlVoiceGender\"\xB6\x01\x0A\x16SynthesizeSpeechConfig\x12\x15\x0A\x0Dspeaking_rate\x18\x01 \x01(\x01\x12\x0D\x0A\x05pitch\x18\x02 \x01(\x01\x12\x16\x0A\x0Evolume_gain_db\x18\x03 \x01(\x01\x12\x1A\x0A\x12effects_profile_id\x18\x05 \x03(\x09\x12B\x0A\x05voice\x18\x04 \x01(\x0B23.google.cloud.dialogflow.cx.v3.VoiceSelectionParams\"\xD8\x01\x0A\x11OutputAudioConfig\x12O\x0A\x0Eaudio_encoding\x18\x01 \x01(\x0E22.google.cloud.dialogflow.cx.v3.OutputAudioEncodingB\x03\xE0A\x02\x12\x19\x0A\x11sample_rate_hertz\x18\x02 \x01(\x05\x12W\x0A\x18synthesize_speech_config\x18\x03 \x01(\x0B25.google.cloud.dialogflow.cx.v3.SynthesizeSpeechConfig\"\x82\x02\x0A\x14TextToSpeechSettings\x12s\x0A\x19synthesize_speech_configs\x18\x01 \x03(\x0B2P.google.cloud.dialogflow.cx.v3.TextToSpeechSettings.SynthesizeSpeechConfigsEntry\x1Au\x0A\x1CSynthesizeSpeechConfigsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12D\x0A\x05value\x18\x02 \x01(\x0B25.google.cloud.dialogflow.cx.v3.SynthesizeSpeechConfig:\x028\x01*\x94\x02\x0A\x0DAudioEncoding\x12\x1E\x0A\x1AAUDIO_ENCODING_UNSPECIFIED\x10\x00\x12\x1C\x0A\x18AUDIO_ENCODING_LINEAR_16\x10\x01\x12\x17\x0A\x13AUDIO_ENCODING_FLAC\x10\x02\x12\x18\x0A\x14AUDIO_ENCODING_MULAW\x10\x03\x12\x16\x0A\x12AUDIO_ENCODING_AMR\x10\x04\x12\x19\x0A\x15AUDIO_ENCODING_AMR_WB\x10\x05\x12\x1B\x0A\x17AUDIO_ENCODING_OGG_OPUS\x10\x06\x12)\x0A%AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE\x10\x07\x12\x17\x0A\x13AUDIO_ENCODING_ALAW\x10\x08*v\x0A\x12SpeechModelVariant\x12\$\x0A SPEECH_MODEL_VARIANT_UNSPECIFIED\x10\x00\x12\x16\x0A\x12USE_BEST_AVAILABLE\x10\x01\x12\x10\x0A\x0CUSE_STANDARD\x10\x02\x12\x10\x0A\x0CUSE_ENHANCED\x10\x03*\x8D\x01\x0A\x0FSsmlVoiceGender\x12!\x0A\x1DSSML_VOICE_GENDER_UNSPECIFIED\x10\x00\x12\x1A\x0A\x16SSML_VOICE_GENDER_MALE\x10\x01\x12\x1C\x0A\x18SSML_VOICE_GENDER_FEMALE\x10\x02\x12\x1D\x0A\x19SSML_VOICE_GENDER_NEUTRAL\x10\x03*\x8C\x02\x0A\x13OutputAudioEncoding\x12%\x0A!OUTPUT_AUDIO_ENCODING_UNSPECIFIED\x10\x00\x12#\x0A\x1FOUTPUT_AUDIO_ENCODING_LINEAR_16\x10\x01\x12\x1D\x0A\x19OUTPUT_AUDIO_ENCODING_MP3\x10\x02\x12%\x0A!OUTPUT_AUDIO_ENCODING_MP3_64_KBPS\x10\x04\x12\"\x0A\x1EOUTPUT_AUDIO_ENCODING_OGG_OPUS\x10\x03\x12\x1F\x0A\x1BOUTPUT_AUDIO_ENCODING_MULAW\x10\x05\x12\x1E\x0A\x1AOUTPUT_AUDIO_ENCODING_ALAW\x10\x06B\x8B\x02\x0A!com.google.cloud.dialogflow.cx.v3B\x10AudioConfigProtoP\x01Z1cloud.google.com/go/dialogflow/cx/apiv3/cxpb;cxpb\xA2\x02\x02DF\xAA\x02\x1DGoogle.Cloud.Dialogflow.Cx.V3\xEA\x02!Google::Cloud::Dialogflow::CX::V3\xEAAU\x0A\x1Bautoml.googleapis.com/Model\x126projects/{project}/locations/{location}/models/{model}b\x06proto3"
+ "\x0A\xFA\x14\x0A0google/cloud/dialogflow/cx/v3/audio_config.proto\x12\x1Dgoogle.cloud.dialogflow.cx.v3\x1A\x19google/api/resource.proto\x1A\x1Egoogle/protobuf/duration.proto\"\x92\x01\x0A\x0ESpeechWordInfo\x12\x0C\x0A\x04word\x18\x03 \x01(\x09\x12/\x0A\x0Cstart_offset\x18\x01 \x01(\x0B2\x19.google.protobuf.Duration\x12-\x0A\x0Aend_offset\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\x12\x12\x0A\x0Aconfidence\x18\x04 \x01(\x02\"{\x0A\x0DBargeInConfig\x127\x0A\x14no_barge_in_duration\x18\x01 \x01(\x0B2\x19.google.protobuf.Duration\x121\x0A\x0Etotal_duration\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\"\x8D\x03\x0A\x10InputAudioConfig\x12I\x0A\x0Eaudio_encoding\x18\x01 \x01(\x0E2,.google.cloud.dialogflow.cx.v3.AudioEncodingB\x03\xE0A\x02\x12\x19\x0A\x11sample_rate_hertz\x18\x02 \x01(\x05\x12\x18\x0A\x10enable_word_info\x18\x0D \x01(\x08\x12\x14\x0A\x0Cphrase_hints\x18\x04 \x03(\x09\x12\x0D\x0A\x05model\x18\x07 \x01(\x09\x12H\x0A\x0Dmodel_variant\x18\x0A \x01(\x0E21.google.cloud.dialogflow.cx.v3.SpeechModelVariant\x12\x18\x0A\x10single_utterance\x18\x08 \x01(\x08\x12E\x0A\x0Fbarge_in_config\x18\x0F \x01(\x0B2,.google.cloud.dialogflow.cx.v3.BargeInConfig\x12)\x0A!opt_out_conformer_model_migration\x18\x1A \x01(\x08\"i\x0A\x14VoiceSelectionParams\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12C\x0A\x0Bssml_gender\x18\x02 \x01(\x0E2..google.cloud.dialogflow.cx.v3.SsmlVoiceGender\"\xB6\x01\x0A\x16SynthesizeSpeechConfig\x12\x15\x0A\x0Dspeaking_rate\x18\x01 \x01(\x01\x12\x0D\x0A\x05pitch\x18\x02 \x01(\x01\x12\x16\x0A\x0Evolume_gain_db\x18\x03 \x01(\x01\x12\x1A\x0A\x12effects_profile_id\x18\x05 \x03(\x09\x12B\x0A\x05voice\x18\x04 \x01(\x0B23.google.cloud.dialogflow.cx.v3.VoiceSelectionParams\"\xD8\x01\x0A\x11OutputAudioConfig\x12O\x0A\x0Eaudio_encoding\x18\x01 \x01(\x0E22.google.cloud.dialogflow.cx.v3.OutputAudioEncodingB\x03\xE0A\x02\x12\x19\x0A\x11sample_rate_hertz\x18\x02 \x01(\x05\x12W\x0A\x18synthesize_speech_config\x18\x03 \x01(\x0B25.google.cloud.dialogflow.cx.v3.SynthesizeSpeechConfig\"\x82\x02\x0A\x14TextToSpeechSettings\x12s\x0A\x19synthesize_speech_configs\x18\x01 \x03(\x0B2P.google.cloud.dialogflow.cx.v3.TextToSpeechSettings.SynthesizeSpeechConfigsEntry\x1Au\x0A\x1CSynthesizeSpeechConfigsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12D\x0A\x05value\x18\x02 \x01(\x0B25.google.cloud.dialogflow.cx.v3.SynthesizeSpeechConfig:\x028\x01*\x94\x02\x0A\x0DAudioEncoding\x12\x1E\x0A\x1AAUDIO_ENCODING_UNSPECIFIED\x10\x00\x12\x1C\x0A\x18AUDIO_ENCODING_LINEAR_16\x10\x01\x12\x17\x0A\x13AUDIO_ENCODING_FLAC\x10\x02\x12\x18\x0A\x14AUDIO_ENCODING_MULAW\x10\x03\x12\x16\x0A\x12AUDIO_ENCODING_AMR\x10\x04\x12\x19\x0A\x15AUDIO_ENCODING_AMR_WB\x10\x05\x12\x1B\x0A\x17AUDIO_ENCODING_OGG_OPUS\x10\x06\x12)\x0A%AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE\x10\x07\x12\x17\x0A\x13AUDIO_ENCODING_ALAW\x10\x08*v\x0A\x12SpeechModelVariant\x12\$\x0A SPEECH_MODEL_VARIANT_UNSPECIFIED\x10\x00\x12\x16\x0A\x12USE_BEST_AVAILABLE\x10\x01\x12\x10\x0A\x0CUSE_STANDARD\x10\x02\x12\x10\x0A\x0CUSE_ENHANCED\x10\x03*\x8D\x01\x0A\x0FSsmlVoiceGender\x12!\x0A\x1DSSML_VOICE_GENDER_UNSPECIFIED\x10\x00\x12\x1A\x0A\x16SSML_VOICE_GENDER_MALE\x10\x01\x12\x1C\x0A\x18SSML_VOICE_GENDER_FEMALE\x10\x02\x12\x1D\x0A\x19SSML_VOICE_GENDER_NEUTRAL\x10\x03*\x90\x02\x0A\x13OutputAudioEncoding\x12%\x0A!OUTPUT_AUDIO_ENCODING_UNSPECIFIED\x10\x00\x12#\x0A\x1FOUTPUT_AUDIO_ENCODING_LINEAR_16\x10\x01\x12!\x0A\x19OUTPUT_AUDIO_ENCODING_MP3\x10\x02\x1A\x02\x08\x01\x12%\x0A!OUTPUT_AUDIO_ENCODING_MP3_64_KBPS\x10\x04\x12\"\x0A\x1EOUTPUT_AUDIO_ENCODING_OGG_OPUS\x10\x03\x12\x1F\x0A\x1BOUTPUT_AUDIO_ENCODING_MULAW\x10\x05\x12\x1E\x0A\x1AOUTPUT_AUDIO_ENCODING_ALAW\x10\x06B\x8B\x02\x0A!com.google.cloud.dialogflow.cx.v3B\x10AudioConfigProtoP\x01Z1cloud.google.com/go/dialogflow/cx/apiv3/cxpb;cxpb\xA2\x02\x02DF\xAA\x02\x1DGoogle.Cloud.Dialogflow.Cx.V3\xEA\x02!Google::Cloud::Dialogflow::CX::V3\xEAAU\x0A\x1Bautoml.googleapis.com/Model\x126projects/{project}/locations/{location}/models/{model}b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/DialogflowCx/samples/V3/AgentsClient/list_locations.php b/DialogflowCx/samples/V3/AgentsClient/list_locations.php
index 9ebb11bcac42..4d58bfb8b1b7 100644
--- a/DialogflowCx/samples/V3/AgentsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/AgentsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/ChangelogsClient/list_locations.php b/DialogflowCx/samples/V3/ChangelogsClient/list_locations.php
index d76e255f33c2..223773b6f512 100644
--- a/DialogflowCx/samples/V3/ChangelogsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/ChangelogsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/DeploymentsClient/list_locations.php b/DialogflowCx/samples/V3/DeploymentsClient/list_locations.php
index f515a0347af2..429e21e90952 100644
--- a/DialogflowCx/samples/V3/DeploymentsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/DeploymentsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/EntityTypesClient/list_locations.php b/DialogflowCx/samples/V3/EntityTypesClient/list_locations.php
index d478b9c4bf59..5e7785a6ce89 100644
--- a/DialogflowCx/samples/V3/EntityTypesClient/list_locations.php
+++ b/DialogflowCx/samples/V3/EntityTypesClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/EnvironmentsClient/list_locations.php b/DialogflowCx/samples/V3/EnvironmentsClient/list_locations.php
index 7cbe3afba37c..dd099fb69ed6 100644
--- a/DialogflowCx/samples/V3/EnvironmentsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/EnvironmentsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/ExamplesClient/list_locations.php b/DialogflowCx/samples/V3/ExamplesClient/list_locations.php
index c057a585dab4..d6c9bf776505 100644
--- a/DialogflowCx/samples/V3/ExamplesClient/list_locations.php
+++ b/DialogflowCx/samples/V3/ExamplesClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/ExperimentsClient/list_locations.php b/DialogflowCx/samples/V3/ExperimentsClient/list_locations.php
index 27e10794043d..17016d23ae28 100644
--- a/DialogflowCx/samples/V3/ExperimentsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/ExperimentsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/FlowsClient/list_locations.php b/DialogflowCx/samples/V3/FlowsClient/list_locations.php
index e8438b259773..87dca6b7fb5b 100644
--- a/DialogflowCx/samples/V3/FlowsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/FlowsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/GeneratorsClient/list_locations.php b/DialogflowCx/samples/V3/GeneratorsClient/list_locations.php
index 4c8dd9f10a38..c1e424b4d70b 100644
--- a/DialogflowCx/samples/V3/GeneratorsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/GeneratorsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/IntentsClient/list_locations.php b/DialogflowCx/samples/V3/IntentsClient/list_locations.php
index 574e3d8fdb03..d37e6e5fb51b 100644
--- a/DialogflowCx/samples/V3/IntentsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/IntentsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/PagesClient/list_locations.php b/DialogflowCx/samples/V3/PagesClient/list_locations.php
index 5023101d09af..7a8e28a13702 100644
--- a/DialogflowCx/samples/V3/PagesClient/list_locations.php
+++ b/DialogflowCx/samples/V3/PagesClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/PlaybooksClient/list_locations.php b/DialogflowCx/samples/V3/PlaybooksClient/list_locations.php
index b448c1b6316c..54217b095a7c 100644
--- a/DialogflowCx/samples/V3/PlaybooksClient/list_locations.php
+++ b/DialogflowCx/samples/V3/PlaybooksClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/SecuritySettingsServiceClient/list_locations.php b/DialogflowCx/samples/V3/SecuritySettingsServiceClient/list_locations.php
index b6eba19c6470..2ddc3a7c5e6d 100644
--- a/DialogflowCx/samples/V3/SecuritySettingsServiceClient/list_locations.php
+++ b/DialogflowCx/samples/V3/SecuritySettingsServiceClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/SessionEntityTypesClient/list_locations.php b/DialogflowCx/samples/V3/SessionEntityTypesClient/list_locations.php
index 76682264080d..46803f072320 100644
--- a/DialogflowCx/samples/V3/SessionEntityTypesClient/list_locations.php
+++ b/DialogflowCx/samples/V3/SessionEntityTypesClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/SessionsClient/list_locations.php b/DialogflowCx/samples/V3/SessionsClient/list_locations.php
index adbec7d13d60..30beb2271e7e 100644
--- a/DialogflowCx/samples/V3/SessionsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/SessionsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/TestCasesClient/list_locations.php b/DialogflowCx/samples/V3/TestCasesClient/list_locations.php
index 7ea0228d7d61..3abcd054c3ec 100644
--- a/DialogflowCx/samples/V3/TestCasesClient/list_locations.php
+++ b/DialogflowCx/samples/V3/TestCasesClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/ToolsClient/list_locations.php b/DialogflowCx/samples/V3/ToolsClient/list_locations.php
index e42ec089ee72..f22b907476e9 100644
--- a/DialogflowCx/samples/V3/ToolsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/ToolsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/TransitionRouteGroupsClient/list_locations.php b/DialogflowCx/samples/V3/TransitionRouteGroupsClient/list_locations.php
index f1af4239963f..c819fa150835 100644
--- a/DialogflowCx/samples/V3/TransitionRouteGroupsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/TransitionRouteGroupsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/VersionsClient/list_locations.php b/DialogflowCx/samples/V3/VersionsClient/list_locations.php
index f0a38cb30dfe..d90702f845ab 100644
--- a/DialogflowCx/samples/V3/VersionsClient/list_locations.php
+++ b/DialogflowCx/samples/V3/VersionsClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/samples/V3/WebhooksClient/list_locations.php b/DialogflowCx/samples/V3/WebhooksClient/list_locations.php
index 38fd63ade0af..844858b3a2b1 100644
--- a/DialogflowCx/samples/V3/WebhooksClient/list_locations.php
+++ b/DialogflowCx/samples/V3/WebhooksClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/AgentsClient.php b/DialogflowCx/src/V3/Client/AgentsClient.php
index 9565921b95b0..cfb527a52bbb 100644
--- a/DialogflowCx/src/V3/Client/AgentsClient.php
+++ b/DialogflowCx/src/V3/Client/AgentsClient.php
@@ -836,9 +836,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/ChangelogsClient.php b/DialogflowCx/src/V3/Client/ChangelogsClient.php
index d7b655e5c251..2dd8cf552d43 100644
--- a/DialogflowCx/src/V3/Client/ChangelogsClient.php
+++ b/DialogflowCx/src/V3/Client/ChangelogsClient.php
@@ -340,9 +340,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/DeploymentsClient.php b/DialogflowCx/src/V3/Client/DeploymentsClient.php
index de2d76559b52..d6a7f5c4dedf 100644
--- a/DialogflowCx/src/V3/Client/DeploymentsClient.php
+++ b/DialogflowCx/src/V3/Client/DeploymentsClient.php
@@ -355,9 +355,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/EntityTypesClient.php b/DialogflowCx/src/V3/Client/EntityTypesClient.php
index 5297c0622fef..2095a2a3b2ff 100644
--- a/DialogflowCx/src/V3/Client/EntityTypesClient.php
+++ b/DialogflowCx/src/V3/Client/EntityTypesClient.php
@@ -546,9 +546,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/EnvironmentsClient.php b/DialogflowCx/src/V3/Client/EnvironmentsClient.php
index 12c9f5460cf1..095087add1ea 100644
--- a/DialogflowCx/src/V3/Client/EnvironmentsClient.php
+++ b/DialogflowCx/src/V3/Client/EnvironmentsClient.php
@@ -761,9 +761,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/ExamplesClient.php b/DialogflowCx/src/V3/Client/ExamplesClient.php
index 2a5e14fdaa2b..5cbfb6c30d64 100644
--- a/DialogflowCx/src/V3/Client/ExamplesClient.php
+++ b/DialogflowCx/src/V3/Client/ExamplesClient.php
@@ -475,9 +475,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/ExperimentsClient.php b/DialogflowCx/src/V3/Client/ExperimentsClient.php
index 50e05e3631b4..08ee2ef0589a 100644
--- a/DialogflowCx/src/V3/Client/ExperimentsClient.php
+++ b/DialogflowCx/src/V3/Client/ExperimentsClient.php
@@ -528,9 +528,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/FlowsClient.php b/DialogflowCx/src/V3/Client/FlowsClient.php
index 9b35994eeee8..1e42393f7f33 100644
--- a/DialogflowCx/src/V3/Client/FlowsClient.php
+++ b/DialogflowCx/src/V3/Client/FlowsClient.php
@@ -921,9 +921,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/GeneratorsClient.php b/DialogflowCx/src/V3/Client/GeneratorsClient.php
index bab6196cf67a..b997b61b406b 100644
--- a/DialogflowCx/src/V3/Client/GeneratorsClient.php
+++ b/DialogflowCx/src/V3/Client/GeneratorsClient.php
@@ -422,9 +422,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/IntentsClient.php b/DialogflowCx/src/V3/Client/IntentsClient.php
index 170b190f813e..2cfa4f054fa1 100644
--- a/DialogflowCx/src/V3/Client/IntentsClient.php
+++ b/DialogflowCx/src/V3/Client/IntentsClient.php
@@ -588,9 +588,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/PagesClient.php b/DialogflowCx/src/V3/Client/PagesClient.php
index cc0067654d28..32a6c8a98740 100644
--- a/DialogflowCx/src/V3/Client/PagesClient.php
+++ b/DialogflowCx/src/V3/Client/PagesClient.php
@@ -659,9 +659,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/PlaybooksClient.php b/DialogflowCx/src/V3/Client/PlaybooksClient.php
index 8fde8a7a4b9d..5272c21d747f 100644
--- a/DialogflowCx/src/V3/Client/PlaybooksClient.php
+++ b/DialogflowCx/src/V3/Client/PlaybooksClient.php
@@ -830,9 +830,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/SecuritySettingsServiceClient.php b/DialogflowCx/src/V3/Client/SecuritySettingsServiceClient.php
index bb43d7e5bdfd..7c471d274dc7 100644
--- a/DialogflowCx/src/V3/Client/SecuritySettingsServiceClient.php
+++ b/DialogflowCx/src/V3/Client/SecuritySettingsServiceClient.php
@@ -569,9 +569,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/SessionEntityTypesClient.php b/DialogflowCx/src/V3/Client/SessionEntityTypesClient.php
index b0612a1618d8..9de82b8e51e8 100644
--- a/DialogflowCx/src/V3/Client/SessionEntityTypesClient.php
+++ b/DialogflowCx/src/V3/Client/SessionEntityTypesClient.php
@@ -561,9 +561,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/SessionsClient.php b/DialogflowCx/src/V3/Client/SessionsClient.php
index eeafa1637bc6..b6d7caddcfae 100644
--- a/DialogflowCx/src/V3/Client/SessionsClient.php
+++ b/DialogflowCx/src/V3/Client/SessionsClient.php
@@ -829,9 +829,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/TestCasesClient.php b/DialogflowCx/src/V3/Client/TestCasesClient.php
index 1f9946187ebb..0d2ff0fdba9c 100644
--- a/DialogflowCx/src/V3/Client/TestCasesClient.php
+++ b/DialogflowCx/src/V3/Client/TestCasesClient.php
@@ -1047,9 +1047,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/ToolsClient.php b/DialogflowCx/src/V3/Client/ToolsClient.php
index 9b5b2ad03980..de033c57f0ba 100644
--- a/DialogflowCx/src/V3/Client/ToolsClient.php
+++ b/DialogflowCx/src/V3/Client/ToolsClient.php
@@ -641,9 +641,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/TransitionRouteGroupsClient.php b/DialogflowCx/src/V3/Client/TransitionRouteGroupsClient.php
index 661e625eec3b..ee2e09f0cf1a 100644
--- a/DialogflowCx/src/V3/Client/TransitionRouteGroupsClient.php
+++ b/DialogflowCx/src/V3/Client/TransitionRouteGroupsClient.php
@@ -656,9 +656,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/VersionsClient.php b/DialogflowCx/src/V3/Client/VersionsClient.php
index f1c682368472..e86702303132 100644
--- a/DialogflowCx/src/V3/Client/VersionsClient.php
+++ b/DialogflowCx/src/V3/Client/VersionsClient.php
@@ -563,9 +563,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/Client/WebhooksClient.php b/DialogflowCx/src/V3/Client/WebhooksClient.php
index 706ae3e51d70..35bfd80c8878 100644
--- a/DialogflowCx/src/V3/Client/WebhooksClient.php
+++ b/DialogflowCx/src/V3/Client/WebhooksClient.php
@@ -464,9 +464,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/DialogflowCx/src/V3/DetectIntentResponseView.php b/DialogflowCx/src/V3/DetectIntentResponseView.php
index 694f0dc28982..717897a7cf7d 100644
--- a/DialogflowCx/src/V3/DetectIntentResponseView.php
+++ b/DialogflowCx/src/V3/DetectIntentResponseView.php
@@ -30,6 +30,11 @@ class DetectIntentResponseView
* Basic response view omits the following fields:
* -
* [QueryResult.diagnostic_info][google.cloud.dialogflow.cx.v3.QueryResult.diagnostic_info]
+ * - [QueryResult.generative_info][]
+ * -
+ * [QueryResult.trace_blocks][google.cloud.dialogflow.cx.v3.QueryResult.trace_blocks]
+ * -
+ * [QueryResult.data_store_connection_signals][google.cloud.dialogflow.cx.v3.QueryResult.data_store_connection_signals]
*
* Generated from protobuf enum DETECT_INTENT_RESPONSE_VIEW_BASIC = 2;
*/
diff --git a/DialogflowCx/src/V3/OutputAudioEncoding.php b/DialogflowCx/src/V3/OutputAudioEncoding.php
index 996795c8626d..69b41ec66a87 100644
--- a/DialogflowCx/src/V3/OutputAudioEncoding.php
+++ b/DialogflowCx/src/V3/OutputAudioEncoding.php
@@ -28,9 +28,9 @@ class OutputAudioEncoding
*/
const OUTPUT_AUDIO_ENCODING_LINEAR_16 = 1;
/**
- * MP3 audio at 32kbps.
+ * MP3 audio at 64kbps.
*
- * Generated from protobuf enum OUTPUT_AUDIO_ENCODING_MP3 = 2;
+ * Generated from protobuf enum OUTPUT_AUDIO_ENCODING_MP3 = 2 [deprecated = true];
*/
const OUTPUT_AUDIO_ENCODING_MP3 = 2;
/**
diff --git a/Gax/composer.json b/Gax/composer.json
index bd5af2ac073e..29a87e21c873 100644
--- a/Gax/composer.json
+++ b/Gax/composer.json
@@ -9,7 +9,7 @@
"license": "BSD-3-Clause",
"require": {
"php": "^8.1",
- "google/auth": "^1.49",
+ "google/auth": "^1.52",
"google/grpc-gcp": "^0.4",
"grpc/grpc": "^1.13",
"google/protobuf": "^4.31||^5.34",
diff --git a/Gax/src/CredentialsWrapper.php b/Gax/src/CredentialsWrapper.php
index d6e90892b5a3..ff9ccc9c24d7 100644
--- a/Gax/src/CredentialsWrapper.php
+++ b/Gax/src/CredentialsWrapper.php
@@ -58,7 +58,6 @@ class CredentialsWrapper implements HeaderCredentialsInterface, ProjectIdProvide
/** @var callable $authHttpHandle */
private $authHttpHandler;
- private string $universeDomain;
private bool $hasCheckedUniverse = false;
/** @var int */
@@ -76,14 +75,13 @@ class CredentialsWrapper implements HeaderCredentialsInterface, ProjectIdProvide
public function __construct(
FetchAuthTokenInterface $credentialsFetcher,
?callable $authHttpHandler = null,
- string $universeDomain = GetUniverseDomainInterface::DEFAULT_UNIVERSE_DOMAIN
+ private string $universeDomain = GetUniverseDomainInterface::DEFAULT_UNIVERSE_DOMAIN,
) {
$this->credentialsFetcher = $credentialsFetcher;
$this->authHttpHandler = $authHttpHandler;
if (empty($universeDomain)) {
throw new ValidationException('The universe domain cannot be empty');
}
- $this->universeDomain = $universeDomain;
}
/**
@@ -116,6 +114,9 @@ public function __construct(
* @type bool $useJwtAccessWithScope
* Ensures service account credentials use JWT Access (also known as self-signed
* JWTs), even when user-defined scopes are supplied.
+ * @type bool $enableRegionalAccessBoundary
+ * Enable the Regional Access Boundary lookup in the credentials which sets the
+ * `x-allowed-locations` header in the request.
* }
* @param string $universeDomain The expected universe of the credentials. Defaults to
* "googleapis.com"
@@ -136,6 +137,7 @@ public static function build(
'quotaProject' => null,
'defaultScopes' => null,
'useJwtAccessWithScope' => true,
+ 'enableRegionalAccessBoundary' => false,
];
$keyFile = $args['keyFile'];
@@ -147,7 +149,8 @@ public static function build(
$args['authCacheOptions'],
$args['authCache'],
$args['quotaProject'],
- $args['defaultScopes']
+ $args['defaultScopes'],
+ $args['enableRegionalAccessBoundary'],
);
if ($loader instanceof FetchAuthTokenCache) {
$loader = $loader->getFetcher();
@@ -167,7 +170,8 @@ public static function build(
$loader = CredentialsLoader::makeCredentials(
$args['scopes'],
$keyFile,
- $args['defaultScopes']
+ $args['defaultScopes'],
+ $args['enableRegionalAccessBoundary'],
);
}
@@ -322,7 +326,8 @@ private static function buildApplicationDefaultCredentials(
?array $authCacheOptions = null,
?CacheItemPoolInterface $authCache = null,
$quotaProject = null,
- ?array $defaultScopes = null
+ ?array $defaultScopes = null,
+ bool $enableRegionalAccessBoundary = true,
) {
try {
return ApplicationDefaultCredentials::getCredentials(
@@ -331,7 +336,10 @@ private static function buildApplicationDefaultCredentials(
$authCacheOptions,
$authCache,
$quotaProject,
- $defaultScopes
+ $defaultScopes,
+ null, // $universeDomain
+ null, // $logger
+ $enableRegionalAccessBoundary,
);
} catch (DomainException $ex) {
throw new ValidationException('Could not construct ApplicationDefaultCredentials', $ex->getCode(), $ex);
diff --git a/Gax/src/GapicClientTrait.php b/Gax/src/GapicClientTrait.php
index 3bd91ece34b0..b269bb78baa7 100644
--- a/Gax/src/GapicClientTrait.php
+++ b/Gax/src/GapicClientTrait.php
@@ -344,10 +344,18 @@ private function setClientOptions(array $options)
$options['credentialsConfig']['quotaProject'] ?? null
);
} else {
+ $enableRegionalAccessBoundary = filter_var(
+ getenv('GOOGLE_AUTH_TRUST_BOUNDARY_ENABLE_EXPERIMENT'),
+ FILTER_VALIDATE_BOOLEAN
+ );
+ $isRegional = str_ends_with($options['apiEndpoint'], '.rep.googleapis.com')
+ || str_ends_with($options['apiEndpoint'], '.rep.sandbox.googleapis.com');
$this->credentialsWrapper = $this->createCredentialsWrapper(
$options['credentials'],
- $options['credentialsConfig'],
- $options['universeDomain']
+ $options['credentialsConfig'] + [
+ 'enableRegionalAccessBoundary' => $enableRegionalAccessBoundary && !$isRegional
+ ],
+ $options['universeDomain'],
);
}
diff --git a/Gax/tests/Unit/CredentialsWrapperTest.php b/Gax/tests/Unit/CredentialsWrapperTest.php
index d7d5a1c0979b..428957daf1b1 100644
--- a/Gax/tests/Unit/CredentialsWrapperTest.php
+++ b/Gax/tests/Unit/CredentialsWrapperTest.php
@@ -145,6 +145,34 @@ public function buildDataWithoutExplicitKeyFile()
quotaProject: $quotaProject
)),
],
+ [
+ ['enableRegionalAccessBoundary' => true],
+ new CredentialsWrapper(ApplicationDefaultCredentials::getCredentials(
+ null,
+ $authHttpHandler,
+ null,
+ $defaultAuthCache,
+ null,
+ null,
+ null,
+ null,
+ true, // $enableRegionalAccessBoundary
+ )),
+ ],
+ [
+ ['enableRegionalAccessBoundary' => false],
+ new CredentialsWrapper(ApplicationDefaultCredentials::getCredentials(
+ null,
+ $authHttpHandler,
+ null,
+ $defaultAuthCache,
+ null,
+ null,
+ null,
+ null,
+ false, // $enableRegionalAccessBoundary
+ )),
+ ],
];
$this->setEnv('GOOGLE_APPLICATION_CREDENTIALS', $appDefaultCreds);
diff --git a/Gax/tests/Unit/GapicClientTraitTest.php b/Gax/tests/Unit/GapicClientTraitTest.php
index fef2951d4197..51369ba18bab 100644
--- a/Gax/tests/Unit/GapicClientTraitTest.php
+++ b/Gax/tests/Unit/GapicClientTraitTest.php
@@ -896,6 +896,51 @@ public function setClientOptionsData()
];
}
+ /**
+ * @dataProvider buildClientOptionsRegionalEndpointData
+ * @runInSeparateProcess
+ * @preserveGlobalState disabled
+ */
+ public function testBuildClientOptionsRegionalEndpoint(?string $apiEndpoint, ?string $envVarValue, bool $rabEnabled)
+ {
+ if ($envVarValue !== null) {
+ putenv('GOOGLE_AUTH_TRUST_BOUNDARY_ENABLE_EXPERIMENT=' . $envVarValue);
+ }
+
+ $client = new class() extends StubGapicClient {
+ public array $capturedCredentialsConfig = [];
+
+ public function createCredentialsWrapper($credentials, array $credentialsConfig, string $universeDomain)
+ {
+ $this->capturedCredentialsConfig = $credentialsConfig;
+ return null;
+ }
+ };
+
+ $clientOptions = $client->buildClientOptions(
+ $apiEndpoint !== null ? ['apiEndpoint' => $apiEndpoint] : []
+ );
+ $client->setClientOptions($clientOptions);
+
+ $this->assertEquals(
+ $rabEnabled,
+ $client->capturedCredentialsConfig['enableRegionalAccessBoundary'] ?? null
+ );
+ }
+
+ public function buildClientOptionsRegionalEndpointData()
+ {
+ return [
+ ['test.googleapis.com', 'true', true],
+ ['test.rep.googleapis.com', 'true', false],
+ ['test.rep.sandbox.googleapis.com', 'true', false],
+ ['test.googleapis.com', 'false', false],
+ ['test.googleapis.com', null, false],
+ ['', 'true', true], // Empty endpoint case
+ [null, 'true', true], // Unset endpoint case
+ ];
+ }
+
/**
* @dataProvider buildRequestHeaderParams
*/
diff --git a/NetworkManagement/metadata/V1/ConnectivityTest.php b/NetworkManagement/metadata/V1/ConnectivityTest.php
index ef3fe1f7c983..91da9b4c8fad 100644
--- a/NetworkManagement/metadata/V1/ConnectivityTest.php
+++ b/NetworkManagement/metadata/V1/ConnectivityTest.php
@@ -20,7 +20,7 @@ public static function initOnce() {
\GPBMetadata\Google\Protobuf\Timestamp::initOnce();
\GPBMetadata\Google\Rpc\Status::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\x94\$\x0A9google/cloud/networkmanagement/v1/connectivity_test.proto\x12!google.cloud.networkmanagement.v1\x1A\x19google/api/resource.proto\x1A-google/cloud/networkmanagement/v1/trace.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\x1A\x17google/rpc/status.proto\"\xAE\x07\x0A\x10ConnectivityTest\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12\x13\x0A\x0Bdescription\x18\x02 \x01(\x09\x12@\x0A\x06source\x18\x03 \x01(\x0B2+.google.cloud.networkmanagement.v1.EndpointB\x03\xE0A\x02\x12E\x0A\x0Bdestination\x18\x04 \x01(\x0B2+.google.cloud.networkmanagement.v1.EndpointB\x03\xE0A\x02\x12\x10\x0A\x08protocol\x18\x05 \x01(\x09\x12\x18\x0A\x10related_projects\x18\x06 \x03(\x09\x12\x19\x0A\x0Cdisplay_name\x18\x07 \x01(\x09B\x03\xE0A\x03\x12O\x0A\x06labels\x18\x08 \x03(\x0B2?.google.cloud.networkmanagement.v1.ConnectivityTest.LabelsEntry\x124\x0A\x0Bcreate_time\x18\x0A \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bupdate_time\x18\x0B \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12Y\x0A\x14reachability_details\x18\x0C \x01(\x0B26.google.cloud.networkmanagement.v1.ReachabilityDetailsB\x03\xE0A\x03\x12O\x0A\x0Fprobing_details\x18\x0E \x01(\x0B21.google.cloud.networkmanagement.v1.ProbingDetailsB\x03\xE0A\x03\x12\x12\x0A\x0Around_trip\x18\x0F \x01(\x08\x12`\x0A\x1Breturn_reachability_details\x18\x10 \x01(\x0B26.google.cloud.networkmanagement.v1.ReachabilityDetailsB\x03\xE0A\x03\x12\x1E\x0A\x16bypass_firewall_checks\x18\x11 \x01(\x08\x1A-\x0A\x0BLabelsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01:t\xEAAq\x0A1networkmanagement.googleapis.com/ConnectivityTest\x12.google.cloud.networkmanagement.v1.ProbingDetails.EdgeLocation\x12\\\x0A\x0Eedge_responses\x18\x0A \x03(\x0B2D.google.cloud.networkmanagement.v1.ProbingDetails.SingleEdgeResponse\x12\x1A\x0A\x12probed_all_devices\x18\x0B \x01(\x08\x1A)\x0A\x0CEdgeLocation\x12\x19\x0A\x11metropolitan_area\x18\x01 \x01(\x09\x1A\xF1\x02\x0A\x12SingleEdgeResponse\x12O\x0A\x06result\x18\x01 \x01(\x0E2?.google.cloud.networkmanagement.v1.ProbingDetails.ProbingResult\x12\x18\x0A\x10sent_probe_count\x18\x02 \x01(\x05\x12\x1E\x0A\x16successful_probe_count\x18\x03 \x01(\x05\x12O\x0A\x0Fprobing_latency\x18\x04 \x01(\x0B26.google.cloud.networkmanagement.v1.LatencyDistribution\x12c\x0A\x1Bdestination_egress_location\x18\x05 \x01(\x0B2>.google.cloud.networkmanagement.v1.ProbingDetails.EdgeLocation\x12\x1A\x0A\x12destination_router\x18\x06 \x01(\x09\"\x80\x01\x0A\x0DProbingResult\x12\x1E\x0A\x1APROBING_RESULT_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09REACHABLE\x10\x01\x12\x0F\x0A\x0BUNREACHABLE\x10\x02\x12\x1D\x0A\x19REACHABILITY_INCONSISTENT\x10\x03\x12\x10\x0A\x0CUNDETERMINED\x10\x04\"g\x0A\x11ProbingAbortCause\x12#\x0A\x1FPROBING_ABORT_CAUSE_UNSPECIFIED\x10\x00\x12\x15\x0A\x11PERMISSION_DENIED\x10\x01\x12\x16\x0A\x12NO_SOURCE_LOCATION\x10\x02B\xFD\x01\x0A%com.google.cloud.networkmanagement.v1B\x0ETestOuterClassP\x01ZScloud.google.com/go/networkmanagement/apiv1/networkmanagementpb;networkmanagementpb\xAA\x02!Google.Cloud.NetworkManagement.V1\xCA\x02!Google\\Cloud\\NetworkManagement\\V1\xEA\x02\$Google::Cloud::NetworkManagement::V1b\x06proto3"
+ "\x0A\xB4\$\x0A9google/cloud/networkmanagement/v1/connectivity_test.proto\x12!google.cloud.networkmanagement.v1\x1A\x19google/api/resource.proto\x1A-google/cloud/networkmanagement/v1/trace.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\x1A\x17google/rpc/status.proto\"\xAE\x07\x0A\x10ConnectivityTest\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12\x13\x0A\x0Bdescription\x18\x02 \x01(\x09\x12@\x0A\x06source\x18\x03 \x01(\x0B2+.google.cloud.networkmanagement.v1.EndpointB\x03\xE0A\x02\x12E\x0A\x0Bdestination\x18\x04 \x01(\x0B2+.google.cloud.networkmanagement.v1.EndpointB\x03\xE0A\x02\x12\x10\x0A\x08protocol\x18\x05 \x01(\x09\x12\x18\x0A\x10related_projects\x18\x06 \x03(\x09\x12\x19\x0A\x0Cdisplay_name\x18\x07 \x01(\x09B\x03\xE0A\x03\x12O\x0A\x06labels\x18\x08 \x03(\x0B2?.google.cloud.networkmanagement.v1.ConnectivityTest.LabelsEntry\x124\x0A\x0Bcreate_time\x18\x0A \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bupdate_time\x18\x0B \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12Y\x0A\x14reachability_details\x18\x0C \x01(\x0B26.google.cloud.networkmanagement.v1.ReachabilityDetailsB\x03\xE0A\x03\x12O\x0A\x0Fprobing_details\x18\x0E \x01(\x0B21.google.cloud.networkmanagement.v1.ProbingDetailsB\x03\xE0A\x03\x12\x12\x0A\x0Around_trip\x18\x0F \x01(\x08\x12`\x0A\x1Breturn_reachability_details\x18\x10 \x01(\x0B26.google.cloud.networkmanagement.v1.ReachabilityDetailsB\x03\xE0A\x03\x12\x1E\x0A\x16bypass_firewall_checks\x18\x11 \x01(\x08\x1A-\x0A\x0BLabelsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01:t\xEAAq\x0A1networkmanagement.googleapis.com/ConnectivityTest\x12.google.cloud.networkmanagement.v1.ProbingDetails.EdgeLocation\x12\\\x0A\x0Eedge_responses\x18\x0A \x03(\x0B2D.google.cloud.networkmanagement.v1.ProbingDetails.SingleEdgeResponse\x12\x1A\x0A\x12probed_all_devices\x18\x0B \x01(\x08\x1A)\x0A\x0CEdgeLocation\x12\x19\x0A\x11metropolitan_area\x18\x01 \x01(\x09\x1A\xF1\x02\x0A\x12SingleEdgeResponse\x12O\x0A\x06result\x18\x01 \x01(\x0E2?.google.cloud.networkmanagement.v1.ProbingDetails.ProbingResult\x12\x18\x0A\x10sent_probe_count\x18\x02 \x01(\x05\x12\x1E\x0A\x16successful_probe_count\x18\x03 \x01(\x05\x12O\x0A\x0Fprobing_latency\x18\x04 \x01(\x0B26.google.cloud.networkmanagement.v1.LatencyDistribution\x12c\x0A\x1Bdestination_egress_location\x18\x05 \x01(\x0B2>.google.cloud.networkmanagement.v1.ProbingDetails.EdgeLocation\x12\x1A\x0A\x12destination_router\x18\x06 \x01(\x09\"\x80\x01\x0A\x0DProbingResult\x12\x1E\x0A\x1APROBING_RESULT_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09REACHABLE\x10\x01\x12\x0F\x0A\x0BUNREACHABLE\x10\x02\x12\x1D\x0A\x19REACHABILITY_INCONSISTENT\x10\x03\x12\x10\x0A\x0CUNDETERMINED\x10\x04\"g\x0A\x11ProbingAbortCause\x12#\x0A\x1FPROBING_ABORT_CAUSE_UNSPECIFIED\x10\x00\x12\x15\x0A\x11PERMISSION_DENIED\x10\x01\x12\x16\x0A\x12NO_SOURCE_LOCATION\x10\x02B\xFD\x01\x0A%com.google.cloud.networkmanagement.v1B\x0ETestOuterClassP\x01ZScloud.google.com/go/networkmanagement/apiv1/networkmanagementpb;networkmanagementpb\xAA\x02!Google.Cloud.NetworkManagement.V1\xCA\x02!Google\\Cloud\\NetworkManagement\\V1\xEA\x02\$Google::Cloud::NetworkManagement::V1b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/NetworkManagement/metadata/V1/Trace.php b/NetworkManagement/metadata/V1/Trace.php
index 074774df8fa1..1d3e3911ceda 100644
--- a/NetworkManagement/metadata/V1/Trace.php
+++ b/NetworkManagement/metadata/V1/Trace.php
@@ -17,7 +17,7 @@ public static function initOnce() {
\GPBMetadata\Google\Api\FieldBehavior::initOnce();
\GPBMetadata\Google\Api\FieldInfo::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xA5\xB0\x01\x0A-google/cloud/networkmanagement/v1/trace.proto\x12!google.cloud.networkmanagement.v1\x1A\x1Bgoogle/api/field_info.proto\"\xA1\x01\x0A\x05Trace\x12F\x0A\x0Dendpoint_info\x18\x01 \x01(\x0B2/.google.cloud.networkmanagement.v1.EndpointInfo\x126\x0A\x05steps\x18\x02 \x03(\x0B2'.google.cloud.networkmanagement.v1.Step\x12\x18\x0A\x10forward_trace_id\x18\x04 \x01(\x05\"\xE8\"\x0A\x04Step\x12\x13\x0A\x0Bdescription\x18\x01 \x01(\x09\x12<\x0A\x05state\x18\x02 \x01(\x0E2-.google.cloud.networkmanagement.v1.Step.State\x12\x13\x0A\x0Bcauses_drop\x18\x03 \x01(\x08\x12\x12\x0A\x0Aproject_id\x18\x04 \x01(\x09\x12C\x0A\x08instance\x18\x05 \x01(\x0B2/.google.cloud.networkmanagement.v1.InstanceInfoH\x00\x12C\x0A\x08firewall\x18\x06 \x01(\x0B2/.google.cloud.networkmanagement.v1.FirewallInfoH\x00\x12=\x0A\x05route\x18\x07 \x01(\x0B2,.google.cloud.networkmanagement.v1.RouteInfoH\x00\x12C\x0A\x08endpoint\x18\x08 \x01(\x0B2/.google.cloud.networkmanagement.v1.EndpointInfoH\x00\x12N\x0A\x0Egoogle_service\x18\x18 \x01(\x0B24.google.cloud.networkmanagement.v1.GoogleServiceInfoH\x00\x12P\x0A\x0Fforwarding_rule\x18\x09 \x01(\x0B25.google.cloud.networkmanagement.v1.ForwardingRuleInfoH\x00\x12L\x0A\x0Dhybrid_subnet\x18\$ \x01(\x0B23.google.cloud.networkmanagement.v1.HybridSubnetInfoH\x00\x12H\x0A\x0Bvpn_gateway\x18\x0A \x01(\x0B21.google.cloud.networkmanagement.v1.VpnGatewayInfoH\x00\x12F\x0A\x0Avpn_tunnel\x18\x0B \x01(\x0B20.google.cloud.networkmanagement.v1.VpnTunnelInfoH\x00\x12`\x0A\x17interconnect_attachment\x18# \x01(\x0B2=.google.cloud.networkmanagement.v1.InterconnectAttachmentInfoH\x00\x12L\x0A\x0Dvpc_connector\x18\x15 \x01(\x0B23.google.cloud.networkmanagement.v1.VpcConnectorInfoH\x00\x12h\x0A\x1Cdirect_vpc_egress_connection\x18! \x01(\x0B2@.google.cloud.networkmanagement.v1.DirectVpcEgressConnectionInfoH\x00\x12m\x0A\x1Eserverless_external_connection\x18\" \x01(\x0B2C.google.cloud.networkmanagement.v1.ServerlessExternalConnectionInfoH\x00\x12A\x0A\x07deliver\x18\x0C \x01(\x0B2..google.cloud.networkmanagement.v1.DeliverInfoH\x00\x12A\x0A\x07forward\x18\x0D \x01(\x0B2..google.cloud.networkmanagement.v1.ForwardInfoH\x00\x12=\x0A\x05abort\x18\x0E \x01(\x0B2,.google.cloud.networkmanagement.v1.AbortInfoH\x00\x12;\x0A\x04drop\x18\x0F \x01(\x0B2+.google.cloud.networkmanagement.v1.DropInfoH\x00\x12P\x0A\x0Dload_balancer\x18\x10 \x01(\x0B23.google.cloud.networkmanagement.v1.LoadBalancerInfoB\x02\x18\x01H\x00\x12A\x0A\x07network\x18\x11 \x01(\x0B2..google.cloud.networkmanagement.v1.NetworkInfoH\x00\x12F\x0A\x0Agke_master\x18\x12 \x01(\x0B20.google.cloud.networkmanagement.v1.GKEMasterInfoH\x00\x12@\x0A\x07gke_pod\x18% \x01(\x0B2-.google.cloud.networkmanagement.v1.GkePodInfoH\x00\x12_\x0A\x17ip_masquerading_skipped\x18& \x01(\x0B2<.google.cloud.networkmanagement.v1.IpMasqueradingSkippedInfoH\x00\x12U\x0A\x12gke_network_policy\x18' \x01(\x0B27.google.cloud.networkmanagement.v1.GkeNetworkPolicyInfoH\x00\x12d\x0A\x1Agke_network_policy_skipped\x18( \x01(\x0B2>.google.cloud.networkmanagement.v1.GkeNetworkPolicySkippedInfoH\x00\x12U\x0A\x12cloud_sql_instance\x18\x13 \x01(\x0B27.google.cloud.networkmanagement.v1.CloudSQLInstanceInfoH\x00\x12N\x0A\x0Eredis_instance\x18\x1E \x01(\x0B24.google.cloud.networkmanagement.v1.RedisInstanceInfoH\x00\x12L\x0A\x0Dredis_cluster\x18\x1F \x01(\x0B23.google.cloud.networkmanagement.v1.RedisClusterInfoH\x00\x12N\x0A\x0Ecloud_function\x18\x14 \x01(\x0B24.google.cloud.networkmanagement.v1.CloudFunctionInfoH\x00\x12U\x0A\x12app_engine_version\x18\x16 \x01(\x0B27.google.cloud.networkmanagement.v1.AppEngineVersionInfoH\x00\x12U\x0A\x12cloud_run_revision\x18\x17 \x01(\x0B27.google.cloud.networkmanagement.v1.CloudRunRevisionInfoH\x00\x12K\x0A\x0Dcloud_run_job\x18- \x01(\x0B22.google.cloud.networkmanagement.v1.CloudRunJobInfoH\x00\x129\x0A\x03nat\x18\x19 \x01(\x0B2*.google.cloud.networkmanagement.v1.NatInfoH\x00\x12R\x0A\x10proxy_connection\x18\x1A \x01(\x0B26.google.cloud.networkmanagement.v1.ProxyConnectionInfoH\x00\x12`\x0A\x1Aload_balancer_backend_info\x18\x1B \x01(\x0B2:.google.cloud.networkmanagement.v1.LoadBalancerBackendInfoH\x00\x12N\x0A\x0Estorage_bucket\x18\x1C \x01(\x0B24.google.cloud.networkmanagement.v1.StorageBucketInfoH\x00\x12N\x0A\x0Eserverless_neg\x18\x1D \x01(\x0B24.google.cloud.networkmanagement.v1.ServerlessNegInfoH\x00\x12]\x0A\x16ngfw_packet_inspection\x18* \x01(\x0B2;.google.cloud.networkmanagement.v1.NgfwPacketInspectionInfoH\x00\"\xCE\x0A\x0A\x05State\x12\x15\x0A\x11STATE_UNSPECIFIED\x10\x00\x12\x17\x0A\x13START_FROM_INSTANCE\x10\x01\x12\x17\x0A\x13START_FROM_INTERNET\x10\x02\x12\x1D\x0A\x19START_FROM_GOOGLE_SERVICE\x10\x1B\x12\x1E\x0A\x1ASTART_FROM_PRIVATE_NETWORK\x10\x03\x12\x19\x0A\x15START_FROM_GKE_MASTER\x10\x15\x12!\x0A\x1DSTART_FROM_CLOUD_SQL_INSTANCE\x10\x16\x12\x16\x0A\x12START_FROM_GKE_POD\x10'\x12\x1D\x0A\x19START_FROM_REDIS_INSTANCE\x10 \x12\x1C\x0A\x18START_FROM_REDIS_CLUSTER\x10!\x12\x1D\x0A\x19START_FROM_CLOUD_FUNCTION\x10\x17\x12!\x0A\x1DSTART_FROM_APP_ENGINE_VERSION\x10\x19\x12!\x0A\x1DSTART_FROM_CLOUD_RUN_REVISION\x10\x1A\x12\x1C\x0A\x18START_FROM_CLOUD_RUN_JOB\x102\x12\x1D\x0A\x19START_FROM_STORAGE_BUCKET\x10\x1D\x12\$\x0A START_FROM_PSC_PUBLISHED_SERVICE\x10\x1E\x12\x1D\x0A\x19START_FROM_SERVERLESS_NEG\x10\x1F\x12\x1F\x0A\x1BAPPLY_INGRESS_FIREWALL_RULE\x10\x04\x12\x1E\x0A\x1AAPPLY_EGRESS_FIREWALL_RULE\x10\x05\x12\x0F\x0A\x0BAPPLY_ROUTE\x10\x06\x12\x19\x0A\x15APPLY_FORWARDING_RULE\x10\x07\x12!\x0A\x1DANALYZE_LOAD_BALANCER_BACKEND\x10\x1C\x12\x15\x0A\x11SPOOFING_APPROVED\x10\x08\x12\x16\x0A\x12ARRIVE_AT_INSTANCE\x10\x09\x12(\x0A ARRIVE_AT_INTERNAL_LOAD_BALANCER\x10\x0A\x1A\x02\x08\x01\x12(\x0A ARRIVE_AT_EXTERNAL_LOAD_BALANCER\x10\x0B\x1A\x02\x08\x01\x12\x1B\x0A\x17ARRIVE_AT_HYBRID_SUBNET\x10&\x12\x19\x0A\x15ARRIVE_AT_VPN_GATEWAY\x10\x0C\x12\x18\x0A\x14ARRIVE_AT_VPN_TUNNEL\x10\x0D\x12%\x0A!ARRIVE_AT_INTERCONNECT_ATTACHMENT\x10%\x12\x1B\x0A\x17ARRIVE_AT_VPC_CONNECTOR\x10\x18\x12\x15\x0A\x11ARRIVE_AT_GKE_POD\x10,\x12 \x0A\x1CDIRECT_VPC_EGRESS_CONNECTION\x10#\x12\"\x0A\x1ESERVERLESS_EXTERNAL_CONNECTION\x10\$\x12\x1A\x0A\x16NGFW_PACKET_INSPECTION\x10/\x12\x07\x0A\x03NAT\x10\x0E\x12 \x0A\x1CSKIP_GKE_POD_IP_MASQUERADING\x10(\x12#\x0A\x1FSKIP_GKE_INGRESS_NETWORK_POLICY\x10)\x12\"\x0A\x1ESKIP_GKE_EGRESS_NETWORK_POLICY\x10*\x12\$\x0A APPLY_INGRESS_GKE_NETWORK_POLICY\x10-\x12#\x0A\x1FAPPLY_EGRESS_GKE_NETWORK_POLICY\x10.\x12\x14\x0A\x10PROXY_CONNECTION\x10\x0F\x12\x0B\x0A\x07DELIVER\x10\x10\x12\x08\x0A\x04DROP\x10\x11\x12\x0B\x0A\x07FORWARD\x10\x12\x12\x09\x0A\x05ABORT\x10\x13\x12\x1D\x0A\x19VIEWER_PERMISSION_MISSING\x10\x14B\x0B\x0A\x09step_info\"\xF7\x02\x0A\x0CInstanceInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x11\x0A\x09interface\x18\x03 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x04 \x01(\x09\x12\x13\x0A\x0Binternal_ip\x18\x05 \x01(\x09\x12\x13\x0A\x0Bexternal_ip\x18\x06 \x01(\x09\x12\x14\x0A\x0Cnetwork_tags\x18\x07 \x03(\x09\x12\x1B\x0A\x0Fservice_account\x18\x08 \x01(\x09B\x02\x18\x01\x12\"\x0A\x1Apsc_network_attachment_uri\x18\x09 \x01(\x09\x12\x13\x0A\x07running\x18\x0A \x01(\x08B\x02\x18\x01\x12F\x0A\x06status\x18\x0B \x01(\x0E26.google.cloud.networkmanagement.v1.InstanceInfo.Status\">\x0A\x06Status\x12\x16\x0A\x12STATUS_UNSPECIFIED\x10\x00\x12\x0B\x0A\x07RUNNING\x10\x01\x12\x0F\x0A\x0BNOT_RUNNING\x10\x02\"v\x0A\x0BNetworkInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x1A\x0A\x12matched_subnet_uri\x18\x05 \x01(\x09\x12\x18\x0A\x10matched_ip_range\x18\x04 \x01(\x09\x12\x0E\x0A\x06region\x18\x06 \x01(\x09\"\xAF\x07\x0A\x0CFirewallInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x11\x0A\x09direction\x18\x03 \x01(\x09\x12\x0E\x0A\x06action\x18\x04 \x01(\x09\x12\x10\x0A\x08priority\x18\x05 \x01(\x05\x12\x13\x0A\x0Bnetwork_uri\x18\x06 \x01(\x09\x12\x13\x0A\x0Btarget_tags\x18\x07 \x03(\x09\x12\x1F\x0A\x17target_service_accounts\x18\x08 \x03(\x09\x12\x0E\x0A\x06policy\x18\x09 \x01(\x09\x12\x12\x0A\x0Apolicy_uri\x18\x0B \x01(\x09\x12\\\x0A\x12firewall_rule_type\x18\x0A \x01(\x0E2@.google.cloud.networkmanagement.v1.FirewallInfo.FirewallRuleType\x12\x17\x0A\x0Fpolicy_priority\x18\x0C \x01(\x05\x12O\x0A\x0Btarget_type\x18\x0D \x01(\x0E2:.google.cloud.networkmanagement.v1.FirewallInfo.TargetType\"\xBC\x03\x0A\x10FirewallRuleType\x12\"\x0A\x1EFIREWALL_RULE_TYPE_UNSPECIFIED\x10\x00\x12%\x0A!HIERARCHICAL_FIREWALL_POLICY_RULE\x10\x01\x12\x15\x0A\x11VPC_FIREWALL_RULE\x10\x02\x12\x1D\x0A\x19IMPLIED_VPC_FIREWALL_RULE\x10\x03\x12/\x0A+SERVERLESS_VPC_ACCESS_MANAGED_FIREWALL_RULE\x10\x04\x12 \x0A\x1CNETWORK_FIREWALL_POLICY_RULE\x10\x05\x12)\x0A%NETWORK_REGIONAL_FIREWALL_POLICY_RULE\x10\x06\x12'\x0A#SYSTEM_NETWORK_FIREWALL_POLICY_RULE\x10\x07\x120\x0A,SYSTEM_REGIONAL_NETWORK_FIREWALL_POLICY_RULE\x10\x08\x12\$\x0A UNSUPPORTED_FIREWALL_POLICY_RULE\x10d\x12\x12\x0A\x0ETRACKING_STATE\x10e\x12\x14\x0A\x10ANALYSIS_SKIPPED\x10f\"Q\x0A\x0ATargetType\x12\x1B\x0A\x17TARGET_TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09INSTANCES\x10\x01\x12\x17\x0A\x13INTERNAL_MANAGED_LB\x10\x02\"\xEC\x0B\x0A\x09RouteInfo\x12J\x0A\x0Aroute_type\x18\x08 \x01(\x0E26.google.cloud.networkmanagement.v1.RouteInfo.RouteType\x12O\x0A\x0Dnext_hop_type\x18\x09 \x01(\x0E28.google.cloud.networkmanagement.v1.RouteInfo.NextHopType\x12P\x0A\x0Broute_scope\x18\x0E \x01(\x0E27.google.cloud.networkmanagement.v1.RouteInfo.RouteScopeB\x02\x18\x01\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x0E\x0A\x06region\x18\x13 \x01(\x09\x12\x15\x0A\x0Ddest_ip_range\x18\x03 \x01(\x09\x12\x14\x0A\x08next_hop\x18\x04 \x01(\x09B\x02\x18\x01\x12\x13\x0A\x0Bnetwork_uri\x18\x05 \x01(\x09\x12\x10\x0A\x08priority\x18\x06 \x01(\x05\x12\x15\x0A\x0Dinstance_tags\x18\x07 \x03(\x09\x12\x14\x0A\x0Csrc_ip_range\x18\x0A \x01(\x09\x12\x18\x0A\x10dest_port_ranges\x18\x0B \x03(\x09\x12\x17\x0A\x0Fsrc_port_ranges\x18\x0C \x03(\x09\x12\x11\x0A\x09protocols\x18\x0D \x03(\x09\x12\x18\x0A\x0Bncc_hub_uri\x18\x0F \x01(\x09H\x00\x88\x01\x01\x12\x1A\x0A\x0Dncc_spoke_uri\x18\x10 \x01(\x09H\x01\x88\x01\x01\x12/\x0A\"advertised_route_source_router_uri\x18\x11 \x01(\x09H\x02\x88\x01\x01\x12.\x0A\x1Dadvertised_route_next_hop_uri\x18\x12 \x01(\x09B\x02\x18\x01H\x03\x88\x01\x01\x12\x14\x0A\x0Cnext_hop_uri\x18\x14 \x01(\x09\x12\x1C\x0A\x14next_hop_network_uri\x18\x15 \x01(\x09\x12\x1D\x0A\x15originating_route_uri\x18\x16 \x01(\x09\x12&\x0A\x1Eoriginating_route_display_name\x18\x17 \x01(\x09\x12\x19\x0A\x11ncc_hub_route_uri\x18\x18 \x01(\x09\"\xAB\x01\x0A\x09RouteType\x12\x1A\x0A\x16ROUTE_TYPE_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06SUBNET\x10\x01\x12\x0A\x0A\x06STATIC\x10\x02\x12\x0B\x0A\x07DYNAMIC\x10\x03\x12\x12\x0A\x0EPEERING_SUBNET\x10\x04\x12\x12\x0A\x0EPEERING_STATIC\x10\x05\x12\x13\x0A\x0FPEERING_DYNAMIC\x10\x06\x12\x10\x0A\x0CPOLICY_BASED\x10\x07\x12\x0E\x0A\x0AADVERTISED\x10e\"\xEA\x02\x0A\x0BNextHopType\x12\x1D\x0A\x19NEXT_HOP_TYPE_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BNEXT_HOP_IP\x10\x01\x12\x15\x0A\x11NEXT_HOP_INSTANCE\x10\x02\x12\x14\x0A\x10NEXT_HOP_NETWORK\x10\x03\x12\x14\x0A\x10NEXT_HOP_PEERING\x10\x04\x12\x19\x0A\x15NEXT_HOP_INTERCONNECT\x10\x05\x12\x17\x0A\x13NEXT_HOP_VPN_TUNNEL\x10\x06\x12\x18\x0A\x14NEXT_HOP_VPN_GATEWAY\x10\x07\x12\x1D\x0A\x19NEXT_HOP_INTERNET_GATEWAY\x10\x08\x12\x16\x0A\x12NEXT_HOP_BLACKHOLE\x10\x09\x12\x10\x0A\x0CNEXT_HOP_ILB\x10\x0A\x12\x1D\x0A\x19NEXT_HOP_ROUTER_APPLIANCE\x10\x0B\x12\x14\x0A\x10NEXT_HOP_NCC_HUB\x10\x0C\x12\x1C\x0A\x18SECURE_WEB_PROXY_GATEWAY\x10\x0D\"C\x0A\x0ARouteScope\x12\x1B\x0A\x17ROUTE_SCOPE_UNSPECIFIED\x10\x00\x12\x0B\x0A\x07NETWORK\x10\x01\x12\x0B\x0A\x07NCC_HUB\x10\x02B\x0E\x0A\x0C_ncc_hub_uriB\x10\x0A\x0E_ncc_spoke_uriB%\x0A#_advertised_route_source_router_uriB \x0A\x1E_advertised_route_next_hop_uri\"\xDA\x02\x0A\x11GoogleServiceInfo\x12\x11\x0A\x09source_ip\x18\x01 \x01(\x09\x12c\x0A\x13google_service_type\x18\x02 \x01(\x0E2F.google.cloud.networkmanagement.v1.GoogleServiceInfo.GoogleServiceType\"\xCC\x01\x0A\x11GoogleServiceType\x12#\x0A\x1FGOOGLE_SERVICE_TYPE_UNSPECIFIED\x10\x00\x12\x07\x0A\x03IAP\x10\x01\x12\$\x0A GFE_PROXY_OR_HEALTH_CHECK_PROBER\x10\x02\x12\x0D\x0A\x09CLOUD_DNS\x10\x03\x12\x0E\x0A\x0AGOOGLE_API\x10\x04\x12\x12\x0A\x0EGOOGLE_API_PSC\x10\x05\x12\x15\x0A\x11GOOGLE_API_VPC_SC\x10\x06\x12\x19\x0A\x15SERVERLESS_VPC_ACCESS\x10\x07\"\x8E\x02\x0A\x12ForwardingRuleInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x18\x0A\x10matched_protocol\x18\x03 \x01(\x09\x12\x1A\x0A\x12matched_port_range\x18\x06 \x01(\x09\x12\x0B\x0A\x03vip\x18\x04 \x01(\x09\x12\x0E\x0A\x06target\x18\x05 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x07 \x01(\x09\x12\x0E\x0A\x06region\x18\x08 \x01(\x09\x12\x1A\x0A\x12load_balancer_name\x18\x09 \x01(\x09\x12\"\x0A\x1Apsc_service_attachment_uri\x18\x0A \x01(\x09\x12\x1D\x0A\x15psc_google_api_target\x18\x0B \x01(\x09\"\xC2\x04\x0A\x10LoadBalancerInfo\x12`\x0A\x12load_balancer_type\x18\x01 \x01(\x0E2D.google.cloud.networkmanagement.v1.LoadBalancerInfo.LoadBalancerType\x12\x1C\x0A\x10health_check_uri\x18\x02 \x01(\x09B\x02\x18\x01\x12H\x0A\x08backends\x18\x03 \x03(\x0B26.google.cloud.networkmanagement.v1.LoadBalancerBackend\x12U\x0A\x0Cbackend_type\x18\x04 \x01(\x0E2?.google.cloud.networkmanagement.v1.LoadBalancerInfo.BackendType\x12\x13\x0A\x0Bbackend_uri\x18\x05 \x01(\x09\"\x8F\x01\x0A\x10LoadBalancerType\x12\"\x0A\x1ELOAD_BALANCER_TYPE_UNSPECIFIED\x10\x00\x12\x14\x0A\x10INTERNAL_TCP_UDP\x10\x01\x12\x13\x0A\x0FNETWORK_TCP_UDP\x10\x02\x12\x0E\x0A\x0AHTTP_PROXY\x10\x03\x12\x0D\x0A\x09TCP_PROXY\x10\x04\x12\x0D\x0A\x09SSL_PROXY\x10\x05\"f\x0A\x0BBackendType\x12\x1C\x0A\x18BACKEND_TYPE_UNSPECIFIED\x10\x00\x12\x13\x0A\x0FBACKEND_SERVICE\x10\x01\x12\x0F\x0A\x0BTARGET_POOL\x10\x02\x12\x13\x0A\x0FTARGET_INSTANCE\x10\x03\"\xF6\x02\x0A\x13LoadBalancerBackend\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12t\x0A\x1Bhealth_check_firewall_state\x18\x03 \x01(\x0E2O.google.cloud.networkmanagement.v1.LoadBalancerBackend.HealthCheckFirewallState\x12,\x0A\$health_check_allowing_firewall_rules\x18\x04 \x03(\x09\x12,\x0A\$health_check_blocking_firewall_rules\x18\x05 \x03(\x09\"j\x0A\x18HealthCheckFirewallState\x12+\x0A'HEALTH_CHECK_FIREWALL_STATE_UNSPECIFIED\x10\x00\x12\x0E\x0A\x0ACONFIGURED\x10\x01\x12\x11\x0A\x0DMISCONFIGURED\x10\x02\"E\x0A\x10HybridSubnetInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x0E\x0A\x06region\x18\x03 \x01(\x09\"\x84\x01\x0A\x0EVpnGatewayInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\x12\x12\x0A\x0Aip_address\x18\x04 \x01(\x09\x12\x16\x0A\x0Evpn_tunnel_uri\x18\x05 \x01(\x09\x12\x0E\x0A\x06region\x18\x06 \x01(\x09\"\xEE\x02\x0A\x0DVpnTunnelInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x16\x0A\x0Esource_gateway\x18\x03 \x01(\x09\x12\x16\x0A\x0Eremote_gateway\x18\x04 \x01(\x09\x12\x19\x0A\x11remote_gateway_ip\x18\x05 \x01(\x09\x12\x19\x0A\x11source_gateway_ip\x18\x06 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x07 \x01(\x09\x12\x0E\x0A\x06region\x18\x08 \x01(\x09\x12R\x0A\x0Crouting_type\x18\x09 \x01(\x0E2<.google.cloud.networkmanagement.v1.VpnTunnelInfo.RoutingType\"[\x0A\x0BRoutingType\x12\x1C\x0A\x18ROUTING_TYPE_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BROUTE_BASED\x10\x01\x12\x10\x0A\x0CPOLICY_BASED\x10\x02\x12\x0B\x0A\x07DYNAMIC\x10\x03\"\xEB\x02\x0A\x1AInterconnectAttachmentInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x18\x0A\x10interconnect_uri\x18\x03 \x01(\x09\x12\x0E\x0A\x06region\x18\x04 \x01(\x09\x12\x18\x0A\x10cloud_router_uri\x18\x05 \x01(\x09\x12P\x0A\x04type\x18\x06 \x01(\x0E2B.google.cloud.networkmanagement.v1.InterconnectAttachmentInfo.Type\x122\x0A l2_attachment_matched_ip_address\x18\x07 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\"`\x0A\x04Type\x12\x14\x0A\x10TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09DEDICATED\x10\x01\x12\x0B\x0A\x07PARTNER\x10\x02\x12\x14\x0A\x10PARTNER_PROVIDER\x10\x03\x12\x10\x0A\x0CL2_DEDICATED\x10\x04\"\xD1\x01\x0A\x0CEndpointInfo\x12\x11\x0A\x09source_ip\x18\x01 \x01(\x09\x12\x16\x0A\x0Edestination_ip\x18\x02 \x01(\x09\x12\x10\x0A\x08protocol\x18\x03 \x01(\x09\x12\x13\x0A\x0Bsource_port\x18\x04 \x01(\x05\x12\x18\x0A\x10destination_port\x18\x05 \x01(\x05\x12\x1A\x0A\x12source_network_uri\x18\x06 \x01(\x09\x12\x1F\x0A\x17destination_network_uri\x18\x07 \x01(\x09\x12\x18\x0A\x10source_agent_uri\x18\x08 \x01(\x09\"\xE7\x06\x0A\x0BDeliverInfo\x12E\x0A\x06target\x18\x01 \x01(\x0E25.google.cloud.networkmanagement.v1.DeliverInfo.Target\x12\x14\x0A\x0Cresource_uri\x18\x02 \x01(\x09\x12\x1C\x0A\x0Aip_address\x18\x03 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12\x16\x0A\x0Estorage_bucket\x18\x04 \x01(\x09\x12\x1D\x0A\x15psc_google_api_target\x18\x05 \x01(\x09\x12]\x0A\x13google_service_type\x18\x06 \x01(\x0E2@.google.cloud.networkmanagement.v1.DeliverInfo.GoogleServiceType\"\x97\x03\x0A\x06Target\x12\x16\x0A\x12TARGET_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08INSTANCE\x10\x01\x12\x0C\x0A\x08INTERNET\x10\x02\x12\x0E\x0A\x0AGOOGLE_API\x10\x03\x12\x0E\x0A\x0AGKE_MASTER\x10\x04\x12\x16\x0A\x12CLOUD_SQL_INSTANCE\x10\x05\x12\x19\x0A\x15PSC_PUBLISHED_SERVICE\x10\x06\x12\x12\x0A\x0EPSC_GOOGLE_API\x10\x07\x12\x0E\x0A\x0APSC_VPC_SC\x10\x08\x12\x12\x0A\x0ESERVERLESS_NEG\x10\x09\x12\x12\x0A\x0ESTORAGE_BUCKET\x10\x0A\x12\x13\x0A\x0FPRIVATE_NETWORK\x10\x0B\x12\x12\x0A\x0ECLOUD_FUNCTION\x10\x0C\x12\x16\x0A\x12APP_ENGINE_VERSION\x10\x0D\x12\x16\x0A\x12CLOUD_RUN_REVISION\x10\x0E\x12\x1A\x0A\x16GOOGLE_MANAGED_SERVICE\x10\x0F\x12\x12\x0A\x0EREDIS_INSTANCE\x10\x10\x12\x11\x0A\x0DREDIS_CLUSTER\x10\x11\x12\x0B\x0A\x07GKE_POD\x10\x13\x12\x11\x0A\x0DCLOUD_RUN_JOB\x10\x14\"\xAC\x01\x0A\x11GoogleServiceType\x12#\x0A\x1FGOOGLE_SERVICE_TYPE_UNSPECIFIED\x10\x00\x12\x07\x0A\x03IAP\x10\x01\x12\$\x0A GFE_PROXY_OR_HEALTH_CHECK_PROBER\x10\x02\x12\x0D\x0A\x09CLOUD_DNS\x10\x03\x12\x19\x0A\x15PRIVATE_GOOGLE_ACCESS\x10\x04\x12\x19\x0A\x15SERVERLESS_VPC_ACCESS\x10\x05\"\x89\x03\x0A\x0BForwardInfo\x12E\x0A\x06target\x18\x01 \x01(\x0E25.google.cloud.networkmanagement.v1.ForwardInfo.Target\x12\x14\x0A\x0Cresource_uri\x18\x02 \x01(\x09\x12\x1C\x0A\x0Aip_address\x18\x03 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\"\xFE\x01\x0A\x06Target\x12\x16\x0A\x12TARGET_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BPEERING_VPC\x10\x01\x12\x0F\x0A\x0BVPN_GATEWAY\x10\x02\x12\x10\x0A\x0CINTERCONNECT\x10\x03\x12\x12\x0A\x0AGKE_MASTER\x10\x04\x1A\x02\x08\x01\x12\"\x0A\x1EIMPORTED_CUSTOM_ROUTE_NEXT_HOP\x10\x05\x12\x1A\x0A\x12CLOUD_SQL_INSTANCE\x10\x06\x1A\x02\x08\x01\x12\x13\x0A\x0FANOTHER_PROJECT\x10\x07\x12\x0B\x0A\x07NCC_HUB\x10\x08\x12\x14\x0A\x10ROUTER_APPLIANCE\x10\x09\x12\x1C\x0A\x18SECURE_WEB_PROXY_GATEWAY\x10\x0A\"\x85\x0D\x0A\x09AbortInfo\x12A\x0A\x05cause\x18\x01 \x01(\x0E22.google.cloud.networkmanagement.v1.AbortInfo.Cause\x12\x14\x0A\x0Cresource_uri\x18\x02 \x01(\x09\x12\x1C\x0A\x0Aip_address\x18\x04 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12#\x0A\x1Bprojects_missing_permission\x18\x03 \x03(\x09\"\xDB\x0B\x0A\x05Cause\x12\x15\x0A\x11CAUSE_UNSPECIFIED\x10\x00\x12\x17\x0A\x0FUNKNOWN_NETWORK\x10\x01\x1A\x02\x08\x01\x12\x17\x0A\x0FUNKNOWN_PROJECT\x10\x03\x1A\x02\x08\x01\x12\x16\x0A\x0ENO_EXTERNAL_IP\x10\x07\x1A\x02\x08\x01\x12\x1E\x0A\x16UNINTENDED_DESTINATION\x10\x08\x1A\x02\x08\x01\x12!\x0A\x19SOURCE_ENDPOINT_NOT_FOUND\x10\x0B\x1A\x02\x08\x01\x12!\x0A\x19MISMATCHED_SOURCE_NETWORK\x10\x0C\x1A\x02\x08\x01\x12&\x0A\x1EDESTINATION_ENDPOINT_NOT_FOUND\x10\x0D\x1A\x02\x08\x01\x12&\x0A\x1EMISMATCHED_DESTINATION_NETWORK\x10\x0E\x1A\x02\x08\x01\x12\x0E\x0A\x0AUNKNOWN_IP\x10\x02\x12%\x0A!GOOGLE_MANAGED_SERVICE_UNKNOWN_IP\x10 \x12+\x0A'SOURCE_IP_ADDRESS_NOT_IN_SOURCE_NETWORK\x10\x17\x12\x15\x0A\x11PERMISSION_DENIED\x10\x04\x12*\x0A&PERMISSION_DENIED_NO_CLOUD_NAT_CONFIGS\x10\x1C\x12-\x0A)PERMISSION_DENIED_NO_NEG_ENDPOINT_CONFIGS\x10\x1D\x12-\x0A)PERMISSION_DENIED_NO_CLOUD_ROUTER_CONFIGS\x10\$\x12\x16\x0A\x12NO_SOURCE_LOCATION\x10\x05\x12\"\x0A\x1ENO_SOURCE_GCP_NETWORK_LOCATION\x10*\x12&\x0A\"NO_SOURCE_NON_GCP_NETWORK_LOCATION\x10+\x12\x1F\x0A\x1BNO_SOURCE_INTERNET_LOCATION\x10,\x12\x14\x0A\x10INVALID_ARGUMENT\x10\x06\x12\x12\x0A\x0ETRACE_TOO_LONG\x10\x09\x12\x12\x0A\x0EINTERNAL_ERROR\x10\x0A\x12\x0F\x0A\x0BUNSUPPORTED\x10\x0F\x12\x19\x0A\x15MISMATCHED_IP_VERSION\x10\x10\x12&\x0A\"GKE_KONNECTIVITY_PROXY_UNSUPPORTED\x10\x11\x12\x1D\x0A\x19RESOURCE_CONFIG_NOT_FOUND\x10\x12\x12 \x0A\x1CVM_INSTANCE_CONFIG_NOT_FOUND\x10\x18\x12\x1C\x0A\x18NETWORK_CONFIG_NOT_FOUND\x10\x19\x12\x1D\x0A\x19FIREWALL_CONFIG_NOT_FOUND\x10\x1A\x12\x1A\x0A\x16ROUTE_CONFIG_NOT_FOUND\x10\x1B\x121\x0A-GOOGLE_MANAGED_SERVICE_AMBIGUOUS_PSC_ENDPOINT\x10\x13\x12-\x0A)GOOGLE_MANAGED_SERVICE_AMBIGUOUS_ENDPOINT\x10'\x12\$\x0A SOURCE_PSC_CLOUD_SQL_UNSUPPORTED\x10\x14\x12)\x0A%SOURCE_EXTERNAL_CLOUD_SQL_UNSUPPORTED\x10-\x12\$\x0A SOURCE_REDIS_CLUSTER_UNSUPPORTED\x10\"\x12%\x0A!SOURCE_REDIS_INSTANCE_UNSUPPORTED\x10#\x12&\x0A\"SOURCE_FORWARDING_RULE_UNSUPPORTED\x10\x15\x12\x1B\x0A\x17NON_ROUTABLE_IP_ADDRESS\x10\x16\x12+\x0A'UNKNOWN_ISSUE_IN_GOOGLE_MANAGED_PROJECT\x10\x1E\x12-\x0A)UNSUPPORTED_GOOGLE_MANAGED_PROJECT_CONFIG\x10\x1F\x12\x1B\x0A\x17NO_SERVERLESS_IP_RANGES\x10%\x12 \x0A\x1CIP_VERSION_PROTOCOL_MISMATCH\x10(\x12%\x0A!GKE_POD_UNKNOWN_ENDPOINT_LOCATION\x10)\"\xCE\"\x0A\x08DropInfo\x12@\x0A\x05cause\x18\x01 \x01(\x0E21.google.cloud.networkmanagement.v1.DropInfo.Cause\x12\x14\x0A\x0Cresource_uri\x18\x02 \x01(\x09\x12\x11\x0A\x09source_ip\x18\x03 \x01(\x09\x12\x16\x0A\x0Edestination_ip\x18\x04 \x01(\x09\x12\x0E\x0A\x06region\x18\x05 \x01(\x09\x12\x1F\x0A\x17source_geolocation_code\x18\x06 \x01(\x09\x12\$\x0A\x1Cdestination_geolocation_code\x18\x07 \x01(\x09\"\xE7 \x0A\x05Cause\x12\x15\x0A\x11CAUSE_UNSPECIFIED\x10\x00\x12\x1C\x0A\x18UNKNOWN_EXTERNAL_ADDRESS\x10\x01\x12\x19\x0A\x15FOREIGN_IP_DISALLOWED\x10\x02\x12\x11\x0A\x0DFIREWALL_RULE\x10\x03\x12\x0C\x0A\x08NO_ROUTE\x10\x04\x12\x13\x0A\x0FROUTE_BLACKHOLE\x10\x05\x12\x17\x0A\x13ROUTE_WRONG_NETWORK\x10\x06\x12*\x0A&ROUTE_NEXT_HOP_IP_ADDRESS_NOT_RESOLVED\x10*\x12%\x0A!ROUTE_NEXT_HOP_RESOURCE_NOT_FOUND\x10+\x12)\x0A%ROUTE_NEXT_HOP_INSTANCE_WRONG_NETWORK\x101\x12*\x0A&ROUTE_NEXT_HOP_INSTANCE_NON_PRIMARY_IP\x102\x12.\x0A*ROUTE_NEXT_HOP_FORWARDING_RULE_IP_MISMATCH\x103\x12-\x0A)ROUTE_NEXT_HOP_VPN_TUNNEL_NOT_ESTABLISHED\x104\x12/\x0A+ROUTE_NEXT_HOP_FORWARDING_RULE_TYPE_INVALID\x105\x122\x0A.NO_ROUTE_FROM_INTERNET_TO_PRIVATE_IPV6_ADDRESS\x10,\x122\x0A.NO_ROUTE_FROM_INTERNET_TO_PRIVATE_IPV4_ADDRESS\x10m\x12>\x0A:NO_ROUTE_FROM_EXTERNAL_IPV6_SOURCE_TO_PRIVATE_IPV6_ADDRESS\x10b\x12&\x0A\"VPN_TUNNEL_LOCAL_SELECTOR_MISMATCH\x10-\x12'\x0A#VPN_TUNNEL_REMOTE_SELECTOR_MISMATCH\x10.\x12\x1F\x0A\x1BPRIVATE_TRAFFIC_TO_INTERNET\x10\x07\x12\$\x0A PRIVATE_GOOGLE_ACCESS_DISALLOWED\x10\x08\x124\x0A0PRIVATE_GOOGLE_ACCESS_VIA_VPN_TUNNEL_UNSUPPORTED\x10/\x12\x17\x0A\x13NO_EXTERNAL_ADDRESS\x10\x09\x12\x1C\x0A\x18UNKNOWN_INTERNAL_ADDRESS\x10\x0A\x12\x1C\x0A\x18FORWARDING_RULE_MISMATCH\x10\x0B\x12 \x0A\x1CFORWARDING_RULE_NO_INSTANCES\x10\x0C\x128\x0A4FIREWALL_BLOCKING_LOAD_BALANCER_BACKEND_HEALTH_CHECK\x10\x0D\x12:\x0A6INGRESS_FIREWALL_TAGS_UNSUPPORTED_BY_DIRECT_VPC_EGRESS\x10U\x12\x18\x0A\x14INSTANCE_NOT_RUNNING\x10\x0E\x12\x1B\x0A\x17GKE_CLUSTER_NOT_RUNNING\x10\x1B\x12\x17\x0A\x13GKE_POD_NOT_RUNNING\x10g\x12\"\x0A\x1ECLOUD_SQL_INSTANCE_NOT_RUNNING\x10\x1C\x12\x1E\x0A\x1AREDIS_INSTANCE_NOT_RUNNING\x10D\x12\x1D\x0A\x19REDIS_CLUSTER_NOT_RUNNING\x10E\x12\x18\x0A\x14TRAFFIC_TYPE_BLOCKED\x10\x0F\x12\"\x0A\x1EGKE_MASTER_UNAUTHORIZED_ACCESS\x10\x10\x12*\x0A&CLOUD_SQL_INSTANCE_UNAUTHORIZED_ACCESS\x10\x11\x12\x1E\x0A\x1ADROPPED_INSIDE_GKE_SERVICE\x10\x12\x12\$\x0A DROPPED_INSIDE_CLOUD_SQL_SERVICE\x10\x13\x12%\x0A!GOOGLE_MANAGED_SERVICE_NO_PEERING\x10\x14\x12*\x0A&GOOGLE_MANAGED_SERVICE_NO_PSC_ENDPOINT\x10&\x12\x1C\x0A\x18GKE_PSC_ENDPOINT_MISSING\x10\$\x12\$\x0A CLOUD_SQL_INSTANCE_NO_IP_ADDRESS\x10\x15\x12%\x0A!GKE_CONTROL_PLANE_REGION_MISMATCH\x10\x1E\x123\x0A/PUBLIC_GKE_CONTROL_PLANE_TO_PRIVATE_DESTINATION\x10\x1F\x12\x1E\x0A\x1AGKE_CONTROL_PLANE_NO_ROUTE\x10 \x12:\x0A6CLOUD_SQL_INSTANCE_NOT_CONFIGURED_FOR_EXTERNAL_TRAFFIC\x10!\x124\x0A0PUBLIC_CLOUD_SQL_INSTANCE_TO_PRIVATE_DESTINATION\x10\"\x12\x1F\x0A\x1BCLOUD_SQL_INSTANCE_NO_ROUTE\x10#\x12 \x0A\x1CCLOUD_SQL_CONNECTOR_REQUIRED\x10?\x12\x1D\x0A\x19CLOUD_FUNCTION_NOT_ACTIVE\x10\x16\x12\x19\x0A\x15VPC_CONNECTOR_NOT_SET\x10\x17\x12\x1D\x0A\x19VPC_CONNECTOR_NOT_RUNNING\x10\x18\x12,\x0A(VPC_CONNECTOR_SERVERLESS_TRAFFIC_BLOCKED\x10<\x12.\x0A*VPC_CONNECTOR_HEALTH_CHECK_TRAFFIC_BLOCKED\x10=\x12#\x0A\x1FFORWARDING_RULE_REGION_MISMATCH\x10\x19\x12\x1F\x0A\x1BPSC_CONNECTION_NOT_ACCEPTED\x10\x1A\x12-\x0A)PSC_ENDPOINT_ACCESSED_FROM_PEERED_NETWORK\x10)\x12.\x0A*PSC_NEG_PRODUCER_ENDPOINT_NO_GLOBAL_ACCESS\x100\x123\x0A/PSC_NEG_PRODUCER_FORWARDING_RULE_MULTIPLE_PORTS\x106\x12!\x0A\x1DCLOUD_SQL_PSC_NEG_UNSUPPORTED\x10:\x12-\x0A)NO_NAT_SUBNETS_FOR_PSC_SERVICE_ATTACHMENT\x109\x12#\x0A\x1FPSC_TRANSITIVITY_NOT_PROPAGATED\x10@\x12(\x0A\$HYBRID_NEG_NON_DYNAMIC_ROUTE_MATCHED\x107\x12.\x0A*HYBRID_NEG_NON_LOCAL_DYNAMIC_ROUTE_MATCHED\x108\x12 \x0A\x1CCLOUD_RUN_REVISION_NOT_READY\x10\x1D\x12\x1B\x0A\x17CLOUD_RUN_JOB_NOT_READY\x10q\x12'\x0A#DROPPED_INSIDE_PSC_SERVICE_PRODUCER\x10%\x12%\x0A!LOAD_BALANCER_HAS_NO_PROXY_SUBNET\x10'\x12\x1A\x0A\x16CLOUD_NAT_NO_ADDRESSES\x10(\x12\x10\x0A\x0CROUTING_LOOP\x10;\x12)\x0A%DROPPED_INSIDE_GOOGLE_MANAGED_SERVICE\x10>\x12)\x0A%LOAD_BALANCER_BACKEND_INVALID_NETWORK\x10A\x12*\x0A&BACKEND_SERVICE_NAMED_PORT_NOT_DEFINED\x10B\x12'\x0A#DESTINATION_IS_PRIVATE_NAT_IP_RANGE\x10C\x12)\x0A%DROPPED_INSIDE_REDIS_INSTANCE_SERVICE\x10F\x12#\x0A\x1FREDIS_INSTANCE_UNSUPPORTED_PORT\x10G\x12/\x0A+REDIS_INSTANCE_CONNECTING_FROM_PUPI_ADDRESS\x10H\x122\x0A.REDIS_INSTANCE_NO_ROUTE_TO_DESTINATION_NETWORK\x10I\x12!\x0A\x1DREDIS_INSTANCE_NO_EXTERNAL_IP\x10J\x12'\x0A#REDIS_INSTANCE_UNSUPPORTED_PROTOCOL\x10N\x12(\x0A\$DROPPED_INSIDE_REDIS_CLUSTER_SERVICE\x10K\x12\"\x0A\x1EREDIS_CLUSTER_UNSUPPORTED_PORT\x10L\x12 \x0A\x1CREDIS_CLUSTER_NO_EXTERNAL_IP\x10M\x12&\x0A\"REDIS_CLUSTER_UNSUPPORTED_PROTOCOL\x10O\x12*\x0A&NO_ADVERTISED_ROUTE_TO_GCP_DESTINATION\x10P\x12*\x0A&NO_TRAFFIC_SELECTOR_TO_GCP_DESTINATION\x10Q\x125\x0A1NO_KNOWN_ROUTE_FROM_PEERED_NETWORK_TO_DESTINATION\x10R\x12+\x0A'PRIVATE_NAT_TO_PSC_ENDPOINT_UNSUPPORTED\x10S\x12\"\x0A\x1EPSC_PORT_MAPPING_PORT_MISMATCH\x10V\x127\x0A3PSC_PORT_MAPPING_WITHOUT_PSC_CONNECTION_UNSUPPORTED\x10W\x123\x0A/UNSUPPORTED_ROUTE_MATCHED_FOR_NAT64_DESTINATION\x10X\x127\x0A3TRAFFIC_FROM_HYBRID_ENDPOINT_TO_INTERNET_DISALLOWED\x10Y\x12\x1D\x0A\x19NO_MATCHING_NAT64_GATEWAY\x10Z\x12\$\x0A NO_CONFIGURED_PRIVATE_NAT64_RULE\x10k\x12-\x0A)LOAD_BALANCER_BACKEND_IP_VERSION_MISMATCH\x10`\x122\x0A.NO_KNOWN_ROUTE_FROM_NCC_NETWORK_TO_DESTINATION\x10a\x12\"\x0A\x1ECLOUD_NAT_PROTOCOL_UNSUPPORTED\x10c\x12(\x0A\$L2_INTERCONNECT_UNSUPPORTED_PROTOCOL\x10d\x12\$\x0A L2_INTERCONNECT_UNSUPPORTED_PORT\x10e\x12+\x0A'L2_INTERCONNECT_DESTINATION_IP_MISMATCH\x10f\x12.\x0A*NCC_ROUTE_WITHIN_HYBRID_SUBNET_UNSUPPORTED\x10h\x12!\x0A\x1DHYBRID_SUBNET_REGION_MISMATCH\x10i\x12\x1A\x0A\x16HYBRID_SUBNET_NO_ROUTE\x10j\x12\x16\x0A\x12GKE_NETWORK_POLICY\x10l\x12=\x0A9NO_VALID_ROUTE_FROM_GOOGLE_MANAGED_NETWORK_TO_DESTINATION\x10n\"\x81\x01\x0A\x0DGKEMasterInfo\x12\x13\x0A\x0Bcluster_uri\x18\x02 \x01(\x09\x12\x1B\x0A\x13cluster_network_uri\x18\x04 \x01(\x09\x12\x13\x0A\x0Binternal_ip\x18\x05 \x01(\x09\x12\x13\x0A\x0Bexternal_ip\x18\x06 \x01(\x09\x12\x14\x0A\x0Cdns_endpoint\x18\x07 \x01(\x09\"P\x0A\x0AGkePodInfo\x12\x0F\x0A\x07pod_uri\x18\x01 \x01(\x09\x12\x1C\x0A\x0Aip_address\x18\x02 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\"\xBF\x03\x0A\x19IpMasqueradingSkippedInfo\x12S\x0A\x06reason\x18\x01 \x01(\x0E2C.google.cloud.networkmanagement.v1.IpMasqueradingSkippedInfo.Reason\x12\x1C\x0A\x14non_masquerade_range\x18\x02 \x01(\x09\"\xAE\x02\x0A\x06Reason\x12\x16\x0A\x12REASON_UNSPECIFIED\x10\x00\x125\x0A1DESTINATION_IP_IN_CONFIGURED_NON_MASQUERADE_RANGE\x10\x01\x122\x0A.DESTINATION_IP_IN_DEFAULT_NON_MASQUERADE_RANGE\x10\x02\x12\x1C\x0A\x18DESTINATION_ON_SAME_NODE\x10\x03\x12\x19\x0A\x15DEFAULT_SNAT_DISABLED\x10\x04\x12\x1C\x0A\x18NO_MASQUERADING_FOR_IPV6\x10\x05\x12#\x0A\x1FPOD_USES_NODE_NETWORK_NAMESPACE\x10\x06\x12%\x0A!NO_MASQUERADING_FOR_RETURN_PACKET\x10\x07\"\\\x0A\x14GkeNetworkPolicyInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x11\x0A\x09direction\x18\x03 \x01(\x09\x12\x0E\x0A\x06action\x18\x04 \x01(\x09\"\xDE\x02\x0A\x1BGkeNetworkPolicySkippedInfo\x12U\x0A\x06reason\x18\x01 \x01(\x0E2E.google.cloud.networkmanagement.v1.GkeNetworkPolicySkippedInfo.Reason\"\xE7\x01\x0A\x06Reason\x12\x16\x0A\x12REASON_UNSPECIFIED\x10\x00\x12\x1B\x0A\x17NETWORK_POLICY_DISABLED\x10\x01\x12\x1F\x0A\x1BINGRESS_SOURCE_ON_SAME_NODE\x10\x02\x12*\x0A&EGRESS_FROM_NODE_NETWORK_NAMESPACE_POD\x10\x03\x122\x0A.NETWORK_POLICY_NOT_APPLIED_TO_RESPONSE_TRAFFIC\x10\x04\x12'\x0A#NETWORK_POLICY_ANALYSIS_UNSUPPORTED\x10d\"\x88\x01\x0A\x14CloudSQLInstanceInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x04 \x01(\x09\x12\x13\x0A\x0Binternal_ip\x18\x05 \x01(\x09\x12\x13\x0A\x0Bexternal_ip\x18\x06 \x01(\x09\x12\x0E\x0A\x06region\x18\x07 \x01(\x09\"\x92\x01\x0A\x11RedisInstanceInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\x12\x1B\x0A\x13primary_endpoint_ip\x18\x04 \x01(\x09\x12\x18\x0A\x10read_endpoint_ip\x18\x05 \x01(\x09\x12\x0E\x0A\x06region\x18\x06 \x01(\x09\"\xBE\x01\x0A\x10RedisClusterInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\x12/\x0A\x1Ddiscovery_endpoint_ip_address\x18\x04 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12/\x0A\x1Dsecondary_endpoint_ip_address\x18\x05 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12\x10\x0A\x08location\x18\x06 \x01(\x09\"\\\x0A\x11CloudFunctionInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x10\x0A\x08location\x18\x03 \x01(\x09\x12\x12\x0A\x0Aversion_id\x18\x04 \x01(\x03\"`\x0A\x14CloudRunRevisionInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x10\x0A\x08location\x18\x04 \x01(\x09\x12\x13\x0A\x0Bservice_uri\x18\x05 \x01(\x09\"F\x0A\x0FCloudRunJobInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x10\x0A\x08location\x18\x03 \x01(\x09\"_\x0A\x14AppEngineVersionInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x0F\x0A\x07runtime\x18\x03 \x01(\x09\x12\x13\x0A\x0Benvironment\x18\x04 \x01(\x09\"G\x0A\x10VpcConnectorInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x10\x0A\x08location\x18\x03 \x01(\x09\"\xA8\x01\x0A\x1DDirectVpcEgressConnectionInfo\x12\x13\x0A\x0Bnetwork_uri\x18\x01 \x01(\x09\x12\x16\x0A\x0Esubnetwork_uri\x18\x02 \x01(\x09\x12#\x0A\x11selected_ip_range\x18\x03 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12%\x0A\x13selected_ip_address\x18\x04 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12\x0E\x0A\x06region\x18\x05 \x01(\x09\"I\x0A ServerlessExternalConnectionInfo\x12%\x0A\x13selected_ip_address\x18\x01 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\"\x91\x06\x0A\x07NatInfo\x12=\x0A\x04type\x18\x01 \x01(\x0E2/.google.cloud.networkmanagement.v1.NatInfo.Type\x12\x10\x0A\x08protocol\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\x12\x15\x0A\x0Dold_source_ip\x18\x04 \x01(\x09\x12\x15\x0A\x0Dnew_source_ip\x18\x05 \x01(\x09\x12\x1A\x0A\x12old_destination_ip\x18\x06 \x01(\x09\x12\x1A\x0A\x12new_destination_ip\x18\x07 \x01(\x09\x12\x17\x0A\x0Fold_source_port\x18\x08 \x01(\x05\x12\x17\x0A\x0Fnew_source_port\x18\x09 \x01(\x05\x12\x1C\x0A\x14old_destination_port\x18\x0A \x01(\x05\x12\x1C\x0A\x14new_destination_port\x18\x0B \x01(\x05\x12\x12\x0A\x0Arouter_uri\x18\x0C \x01(\x09\x12\x18\x0A\x10nat_gateway_name\x18\x0D \x01(\x09\x12^\x0A\x16cloud_nat_gateway_type\x18\x0E \x01(\x0E2>.google.cloud.networkmanagement.v1.NatInfo.CloudNatGatewayType\"\x99\x01\x0A\x04Type\x12\x14\x0A\x10TYPE_UNSPECIFIED\x10\x00\x12\x18\x0A\x14INTERNAL_TO_EXTERNAL\x10\x01\x12\x18\x0A\x14EXTERNAL_TO_INTERNAL\x10\x02\x12\x0D\x0A\x09CLOUD_NAT\x10\x03\x12\x1B\x0A\x17PRIVATE_SERVICE_CONNECT\x10\x04\x12\x1B\x0A\x17GKE_POD_IP_MASQUERADING\x10\x05\"\xA1\x01\x0A\x13CloudNatGatewayType\x12&\x0A\"CLOUD_NAT_GATEWAY_TYPE_UNSPECIFIED\x10\x00\x12\x10\x0A\x0CPUBLIC_NAT44\x10\x01\x12\x10\x0A\x0CPUBLIC_NAT64\x10\x02\x12\x13\x0A\x0FPRIVATE_NAT_NCC\x10\x03\x12\x16\x0A\x12PRIVATE_NAT_HYBRID\x10\x04\x12\x11\x0A\x0DPRIVATE_NAT64\x10\x05\"\xA4\x02\x0A\x13ProxyConnectionInfo\x12\x10\x0A\x08protocol\x18\x01 \x01(\x09\x12\x15\x0A\x0Dold_source_ip\x18\x02 \x01(\x09\x12\x15\x0A\x0Dnew_source_ip\x18\x03 \x01(\x09\x12\x1A\x0A\x12old_destination_ip\x18\x04 \x01(\x09\x12\x1A\x0A\x12new_destination_ip\x18\x05 \x01(\x09\x12\x17\x0A\x0Fold_source_port\x18\x06 \x01(\x05\x12\x17\x0A\x0Fnew_source_port\x18\x07 \x01(\x05\x12\x1C\x0A\x14old_destination_port\x18\x08 \x01(\x05\x12\x1C\x0A\x14new_destination_port\x18\x09 \x01(\x05\x12\x12\x0A\x0Asubnet_uri\x18\x0A \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x0B \x01(\x09\"\xF2\x04\x0A\x17LoadBalancerBackendInfo\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12\x14\x0A\x0Cinstance_uri\x18\x02 \x01(\x09\x12\x1B\x0A\x13backend_service_uri\x18\x03 \x01(\x09\x12\x1A\x0A\x12instance_group_uri\x18\x04 \x01(\x09\x12\"\x0A\x1Anetwork_endpoint_group_uri\x18\x05 \x01(\x09\x12\x1A\x0A\x12backend_bucket_uri\x18\x08 \x01(\x09\x12\"\x0A\x1Apsc_service_attachment_uri\x18\x09 \x01(\x09\x12\x1D\x0A\x15psc_google_api_target\x18\x0A \x01(\x09\x12\x18\x0A\x10health_check_uri\x18\x06 \x01(\x09\x12\x8C\x01\x0A#health_check_firewalls_config_state\x18\x07 \x01(\x0E2Z.google.cloud.networkmanagement.v1.LoadBalancerBackendInfo.HealthCheckFirewallsConfigStateB\x03\xE0A\x03\"\xCD\x01\x0A\x1FHealthCheckFirewallsConfigState\x123\x0A/HEALTH_CHECK_FIREWALLS_CONFIG_STATE_UNSPECIFIED\x10\x00\x12\x18\x0A\x14FIREWALLS_CONFIGURED\x10\x01\x12\"\x0A\x1EFIREWALLS_PARTIALLY_CONFIGURED\x10\x02\x12\x1C\x0A\x18FIREWALLS_NOT_CONFIGURED\x10\x03\x12\x19\x0A\x15FIREWALLS_UNSUPPORTED\x10\x04\"#\x0A\x11StorageBucketInfo\x12\x0E\x0A\x06bucket\x18\x01 \x01(\x09\"\$\x0A\x11ServerlessNegInfo\x12\x0F\x0A\x07neg_uri\x18\x01 \x01(\x09\">\x0A\x18NgfwPacketInspectionInfo\x12\"\x0A\x1Asecurity_profile_group_uri\x18\x01 \x01(\x09*\xF6\x02\x0A\x10LoadBalancerType\x12\"\x0A\x1ELOAD_BALANCER_TYPE_UNSPECIFIED\x10\x00\x12 \x0A\x1CHTTPS_ADVANCED_LOAD_BALANCER\x10\x01\x12\x17\x0A\x13HTTPS_LOAD_BALANCER\x10\x02\x12 \x0A\x1CREGIONAL_HTTPS_LOAD_BALANCER\x10\x03\x12 \x0A\x1CINTERNAL_HTTPS_LOAD_BALANCER\x10\x04\x12\x1B\x0A\x17SSL_PROXY_LOAD_BALANCER\x10\x05\x12\x1B\x0A\x17TCP_PROXY_LOAD_BALANCER\x10\x06\x12\$\x0A INTERNAL_TCP_PROXY_LOAD_BALANCER\x10\x07\x12\x19\x0A\x15NETWORK_LOAD_BALANCER\x10\x08\x12 \x0A\x1CLEGACY_NETWORK_LOAD_BALANCER\x10\x09\x12\"\x0A\x1ETCP_UDP_INTERNAL_LOAD_BALANCER\x10\x0AB\xF9\x01\x0A%com.google.cloud.networkmanagement.v1B\x0ATraceProtoP\x01ZScloud.google.com/go/networkmanagement/apiv1/networkmanagementpb;networkmanagementpb\xAA\x02!Google.Cloud.NetworkManagement.V1\xCA\x02!Google\\Cloud\\NetworkManagement\\V1\xEA\x02\$Google::Cloud::NetworkManagement::V1b\x06proto3"
+ "\x0A\xC1\xB2\x01\x0A-google/cloud/networkmanagement/v1/trace.proto\x12!google.cloud.networkmanagement.v1\x1A\x1Bgoogle/api/field_info.proto\"\xA1\x01\x0A\x05Trace\x12F\x0A\x0Dendpoint_info\x18\x01 \x01(\x0B2/.google.cloud.networkmanagement.v1.EndpointInfo\x126\x0A\x05steps\x18\x02 \x03(\x0B2'.google.cloud.networkmanagement.v1.Step\x12\x18\x0A\x10forward_trace_id\x18\x04 \x01(\x05\"\xEB#\x0A\x04Step\x12\x13\x0A\x0Bdescription\x18\x01 \x01(\x09\x12<\x0A\x05state\x18\x02 \x01(\x0E2-.google.cloud.networkmanagement.v1.Step.State\x12\x13\x0A\x0Bcauses_drop\x18\x03 \x01(\x08\x12\x12\x0A\x0Aproject_id\x18\x04 \x01(\x09\x12C\x0A\x08instance\x18\x05 \x01(\x0B2/.google.cloud.networkmanagement.v1.InstanceInfoH\x00\x12C\x0A\x08firewall\x18\x06 \x01(\x0B2/.google.cloud.networkmanagement.v1.FirewallInfoH\x00\x12=\x0A\x05route\x18\x07 \x01(\x0B2,.google.cloud.networkmanagement.v1.RouteInfoH\x00\x12C\x0A\x08endpoint\x18\x08 \x01(\x0B2/.google.cloud.networkmanagement.v1.EndpointInfoH\x00\x12N\x0A\x0Egoogle_service\x18\x18 \x01(\x0B24.google.cloud.networkmanagement.v1.GoogleServiceInfoH\x00\x12P\x0A\x0Fforwarding_rule\x18\x09 \x01(\x0B25.google.cloud.networkmanagement.v1.ForwardingRuleInfoH\x00\x12L\x0A\x0Dhybrid_subnet\x18\$ \x01(\x0B23.google.cloud.networkmanagement.v1.HybridSubnetInfoH\x00\x12H\x0A\x0Bvpn_gateway\x18\x0A \x01(\x0B21.google.cloud.networkmanagement.v1.VpnGatewayInfoH\x00\x12F\x0A\x0Avpn_tunnel\x18\x0B \x01(\x0B20.google.cloud.networkmanagement.v1.VpnTunnelInfoH\x00\x12`\x0A\x17interconnect_attachment\x18# \x01(\x0B2=.google.cloud.networkmanagement.v1.InterconnectAttachmentInfoH\x00\x12L\x0A\x0Dvpc_connector\x18\x15 \x01(\x0B23.google.cloud.networkmanagement.v1.VpcConnectorInfoH\x00\x12h\x0A\x1Cdirect_vpc_egress_connection\x18! \x01(\x0B2@.google.cloud.networkmanagement.v1.DirectVpcEgressConnectionInfoH\x00\x12m\x0A\x1Eserverless_external_connection\x18\" \x01(\x0B2C.google.cloud.networkmanagement.v1.ServerlessExternalConnectionInfoH\x00\x12A\x0A\x07deliver\x18\x0C \x01(\x0B2..google.cloud.networkmanagement.v1.DeliverInfoH\x00\x12A\x0A\x07forward\x18\x0D \x01(\x0B2..google.cloud.networkmanagement.v1.ForwardInfoH\x00\x12=\x0A\x05abort\x18\x0E \x01(\x0B2,.google.cloud.networkmanagement.v1.AbortInfoH\x00\x12;\x0A\x04drop\x18\x0F \x01(\x0B2+.google.cloud.networkmanagement.v1.DropInfoH\x00\x12P\x0A\x0Dload_balancer\x18\x10 \x01(\x0B23.google.cloud.networkmanagement.v1.LoadBalancerInfoB\x02\x18\x01H\x00\x12A\x0A\x07network\x18\x11 \x01(\x0B2..google.cloud.networkmanagement.v1.NetworkInfoH\x00\x12F\x0A\x0Agke_master\x18\x12 \x01(\x0B20.google.cloud.networkmanagement.v1.GKEMasterInfoH\x00\x12@\x0A\x07gke_pod\x18% \x01(\x0B2-.google.cloud.networkmanagement.v1.GkePodInfoH\x00\x12_\x0A\x17ip_masquerading_skipped\x18& \x01(\x0B2<.google.cloud.networkmanagement.v1.IpMasqueradingSkippedInfoH\x00\x12U\x0A\x12gke_network_policy\x18' \x01(\x0B27.google.cloud.networkmanagement.v1.GkeNetworkPolicyInfoH\x00\x12d\x0A\x1Agke_network_policy_skipped\x18( \x01(\x0B2>.google.cloud.networkmanagement.v1.GkeNetworkPolicySkippedInfoH\x00\x12U\x0A\x12cloud_sql_instance\x18\x13 \x01(\x0B27.google.cloud.networkmanagement.v1.CloudSQLInstanceInfoH\x00\x12N\x0A\x0Eredis_instance\x18\x1E \x01(\x0B24.google.cloud.networkmanagement.v1.RedisInstanceInfoH\x00\x12L\x0A\x0Dredis_cluster\x18\x1F \x01(\x0B23.google.cloud.networkmanagement.v1.RedisClusterInfoH\x00\x12N\x0A\x0Ecloud_function\x18\x14 \x01(\x0B24.google.cloud.networkmanagement.v1.CloudFunctionInfoH\x00\x12U\x0A\x12app_engine_version\x18\x16 \x01(\x0B27.google.cloud.networkmanagement.v1.AppEngineVersionInfoH\x00\x12U\x0A\x12cloud_run_revision\x18\x17 \x01(\x0B27.google.cloud.networkmanagement.v1.CloudRunRevisionInfoH\x00\x12K\x0A\x0Dcloud_run_job\x18- \x01(\x0B22.google.cloud.networkmanagement.v1.CloudRunJobInfoH\x00\x129\x0A\x03nat\x18\x19 \x01(\x0B2*.google.cloud.networkmanagement.v1.NatInfoH\x00\x12R\x0A\x10proxy_connection\x18\x1A \x01(\x0B26.google.cloud.networkmanagement.v1.ProxyConnectionInfoH\x00\x12`\x0A\x1Aload_balancer_backend_info\x18\x1B \x01(\x0B2:.google.cloud.networkmanagement.v1.LoadBalancerBackendInfoH\x00\x12N\x0A\x0Estorage_bucket\x18\x1C \x01(\x0B24.google.cloud.networkmanagement.v1.StorageBucketInfoH\x00\x12N\x0A\x0Eserverless_neg\x18\x1D \x01(\x0B24.google.cloud.networkmanagement.v1.ServerlessNegInfoH\x00\x12]\x0A\x16ngfw_packet_inspection\x18* \x01(\x0B2;.google.cloud.networkmanagement.v1.NgfwPacketInspectionInfoH\x00\x12Z\x0A\x16dms_private_connection\x18+ \x01(\x0B28.google.cloud.networkmanagement.v1.PrivateConnectionInfoH\x00\"\xF5\x0A\x0A\x05State\x12\x15\x0A\x11STATE_UNSPECIFIED\x10\x00\x12\x17\x0A\x13START_FROM_INSTANCE\x10\x01\x12\x17\x0A\x13START_FROM_INTERNET\x10\x02\x12\x1D\x0A\x19START_FROM_GOOGLE_SERVICE\x10\x1B\x12\x1E\x0A\x1ASTART_FROM_PRIVATE_NETWORK\x10\x03\x12\x19\x0A\x15START_FROM_GKE_MASTER\x10\x15\x12!\x0A\x1DSTART_FROM_CLOUD_SQL_INSTANCE\x10\x16\x12\x16\x0A\x12START_FROM_GKE_POD\x10'\x12\x1D\x0A\x19START_FROM_REDIS_INSTANCE\x10 \x12\x1C\x0A\x18START_FROM_REDIS_CLUSTER\x10!\x12\x1D\x0A\x19START_FROM_CLOUD_FUNCTION\x10\x17\x12!\x0A\x1DSTART_FROM_APP_ENGINE_VERSION\x10\x19\x12!\x0A\x1DSTART_FROM_CLOUD_RUN_REVISION\x10\x1A\x12\x1C\x0A\x18START_FROM_CLOUD_RUN_JOB\x102\x12\x1D\x0A\x19START_FROM_STORAGE_BUCKET\x10\x1D\x12\$\x0A START_FROM_PSC_PUBLISHED_SERVICE\x10\x1E\x12\x1D\x0A\x19START_FROM_SERVERLESS_NEG\x10\x1F\x12%\x0A!START_FROM_DMS_PRIVATE_CONNECTION\x100\x12\x1F\x0A\x1BAPPLY_INGRESS_FIREWALL_RULE\x10\x04\x12\x1E\x0A\x1AAPPLY_EGRESS_FIREWALL_RULE\x10\x05\x12\x0F\x0A\x0BAPPLY_ROUTE\x10\x06\x12\x19\x0A\x15APPLY_FORWARDING_RULE\x10\x07\x12!\x0A\x1DANALYZE_LOAD_BALANCER_BACKEND\x10\x1C\x12\x15\x0A\x11SPOOFING_APPROVED\x10\x08\x12\x16\x0A\x12ARRIVE_AT_INSTANCE\x10\x09\x12(\x0A ARRIVE_AT_INTERNAL_LOAD_BALANCER\x10\x0A\x1A\x02\x08\x01\x12(\x0A ARRIVE_AT_EXTERNAL_LOAD_BALANCER\x10\x0B\x1A\x02\x08\x01\x12\x1B\x0A\x17ARRIVE_AT_HYBRID_SUBNET\x10&\x12\x19\x0A\x15ARRIVE_AT_VPN_GATEWAY\x10\x0C\x12\x18\x0A\x14ARRIVE_AT_VPN_TUNNEL\x10\x0D\x12%\x0A!ARRIVE_AT_INTERCONNECT_ATTACHMENT\x10%\x12\x1B\x0A\x17ARRIVE_AT_VPC_CONNECTOR\x10\x18\x12\x15\x0A\x11ARRIVE_AT_GKE_POD\x10,\x12 \x0A\x1CDIRECT_VPC_EGRESS_CONNECTION\x10#\x12\"\x0A\x1ESERVERLESS_EXTERNAL_CONNECTION\x10\$\x12\x1A\x0A\x16NGFW_PACKET_INSPECTION\x10/\x12\x07\x0A\x03NAT\x10\x0E\x12 \x0A\x1CSKIP_GKE_POD_IP_MASQUERADING\x10(\x12#\x0A\x1FSKIP_GKE_INGRESS_NETWORK_POLICY\x10)\x12\"\x0A\x1ESKIP_GKE_EGRESS_NETWORK_POLICY\x10*\x12\$\x0A APPLY_INGRESS_GKE_NETWORK_POLICY\x10-\x12#\x0A\x1FAPPLY_EGRESS_GKE_NETWORK_POLICY\x10.\x12\x14\x0A\x10PROXY_CONNECTION\x10\x0F\x12\x0B\x0A\x07DELIVER\x10\x10\x12\x08\x0A\x04DROP\x10\x11\x12\x0B\x0A\x07FORWARD\x10\x12\x12\x09\x0A\x05ABORT\x10\x13\x12\x1D\x0A\x19VIEWER_PERMISSION_MISSING\x10\x14B\x0B\x0A\x09step_info\"\xF7\x02\x0A\x0CInstanceInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x11\x0A\x09interface\x18\x03 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x04 \x01(\x09\x12\x13\x0A\x0Binternal_ip\x18\x05 \x01(\x09\x12\x13\x0A\x0Bexternal_ip\x18\x06 \x01(\x09\x12\x14\x0A\x0Cnetwork_tags\x18\x07 \x03(\x09\x12\x1B\x0A\x0Fservice_account\x18\x08 \x01(\x09B\x02\x18\x01\x12\"\x0A\x1Apsc_network_attachment_uri\x18\x09 \x01(\x09\x12\x13\x0A\x07running\x18\x0A \x01(\x08B\x02\x18\x01\x12F\x0A\x06status\x18\x0B \x01(\x0E26.google.cloud.networkmanagement.v1.InstanceInfo.Status\">\x0A\x06Status\x12\x16\x0A\x12STATUS_UNSPECIFIED\x10\x00\x12\x0B\x0A\x07RUNNING\x10\x01\x12\x0F\x0A\x0BNOT_RUNNING\x10\x02\"v\x0A\x0BNetworkInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x1A\x0A\x12matched_subnet_uri\x18\x05 \x01(\x09\x12\x18\x0A\x10matched_ip_range\x18\x04 \x01(\x09\x12\x0E\x0A\x06region\x18\x06 \x01(\x09\"\xAF\x07\x0A\x0CFirewallInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x11\x0A\x09direction\x18\x03 \x01(\x09\x12\x0E\x0A\x06action\x18\x04 \x01(\x09\x12\x10\x0A\x08priority\x18\x05 \x01(\x05\x12\x13\x0A\x0Bnetwork_uri\x18\x06 \x01(\x09\x12\x13\x0A\x0Btarget_tags\x18\x07 \x03(\x09\x12\x1F\x0A\x17target_service_accounts\x18\x08 \x03(\x09\x12\x0E\x0A\x06policy\x18\x09 \x01(\x09\x12\x12\x0A\x0Apolicy_uri\x18\x0B \x01(\x09\x12\\\x0A\x12firewall_rule_type\x18\x0A \x01(\x0E2@.google.cloud.networkmanagement.v1.FirewallInfo.FirewallRuleType\x12\x17\x0A\x0Fpolicy_priority\x18\x0C \x01(\x05\x12O\x0A\x0Btarget_type\x18\x0D \x01(\x0E2:.google.cloud.networkmanagement.v1.FirewallInfo.TargetType\"\xBC\x03\x0A\x10FirewallRuleType\x12\"\x0A\x1EFIREWALL_RULE_TYPE_UNSPECIFIED\x10\x00\x12%\x0A!HIERARCHICAL_FIREWALL_POLICY_RULE\x10\x01\x12\x15\x0A\x11VPC_FIREWALL_RULE\x10\x02\x12\x1D\x0A\x19IMPLIED_VPC_FIREWALL_RULE\x10\x03\x12/\x0A+SERVERLESS_VPC_ACCESS_MANAGED_FIREWALL_RULE\x10\x04\x12 \x0A\x1CNETWORK_FIREWALL_POLICY_RULE\x10\x05\x12)\x0A%NETWORK_REGIONAL_FIREWALL_POLICY_RULE\x10\x06\x12'\x0A#SYSTEM_NETWORK_FIREWALL_POLICY_RULE\x10\x07\x120\x0A,SYSTEM_REGIONAL_NETWORK_FIREWALL_POLICY_RULE\x10\x08\x12\$\x0A UNSUPPORTED_FIREWALL_POLICY_RULE\x10d\x12\x12\x0A\x0ETRACKING_STATE\x10e\x12\x14\x0A\x10ANALYSIS_SKIPPED\x10f\"Q\x0A\x0ATargetType\x12\x1B\x0A\x17TARGET_TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09INSTANCES\x10\x01\x12\x17\x0A\x13INTERNAL_MANAGED_LB\x10\x02\"\xEC\x0B\x0A\x09RouteInfo\x12J\x0A\x0Aroute_type\x18\x08 \x01(\x0E26.google.cloud.networkmanagement.v1.RouteInfo.RouteType\x12O\x0A\x0Dnext_hop_type\x18\x09 \x01(\x0E28.google.cloud.networkmanagement.v1.RouteInfo.NextHopType\x12P\x0A\x0Broute_scope\x18\x0E \x01(\x0E27.google.cloud.networkmanagement.v1.RouteInfo.RouteScopeB\x02\x18\x01\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x0E\x0A\x06region\x18\x13 \x01(\x09\x12\x15\x0A\x0Ddest_ip_range\x18\x03 \x01(\x09\x12\x14\x0A\x08next_hop\x18\x04 \x01(\x09B\x02\x18\x01\x12\x13\x0A\x0Bnetwork_uri\x18\x05 \x01(\x09\x12\x10\x0A\x08priority\x18\x06 \x01(\x05\x12\x15\x0A\x0Dinstance_tags\x18\x07 \x03(\x09\x12\x14\x0A\x0Csrc_ip_range\x18\x0A \x01(\x09\x12\x18\x0A\x10dest_port_ranges\x18\x0B \x03(\x09\x12\x17\x0A\x0Fsrc_port_ranges\x18\x0C \x03(\x09\x12\x11\x0A\x09protocols\x18\x0D \x03(\x09\x12\x18\x0A\x0Bncc_hub_uri\x18\x0F \x01(\x09H\x00\x88\x01\x01\x12\x1A\x0A\x0Dncc_spoke_uri\x18\x10 \x01(\x09H\x01\x88\x01\x01\x12/\x0A\"advertised_route_source_router_uri\x18\x11 \x01(\x09H\x02\x88\x01\x01\x12.\x0A\x1Dadvertised_route_next_hop_uri\x18\x12 \x01(\x09B\x02\x18\x01H\x03\x88\x01\x01\x12\x14\x0A\x0Cnext_hop_uri\x18\x14 \x01(\x09\x12\x1C\x0A\x14next_hop_network_uri\x18\x15 \x01(\x09\x12\x1D\x0A\x15originating_route_uri\x18\x16 \x01(\x09\x12&\x0A\x1Eoriginating_route_display_name\x18\x17 \x01(\x09\x12\x19\x0A\x11ncc_hub_route_uri\x18\x18 \x01(\x09\"\xAB\x01\x0A\x09RouteType\x12\x1A\x0A\x16ROUTE_TYPE_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06SUBNET\x10\x01\x12\x0A\x0A\x06STATIC\x10\x02\x12\x0B\x0A\x07DYNAMIC\x10\x03\x12\x12\x0A\x0EPEERING_SUBNET\x10\x04\x12\x12\x0A\x0EPEERING_STATIC\x10\x05\x12\x13\x0A\x0FPEERING_DYNAMIC\x10\x06\x12\x10\x0A\x0CPOLICY_BASED\x10\x07\x12\x0E\x0A\x0AADVERTISED\x10e\"\xEA\x02\x0A\x0BNextHopType\x12\x1D\x0A\x19NEXT_HOP_TYPE_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BNEXT_HOP_IP\x10\x01\x12\x15\x0A\x11NEXT_HOP_INSTANCE\x10\x02\x12\x14\x0A\x10NEXT_HOP_NETWORK\x10\x03\x12\x14\x0A\x10NEXT_HOP_PEERING\x10\x04\x12\x19\x0A\x15NEXT_HOP_INTERCONNECT\x10\x05\x12\x17\x0A\x13NEXT_HOP_VPN_TUNNEL\x10\x06\x12\x18\x0A\x14NEXT_HOP_VPN_GATEWAY\x10\x07\x12\x1D\x0A\x19NEXT_HOP_INTERNET_GATEWAY\x10\x08\x12\x16\x0A\x12NEXT_HOP_BLACKHOLE\x10\x09\x12\x10\x0A\x0CNEXT_HOP_ILB\x10\x0A\x12\x1D\x0A\x19NEXT_HOP_ROUTER_APPLIANCE\x10\x0B\x12\x14\x0A\x10NEXT_HOP_NCC_HUB\x10\x0C\x12\x1C\x0A\x18SECURE_WEB_PROXY_GATEWAY\x10\x0D\"C\x0A\x0ARouteScope\x12\x1B\x0A\x17ROUTE_SCOPE_UNSPECIFIED\x10\x00\x12\x0B\x0A\x07NETWORK\x10\x01\x12\x0B\x0A\x07NCC_HUB\x10\x02B\x0E\x0A\x0C_ncc_hub_uriB\x10\x0A\x0E_ncc_spoke_uriB%\x0A#_advertised_route_source_router_uriB \x0A\x1E_advertised_route_next_hop_uri\"\xDA\x02\x0A\x11GoogleServiceInfo\x12\x11\x0A\x09source_ip\x18\x01 \x01(\x09\x12c\x0A\x13google_service_type\x18\x02 \x01(\x0E2F.google.cloud.networkmanagement.v1.GoogleServiceInfo.GoogleServiceType\"\xCC\x01\x0A\x11GoogleServiceType\x12#\x0A\x1FGOOGLE_SERVICE_TYPE_UNSPECIFIED\x10\x00\x12\x07\x0A\x03IAP\x10\x01\x12\$\x0A GFE_PROXY_OR_HEALTH_CHECK_PROBER\x10\x02\x12\x0D\x0A\x09CLOUD_DNS\x10\x03\x12\x0E\x0A\x0AGOOGLE_API\x10\x04\x12\x12\x0A\x0EGOOGLE_API_PSC\x10\x05\x12\x15\x0A\x11GOOGLE_API_VPC_SC\x10\x06\x12\x19\x0A\x15SERVERLESS_VPC_ACCESS\x10\x07\"\x8E\x02\x0A\x12ForwardingRuleInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x18\x0A\x10matched_protocol\x18\x03 \x01(\x09\x12\x1A\x0A\x12matched_port_range\x18\x06 \x01(\x09\x12\x0B\x0A\x03vip\x18\x04 \x01(\x09\x12\x0E\x0A\x06target\x18\x05 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x07 \x01(\x09\x12\x0E\x0A\x06region\x18\x08 \x01(\x09\x12\x1A\x0A\x12load_balancer_name\x18\x09 \x01(\x09\x12\"\x0A\x1Apsc_service_attachment_uri\x18\x0A \x01(\x09\x12\x1D\x0A\x15psc_google_api_target\x18\x0B \x01(\x09\"\xC2\x04\x0A\x10LoadBalancerInfo\x12`\x0A\x12load_balancer_type\x18\x01 \x01(\x0E2D.google.cloud.networkmanagement.v1.LoadBalancerInfo.LoadBalancerType\x12\x1C\x0A\x10health_check_uri\x18\x02 \x01(\x09B\x02\x18\x01\x12H\x0A\x08backends\x18\x03 \x03(\x0B26.google.cloud.networkmanagement.v1.LoadBalancerBackend\x12U\x0A\x0Cbackend_type\x18\x04 \x01(\x0E2?.google.cloud.networkmanagement.v1.LoadBalancerInfo.BackendType\x12\x13\x0A\x0Bbackend_uri\x18\x05 \x01(\x09\"\x8F\x01\x0A\x10LoadBalancerType\x12\"\x0A\x1ELOAD_BALANCER_TYPE_UNSPECIFIED\x10\x00\x12\x14\x0A\x10INTERNAL_TCP_UDP\x10\x01\x12\x13\x0A\x0FNETWORK_TCP_UDP\x10\x02\x12\x0E\x0A\x0AHTTP_PROXY\x10\x03\x12\x0D\x0A\x09TCP_PROXY\x10\x04\x12\x0D\x0A\x09SSL_PROXY\x10\x05\"f\x0A\x0BBackendType\x12\x1C\x0A\x18BACKEND_TYPE_UNSPECIFIED\x10\x00\x12\x13\x0A\x0FBACKEND_SERVICE\x10\x01\x12\x0F\x0A\x0BTARGET_POOL\x10\x02\x12\x13\x0A\x0FTARGET_INSTANCE\x10\x03\"\xF6\x02\x0A\x13LoadBalancerBackend\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12t\x0A\x1Bhealth_check_firewall_state\x18\x03 \x01(\x0E2O.google.cloud.networkmanagement.v1.LoadBalancerBackend.HealthCheckFirewallState\x12,\x0A\$health_check_allowing_firewall_rules\x18\x04 \x03(\x09\x12,\x0A\$health_check_blocking_firewall_rules\x18\x05 \x03(\x09\"j\x0A\x18HealthCheckFirewallState\x12+\x0A'HEALTH_CHECK_FIREWALL_STATE_UNSPECIFIED\x10\x00\x12\x0E\x0A\x0ACONFIGURED\x10\x01\x12\x11\x0A\x0DMISCONFIGURED\x10\x02\"E\x0A\x10HybridSubnetInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x0E\x0A\x06region\x18\x03 \x01(\x09\"\x84\x01\x0A\x0EVpnGatewayInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\x12\x12\x0A\x0Aip_address\x18\x04 \x01(\x09\x12\x16\x0A\x0Evpn_tunnel_uri\x18\x05 \x01(\x09\x12\x0E\x0A\x06region\x18\x06 \x01(\x09\"\xEE\x02\x0A\x0DVpnTunnelInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x16\x0A\x0Esource_gateway\x18\x03 \x01(\x09\x12\x16\x0A\x0Eremote_gateway\x18\x04 \x01(\x09\x12\x19\x0A\x11remote_gateway_ip\x18\x05 \x01(\x09\x12\x19\x0A\x11source_gateway_ip\x18\x06 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x07 \x01(\x09\x12\x0E\x0A\x06region\x18\x08 \x01(\x09\x12R\x0A\x0Crouting_type\x18\x09 \x01(\x0E2<.google.cloud.networkmanagement.v1.VpnTunnelInfo.RoutingType\"[\x0A\x0BRoutingType\x12\x1C\x0A\x18ROUTING_TYPE_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BROUTE_BASED\x10\x01\x12\x10\x0A\x0CPOLICY_BASED\x10\x02\x12\x0B\x0A\x07DYNAMIC\x10\x03\"\xEB\x02\x0A\x1AInterconnectAttachmentInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x18\x0A\x10interconnect_uri\x18\x03 \x01(\x09\x12\x0E\x0A\x06region\x18\x04 \x01(\x09\x12\x18\x0A\x10cloud_router_uri\x18\x05 \x01(\x09\x12P\x0A\x04type\x18\x06 \x01(\x0E2B.google.cloud.networkmanagement.v1.InterconnectAttachmentInfo.Type\x122\x0A l2_attachment_matched_ip_address\x18\x07 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\"`\x0A\x04Type\x12\x14\x0A\x10TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09DEDICATED\x10\x01\x12\x0B\x0A\x07PARTNER\x10\x02\x12\x14\x0A\x10PARTNER_PROVIDER\x10\x03\x12\x10\x0A\x0CL2_DEDICATED\x10\x04\"\xD1\x01\x0A\x0CEndpointInfo\x12\x11\x0A\x09source_ip\x18\x01 \x01(\x09\x12\x16\x0A\x0Edestination_ip\x18\x02 \x01(\x09\x12\x10\x0A\x08protocol\x18\x03 \x01(\x09\x12\x13\x0A\x0Bsource_port\x18\x04 \x01(\x05\x12\x18\x0A\x10destination_port\x18\x05 \x01(\x05\x12\x1A\x0A\x12source_network_uri\x18\x06 \x01(\x09\x12\x1F\x0A\x17destination_network_uri\x18\x07 \x01(\x09\x12\x18\x0A\x10source_agent_uri\x18\x08 \x01(\x09\"\x83\x07\x0A\x0BDeliverInfo\x12E\x0A\x06target\x18\x01 \x01(\x0E25.google.cloud.networkmanagement.v1.DeliverInfo.Target\x12\x14\x0A\x0Cresource_uri\x18\x02 \x01(\x09\x12\x1C\x0A\x0Aip_address\x18\x03 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12\x16\x0A\x0Estorage_bucket\x18\x04 \x01(\x09\x12\x1D\x0A\x15psc_google_api_target\x18\x05 \x01(\x09\x12]\x0A\x13google_service_type\x18\x06 \x01(\x0E2@.google.cloud.networkmanagement.v1.DeliverInfo.GoogleServiceType\"\xB3\x03\x0A\x06Target\x12\x16\x0A\x12TARGET_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08INSTANCE\x10\x01\x12\x0C\x0A\x08INTERNET\x10\x02\x12\x0E\x0A\x0AGOOGLE_API\x10\x03\x12\x0E\x0A\x0AGKE_MASTER\x10\x04\x12\x16\x0A\x12CLOUD_SQL_INSTANCE\x10\x05\x12\x19\x0A\x15PSC_PUBLISHED_SERVICE\x10\x06\x12\x12\x0A\x0EPSC_GOOGLE_API\x10\x07\x12\x0E\x0A\x0APSC_VPC_SC\x10\x08\x12\x12\x0A\x0ESERVERLESS_NEG\x10\x09\x12\x12\x0A\x0ESTORAGE_BUCKET\x10\x0A\x12\x13\x0A\x0FPRIVATE_NETWORK\x10\x0B\x12\x12\x0A\x0ECLOUD_FUNCTION\x10\x0C\x12\x16\x0A\x12APP_ENGINE_VERSION\x10\x0D\x12\x16\x0A\x12CLOUD_RUN_REVISION\x10\x0E\x12\x1A\x0A\x16GOOGLE_MANAGED_SERVICE\x10\x0F\x12\x12\x0A\x0EREDIS_INSTANCE\x10\x10\x12\x11\x0A\x0DREDIS_CLUSTER\x10\x11\x12\x0B\x0A\x07GKE_POD\x10\x13\x12\x11\x0A\x0DCLOUD_RUN_JOB\x10\x14\x12\x1A\x0A\x16DMS_PRIVATE_CONNECTION\x10\x15\"\xAC\x01\x0A\x11GoogleServiceType\x12#\x0A\x1FGOOGLE_SERVICE_TYPE_UNSPECIFIED\x10\x00\x12\x07\x0A\x03IAP\x10\x01\x12\$\x0A GFE_PROXY_OR_HEALTH_CHECK_PROBER\x10\x02\x12\x0D\x0A\x09CLOUD_DNS\x10\x03\x12\x19\x0A\x15PRIVATE_GOOGLE_ACCESS\x10\x04\x12\x19\x0A\x15SERVERLESS_VPC_ACCESS\x10\x05\"\x89\x03\x0A\x0BForwardInfo\x12E\x0A\x06target\x18\x01 \x01(\x0E25.google.cloud.networkmanagement.v1.ForwardInfo.Target\x12\x14\x0A\x0Cresource_uri\x18\x02 \x01(\x09\x12\x1C\x0A\x0Aip_address\x18\x03 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\"\xFE\x01\x0A\x06Target\x12\x16\x0A\x12TARGET_UNSPECIFIED\x10\x00\x12\x0F\x0A\x0BPEERING_VPC\x10\x01\x12\x0F\x0A\x0BVPN_GATEWAY\x10\x02\x12\x10\x0A\x0CINTERCONNECT\x10\x03\x12\x12\x0A\x0AGKE_MASTER\x10\x04\x1A\x02\x08\x01\x12\"\x0A\x1EIMPORTED_CUSTOM_ROUTE_NEXT_HOP\x10\x05\x12\x1A\x0A\x12CLOUD_SQL_INSTANCE\x10\x06\x1A\x02\x08\x01\x12\x13\x0A\x0FANOTHER_PROJECT\x10\x07\x12\x0B\x0A\x07NCC_HUB\x10\x08\x12\x14\x0A\x10ROUTER_APPLIANCE\x10\x09\x12\x1C\x0A\x18SECURE_WEB_PROXY_GATEWAY\x10\x0A\"\x85\x0D\x0A\x09AbortInfo\x12A\x0A\x05cause\x18\x01 \x01(\x0E22.google.cloud.networkmanagement.v1.AbortInfo.Cause\x12\x14\x0A\x0Cresource_uri\x18\x02 \x01(\x09\x12\x1C\x0A\x0Aip_address\x18\x04 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12#\x0A\x1Bprojects_missing_permission\x18\x03 \x03(\x09\"\xDB\x0B\x0A\x05Cause\x12\x15\x0A\x11CAUSE_UNSPECIFIED\x10\x00\x12\x17\x0A\x0FUNKNOWN_NETWORK\x10\x01\x1A\x02\x08\x01\x12\x17\x0A\x0FUNKNOWN_PROJECT\x10\x03\x1A\x02\x08\x01\x12\x16\x0A\x0ENO_EXTERNAL_IP\x10\x07\x1A\x02\x08\x01\x12\x1E\x0A\x16UNINTENDED_DESTINATION\x10\x08\x1A\x02\x08\x01\x12!\x0A\x19SOURCE_ENDPOINT_NOT_FOUND\x10\x0B\x1A\x02\x08\x01\x12!\x0A\x19MISMATCHED_SOURCE_NETWORK\x10\x0C\x1A\x02\x08\x01\x12&\x0A\x1EDESTINATION_ENDPOINT_NOT_FOUND\x10\x0D\x1A\x02\x08\x01\x12&\x0A\x1EMISMATCHED_DESTINATION_NETWORK\x10\x0E\x1A\x02\x08\x01\x12\x0E\x0A\x0AUNKNOWN_IP\x10\x02\x12%\x0A!GOOGLE_MANAGED_SERVICE_UNKNOWN_IP\x10 \x12+\x0A'SOURCE_IP_ADDRESS_NOT_IN_SOURCE_NETWORK\x10\x17\x12\x15\x0A\x11PERMISSION_DENIED\x10\x04\x12*\x0A&PERMISSION_DENIED_NO_CLOUD_NAT_CONFIGS\x10\x1C\x12-\x0A)PERMISSION_DENIED_NO_NEG_ENDPOINT_CONFIGS\x10\x1D\x12-\x0A)PERMISSION_DENIED_NO_CLOUD_ROUTER_CONFIGS\x10\$\x12\x16\x0A\x12NO_SOURCE_LOCATION\x10\x05\x12\"\x0A\x1ENO_SOURCE_GCP_NETWORK_LOCATION\x10*\x12&\x0A\"NO_SOURCE_NON_GCP_NETWORK_LOCATION\x10+\x12\x1F\x0A\x1BNO_SOURCE_INTERNET_LOCATION\x10,\x12\x14\x0A\x10INVALID_ARGUMENT\x10\x06\x12\x12\x0A\x0ETRACE_TOO_LONG\x10\x09\x12\x12\x0A\x0EINTERNAL_ERROR\x10\x0A\x12\x0F\x0A\x0BUNSUPPORTED\x10\x0F\x12\x19\x0A\x15MISMATCHED_IP_VERSION\x10\x10\x12&\x0A\"GKE_KONNECTIVITY_PROXY_UNSUPPORTED\x10\x11\x12\x1D\x0A\x19RESOURCE_CONFIG_NOT_FOUND\x10\x12\x12 \x0A\x1CVM_INSTANCE_CONFIG_NOT_FOUND\x10\x18\x12\x1C\x0A\x18NETWORK_CONFIG_NOT_FOUND\x10\x19\x12\x1D\x0A\x19FIREWALL_CONFIG_NOT_FOUND\x10\x1A\x12\x1A\x0A\x16ROUTE_CONFIG_NOT_FOUND\x10\x1B\x121\x0A-GOOGLE_MANAGED_SERVICE_AMBIGUOUS_PSC_ENDPOINT\x10\x13\x12-\x0A)GOOGLE_MANAGED_SERVICE_AMBIGUOUS_ENDPOINT\x10'\x12\$\x0A SOURCE_PSC_CLOUD_SQL_UNSUPPORTED\x10\x14\x12)\x0A%SOURCE_EXTERNAL_CLOUD_SQL_UNSUPPORTED\x10-\x12\$\x0A SOURCE_REDIS_CLUSTER_UNSUPPORTED\x10\"\x12%\x0A!SOURCE_REDIS_INSTANCE_UNSUPPORTED\x10#\x12&\x0A\"SOURCE_FORWARDING_RULE_UNSUPPORTED\x10\x15\x12\x1B\x0A\x17NON_ROUTABLE_IP_ADDRESS\x10\x16\x12+\x0A'UNKNOWN_ISSUE_IN_GOOGLE_MANAGED_PROJECT\x10\x1E\x12-\x0A)UNSUPPORTED_GOOGLE_MANAGED_PROJECT_CONFIG\x10\x1F\x12\x1B\x0A\x17NO_SERVERLESS_IP_RANGES\x10%\x12 \x0A\x1CIP_VERSION_PROTOCOL_MISMATCH\x10(\x12%\x0A!GKE_POD_UNKNOWN_ENDPOINT_LOCATION\x10)\"\xA5#\x0A\x08DropInfo\x12@\x0A\x05cause\x18\x01 \x01(\x0E21.google.cloud.networkmanagement.v1.DropInfo.Cause\x12\x14\x0A\x0Cresource_uri\x18\x02 \x01(\x09\x12\x11\x0A\x09source_ip\x18\x03 \x01(\x09\x12\x16\x0A\x0Edestination_ip\x18\x04 \x01(\x09\x12\x0E\x0A\x06region\x18\x05 \x01(\x09\x12\x1F\x0A\x17source_geolocation_code\x18\x06 \x01(\x09\x12\$\x0A\x1Cdestination_geolocation_code\x18\x07 \x01(\x09\"\xBE!\x0A\x05Cause\x12\x15\x0A\x11CAUSE_UNSPECIFIED\x10\x00\x12\x1C\x0A\x18UNKNOWN_EXTERNAL_ADDRESS\x10\x01\x12\x19\x0A\x15FOREIGN_IP_DISALLOWED\x10\x02\x12\x11\x0A\x0DFIREWALL_RULE\x10\x03\x12\x0C\x0A\x08NO_ROUTE\x10\x04\x12\x13\x0A\x0FROUTE_BLACKHOLE\x10\x05\x12\x17\x0A\x13ROUTE_WRONG_NETWORK\x10\x06\x12*\x0A&ROUTE_NEXT_HOP_IP_ADDRESS_NOT_RESOLVED\x10*\x12%\x0A!ROUTE_NEXT_HOP_RESOURCE_NOT_FOUND\x10+\x12)\x0A%ROUTE_NEXT_HOP_INSTANCE_WRONG_NETWORK\x101\x12*\x0A&ROUTE_NEXT_HOP_INSTANCE_NON_PRIMARY_IP\x102\x12.\x0A*ROUTE_NEXT_HOP_FORWARDING_RULE_IP_MISMATCH\x103\x12-\x0A)ROUTE_NEXT_HOP_VPN_TUNNEL_NOT_ESTABLISHED\x104\x12/\x0A+ROUTE_NEXT_HOP_FORWARDING_RULE_TYPE_INVALID\x105\x122\x0A.NO_ROUTE_FROM_INTERNET_TO_PRIVATE_IPV6_ADDRESS\x10,\x122\x0A.NO_ROUTE_FROM_INTERNET_TO_PRIVATE_IPV4_ADDRESS\x10m\x12>\x0A:NO_ROUTE_FROM_EXTERNAL_IPV6_SOURCE_TO_PRIVATE_IPV6_ADDRESS\x10b\x12&\x0A\"VPN_TUNNEL_LOCAL_SELECTOR_MISMATCH\x10-\x12'\x0A#VPN_TUNNEL_REMOTE_SELECTOR_MISMATCH\x10.\x12\x1F\x0A\x1BPRIVATE_TRAFFIC_TO_INTERNET\x10\x07\x12\$\x0A PRIVATE_GOOGLE_ACCESS_DISALLOWED\x10\x08\x124\x0A0PRIVATE_GOOGLE_ACCESS_VIA_VPN_TUNNEL_UNSUPPORTED\x10/\x12\x17\x0A\x13NO_EXTERNAL_ADDRESS\x10\x09\x12\x1C\x0A\x18UNKNOWN_INTERNAL_ADDRESS\x10\x0A\x12\x1C\x0A\x18FORWARDING_RULE_MISMATCH\x10\x0B\x12 \x0A\x1CFORWARDING_RULE_NO_INSTANCES\x10\x0C\x128\x0A4FIREWALL_BLOCKING_LOAD_BALANCER_BACKEND_HEALTH_CHECK\x10\x0D\x12:\x0A6INGRESS_FIREWALL_TAGS_UNSUPPORTED_BY_DIRECT_VPC_EGRESS\x10U\x12\x18\x0A\x14INSTANCE_NOT_RUNNING\x10\x0E\x12\x1B\x0A\x17GKE_CLUSTER_NOT_RUNNING\x10\x1B\x12\x17\x0A\x13GKE_POD_NOT_RUNNING\x10g\x12\"\x0A\x1ECLOUD_SQL_INSTANCE_NOT_RUNNING\x10\x1C\x12\x1E\x0A\x1AREDIS_INSTANCE_NOT_RUNNING\x10D\x12\x1D\x0A\x19REDIS_CLUSTER_NOT_RUNNING\x10E\x12\x18\x0A\x14TRAFFIC_TYPE_BLOCKED\x10\x0F\x12\"\x0A\x1EGKE_MASTER_UNAUTHORIZED_ACCESS\x10\x10\x12*\x0A&CLOUD_SQL_INSTANCE_UNAUTHORIZED_ACCESS\x10\x11\x12\x1E\x0A\x1ADROPPED_INSIDE_GKE_SERVICE\x10\x12\x12\$\x0A DROPPED_INSIDE_CLOUD_SQL_SERVICE\x10\x13\x12)\x0A%DROPPED_INSIDE_DMS_PRIVATE_CONNECTION\x10r\x12%\x0A!GOOGLE_MANAGED_SERVICE_NO_PEERING\x10\x14\x12*\x0A&GOOGLE_MANAGED_SERVICE_NO_PSC_ENDPOINT\x10&\x12\x1C\x0A\x18GKE_PSC_ENDPOINT_MISSING\x10\$\x12\$\x0A CLOUD_SQL_INSTANCE_NO_IP_ADDRESS\x10\x15\x12%\x0A!GKE_CONTROL_PLANE_REGION_MISMATCH\x10\x1E\x123\x0A/PUBLIC_GKE_CONTROL_PLANE_TO_PRIVATE_DESTINATION\x10\x1F\x12\x1E\x0A\x1AGKE_CONTROL_PLANE_NO_ROUTE\x10 \x12:\x0A6CLOUD_SQL_INSTANCE_NOT_CONFIGURED_FOR_EXTERNAL_TRAFFIC\x10!\x124\x0A0PUBLIC_CLOUD_SQL_INSTANCE_TO_PRIVATE_DESTINATION\x10\"\x12\x1F\x0A\x1BCLOUD_SQL_INSTANCE_NO_ROUTE\x10#\x12 \x0A\x1CCLOUD_SQL_CONNECTOR_REQUIRED\x10?\x12\x1D\x0A\x19CLOUD_FUNCTION_NOT_ACTIVE\x10\x16\x12\x19\x0A\x15VPC_CONNECTOR_NOT_SET\x10\x17\x12\x1D\x0A\x19VPC_CONNECTOR_NOT_RUNNING\x10\x18\x12,\x0A(VPC_CONNECTOR_SERVERLESS_TRAFFIC_BLOCKED\x10<\x12.\x0A*VPC_CONNECTOR_HEALTH_CHECK_TRAFFIC_BLOCKED\x10=\x12#\x0A\x1FFORWARDING_RULE_REGION_MISMATCH\x10\x19\x12\x1F\x0A\x1BPSC_CONNECTION_NOT_ACCEPTED\x10\x1A\x12-\x0A)PSC_ENDPOINT_ACCESSED_FROM_PEERED_NETWORK\x10)\x12.\x0A*PSC_NEG_PRODUCER_ENDPOINT_NO_GLOBAL_ACCESS\x100\x123\x0A/PSC_NEG_PRODUCER_FORWARDING_RULE_MULTIPLE_PORTS\x106\x12!\x0A\x1DCLOUD_SQL_PSC_NEG_UNSUPPORTED\x10:\x12-\x0A)NO_NAT_SUBNETS_FOR_PSC_SERVICE_ATTACHMENT\x109\x12#\x0A\x1FPSC_TRANSITIVITY_NOT_PROPAGATED\x10@\x12(\x0A\$HYBRID_NEG_NON_DYNAMIC_ROUTE_MATCHED\x107\x12.\x0A*HYBRID_NEG_NON_LOCAL_DYNAMIC_ROUTE_MATCHED\x108\x12 \x0A\x1CCLOUD_RUN_REVISION_NOT_READY\x10\x1D\x12\x1B\x0A\x17CLOUD_RUN_JOB_NOT_READY\x10q\x12'\x0A#DROPPED_INSIDE_PSC_SERVICE_PRODUCER\x10%\x12%\x0A!LOAD_BALANCER_HAS_NO_PROXY_SUBNET\x10'\x12\x1A\x0A\x16CLOUD_NAT_NO_ADDRESSES\x10(\x12\x10\x0A\x0CROUTING_LOOP\x10;\x12)\x0A%DROPPED_INSIDE_GOOGLE_MANAGED_SERVICE\x10>\x12)\x0A%LOAD_BALANCER_BACKEND_INVALID_NETWORK\x10A\x12*\x0A&BACKEND_SERVICE_NAMED_PORT_NOT_DEFINED\x10B\x12'\x0A#DESTINATION_IS_PRIVATE_NAT_IP_RANGE\x10C\x12)\x0A%DROPPED_INSIDE_REDIS_INSTANCE_SERVICE\x10F\x12#\x0A\x1FREDIS_INSTANCE_UNSUPPORTED_PORT\x10G\x12/\x0A+REDIS_INSTANCE_CONNECTING_FROM_PUPI_ADDRESS\x10H\x122\x0A.REDIS_INSTANCE_NO_ROUTE_TO_DESTINATION_NETWORK\x10I\x12!\x0A\x1DREDIS_INSTANCE_NO_EXTERNAL_IP\x10J\x12'\x0A#REDIS_INSTANCE_UNSUPPORTED_PROTOCOL\x10N\x12(\x0A\$DROPPED_INSIDE_REDIS_CLUSTER_SERVICE\x10K\x12\"\x0A\x1EREDIS_CLUSTER_UNSUPPORTED_PORT\x10L\x12 \x0A\x1CREDIS_CLUSTER_NO_EXTERNAL_IP\x10M\x12&\x0A\"REDIS_CLUSTER_UNSUPPORTED_PROTOCOL\x10O\x12*\x0A&NO_ADVERTISED_ROUTE_TO_GCP_DESTINATION\x10P\x12*\x0A&NO_TRAFFIC_SELECTOR_TO_GCP_DESTINATION\x10Q\x125\x0A1NO_KNOWN_ROUTE_FROM_PEERED_NETWORK_TO_DESTINATION\x10R\x12+\x0A'PRIVATE_NAT_TO_PSC_ENDPOINT_UNSUPPORTED\x10S\x12\"\x0A\x1EPSC_PORT_MAPPING_PORT_MISMATCH\x10V\x127\x0A3PSC_PORT_MAPPING_WITHOUT_PSC_CONNECTION_UNSUPPORTED\x10W\x123\x0A/UNSUPPORTED_ROUTE_MATCHED_FOR_NAT64_DESTINATION\x10X\x127\x0A3TRAFFIC_FROM_HYBRID_ENDPOINT_TO_INTERNET_DISALLOWED\x10Y\x12\x1D\x0A\x19NO_MATCHING_NAT64_GATEWAY\x10Z\x12\$\x0A NO_CONFIGURED_PRIVATE_NAT64_RULE\x10k\x12-\x0A)LOAD_BALANCER_BACKEND_IP_VERSION_MISMATCH\x10`\x122\x0A.NO_KNOWN_ROUTE_FROM_NCC_NETWORK_TO_DESTINATION\x10a\x12\"\x0A\x1ECLOUD_NAT_PROTOCOL_UNSUPPORTED\x10c\x12(\x0A\$L2_INTERCONNECT_UNSUPPORTED_PROTOCOL\x10d\x12\$\x0A L2_INTERCONNECT_UNSUPPORTED_PORT\x10e\x12+\x0A'L2_INTERCONNECT_DESTINATION_IP_MISMATCH\x10f\x12.\x0A*NCC_ROUTE_WITHIN_HYBRID_SUBNET_UNSUPPORTED\x10h\x12!\x0A\x1DHYBRID_SUBNET_REGION_MISMATCH\x10i\x12\x1A\x0A\x16HYBRID_SUBNET_NO_ROUTE\x10j\x12\x16\x0A\x12GKE_NETWORK_POLICY\x10l\x12=\x0A9NO_VALID_ROUTE_FROM_GOOGLE_MANAGED_NETWORK_TO_DESTINATION\x10n\x12*\x0A&PRIVATE_CONNECTION_NO_RUNNING_INSTANCE\x10o\"\x81\x01\x0A\x0DGKEMasterInfo\x12\x13\x0A\x0Bcluster_uri\x18\x02 \x01(\x09\x12\x1B\x0A\x13cluster_network_uri\x18\x04 \x01(\x09\x12\x13\x0A\x0Binternal_ip\x18\x05 \x01(\x09\x12\x13\x0A\x0Bexternal_ip\x18\x06 \x01(\x09\x12\x14\x0A\x0Cdns_endpoint\x18\x07 \x01(\x09\"P\x0A\x0AGkePodInfo\x12\x0F\x0A\x07pod_uri\x18\x01 \x01(\x09\x12\x1C\x0A\x0Aip_address\x18\x02 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\"\xBF\x03\x0A\x19IpMasqueradingSkippedInfo\x12S\x0A\x06reason\x18\x01 \x01(\x0E2C.google.cloud.networkmanagement.v1.IpMasqueradingSkippedInfo.Reason\x12\x1C\x0A\x14non_masquerade_range\x18\x02 \x01(\x09\"\xAE\x02\x0A\x06Reason\x12\x16\x0A\x12REASON_UNSPECIFIED\x10\x00\x125\x0A1DESTINATION_IP_IN_CONFIGURED_NON_MASQUERADE_RANGE\x10\x01\x122\x0A.DESTINATION_IP_IN_DEFAULT_NON_MASQUERADE_RANGE\x10\x02\x12\x1C\x0A\x18DESTINATION_ON_SAME_NODE\x10\x03\x12\x19\x0A\x15DEFAULT_SNAT_DISABLED\x10\x04\x12\x1C\x0A\x18NO_MASQUERADING_FOR_IPV6\x10\x05\x12#\x0A\x1FPOD_USES_NODE_NETWORK_NAMESPACE\x10\x06\x12%\x0A!NO_MASQUERADING_FOR_RETURN_PACKET\x10\x07\"\\\x0A\x14GkeNetworkPolicyInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x11\x0A\x09direction\x18\x03 \x01(\x09\x12\x0E\x0A\x06action\x18\x04 \x01(\x09\"\xDE\x02\x0A\x1BGkeNetworkPolicySkippedInfo\x12U\x0A\x06reason\x18\x01 \x01(\x0E2E.google.cloud.networkmanagement.v1.GkeNetworkPolicySkippedInfo.Reason\"\xE7\x01\x0A\x06Reason\x12\x16\x0A\x12REASON_UNSPECIFIED\x10\x00\x12\x1B\x0A\x17NETWORK_POLICY_DISABLED\x10\x01\x12\x1F\x0A\x1BINGRESS_SOURCE_ON_SAME_NODE\x10\x02\x12*\x0A&EGRESS_FROM_NODE_NETWORK_NAMESPACE_POD\x10\x03\x122\x0A.NETWORK_POLICY_NOT_APPLIED_TO_RESPONSE_TRAFFIC\x10\x04\x12'\x0A#NETWORK_POLICY_ANALYSIS_UNSUPPORTED\x10d\"\x88\x01\x0A\x14CloudSQLInstanceInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x04 \x01(\x09\x12\x13\x0A\x0Binternal_ip\x18\x05 \x01(\x09\x12\x13\x0A\x0Bexternal_ip\x18\x06 \x01(\x09\x12\x0E\x0A\x06region\x18\x07 \x01(\x09\"\x92\x01\x0A\x11RedisInstanceInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\x12\x1B\x0A\x13primary_endpoint_ip\x18\x04 \x01(\x09\x12\x18\x0A\x10read_endpoint_ip\x18\x05 \x01(\x09\x12\x0E\x0A\x06region\x18\x06 \x01(\x09\"\xBE\x01\x0A\x10RedisClusterInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\x12/\x0A\x1Ddiscovery_endpoint_ip_address\x18\x04 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12/\x0A\x1Dsecondary_endpoint_ip_address\x18\x05 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12\x10\x0A\x08location\x18\x06 \x01(\x09\"\\\x0A\x11CloudFunctionInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x10\x0A\x08location\x18\x03 \x01(\x09\x12\x12\x0A\x0Aversion_id\x18\x04 \x01(\x03\"`\x0A\x14CloudRunRevisionInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x10\x0A\x08location\x18\x04 \x01(\x09\x12\x13\x0A\x0Bservice_uri\x18\x05 \x01(\x09\"F\x0A\x0FCloudRunJobInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x10\x0A\x08location\x18\x03 \x01(\x09\"_\x0A\x14AppEngineVersionInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x0F\x0A\x07runtime\x18\x03 \x01(\x09\x12\x13\x0A\x0Benvironment\x18\x04 \x01(\x09\"G\x0A\x10VpcConnectorInfo\x12\x14\x0A\x0Cdisplay_name\x18\x01 \x01(\x09\x12\x0B\x0A\x03uri\x18\x02 \x01(\x09\x12\x10\x0A\x08location\x18\x03 \x01(\x09\"\xA8\x01\x0A\x1DDirectVpcEgressConnectionInfo\x12\x13\x0A\x0Bnetwork_uri\x18\x01 \x01(\x09\x12\x16\x0A\x0Esubnetwork_uri\x18\x02 \x01(\x09\x12#\x0A\x11selected_ip_range\x18\x03 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12%\x0A\x13selected_ip_address\x18\x04 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\x12\x0E\x0A\x06region\x18\x05 \x01(\x09\"I\x0A ServerlessExternalConnectionInfo\x12%\x0A\x13selected_ip_address\x18\x01 \x01(\x09B\x08\xE2\x8C\xCF\xD7\x08\x02\x08\x04\"\x91\x06\x0A\x07NatInfo\x12=\x0A\x04type\x18\x01 \x01(\x0E2/.google.cloud.networkmanagement.v1.NatInfo.Type\x12\x10\x0A\x08protocol\x18\x02 \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x03 \x01(\x09\x12\x15\x0A\x0Dold_source_ip\x18\x04 \x01(\x09\x12\x15\x0A\x0Dnew_source_ip\x18\x05 \x01(\x09\x12\x1A\x0A\x12old_destination_ip\x18\x06 \x01(\x09\x12\x1A\x0A\x12new_destination_ip\x18\x07 \x01(\x09\x12\x17\x0A\x0Fold_source_port\x18\x08 \x01(\x05\x12\x17\x0A\x0Fnew_source_port\x18\x09 \x01(\x05\x12\x1C\x0A\x14old_destination_port\x18\x0A \x01(\x05\x12\x1C\x0A\x14new_destination_port\x18\x0B \x01(\x05\x12\x12\x0A\x0Arouter_uri\x18\x0C \x01(\x09\x12\x18\x0A\x10nat_gateway_name\x18\x0D \x01(\x09\x12^\x0A\x16cloud_nat_gateway_type\x18\x0E \x01(\x0E2>.google.cloud.networkmanagement.v1.NatInfo.CloudNatGatewayType\"\x99\x01\x0A\x04Type\x12\x14\x0A\x10TYPE_UNSPECIFIED\x10\x00\x12\x18\x0A\x14INTERNAL_TO_EXTERNAL\x10\x01\x12\x18\x0A\x14EXTERNAL_TO_INTERNAL\x10\x02\x12\x0D\x0A\x09CLOUD_NAT\x10\x03\x12\x1B\x0A\x17PRIVATE_SERVICE_CONNECT\x10\x04\x12\x1B\x0A\x17GKE_POD_IP_MASQUERADING\x10\x05\"\xA1\x01\x0A\x13CloudNatGatewayType\x12&\x0A\"CLOUD_NAT_GATEWAY_TYPE_UNSPECIFIED\x10\x00\x12\x10\x0A\x0CPUBLIC_NAT44\x10\x01\x12\x10\x0A\x0CPUBLIC_NAT64\x10\x02\x12\x13\x0A\x0FPRIVATE_NAT_NCC\x10\x03\x12\x16\x0A\x12PRIVATE_NAT_HYBRID\x10\x04\x12\x11\x0A\x0DPRIVATE_NAT64\x10\x05\"\xA4\x02\x0A\x13ProxyConnectionInfo\x12\x10\x0A\x08protocol\x18\x01 \x01(\x09\x12\x15\x0A\x0Dold_source_ip\x18\x02 \x01(\x09\x12\x15\x0A\x0Dnew_source_ip\x18\x03 \x01(\x09\x12\x1A\x0A\x12old_destination_ip\x18\x04 \x01(\x09\x12\x1A\x0A\x12new_destination_ip\x18\x05 \x01(\x09\x12\x17\x0A\x0Fold_source_port\x18\x06 \x01(\x05\x12\x17\x0A\x0Fnew_source_port\x18\x07 \x01(\x05\x12\x1C\x0A\x14old_destination_port\x18\x08 \x01(\x05\x12\x1C\x0A\x14new_destination_port\x18\x09 \x01(\x05\x12\x12\x0A\x0Asubnet_uri\x18\x0A \x01(\x09\x12\x13\x0A\x0Bnetwork_uri\x18\x0B \x01(\x09\"\xF2\x04\x0A\x17LoadBalancerBackendInfo\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12\x14\x0A\x0Cinstance_uri\x18\x02 \x01(\x09\x12\x1B\x0A\x13backend_service_uri\x18\x03 \x01(\x09\x12\x1A\x0A\x12instance_group_uri\x18\x04 \x01(\x09\x12\"\x0A\x1Anetwork_endpoint_group_uri\x18\x05 \x01(\x09\x12\x1A\x0A\x12backend_bucket_uri\x18\x08 \x01(\x09\x12\"\x0A\x1Apsc_service_attachment_uri\x18\x09 \x01(\x09\x12\x1D\x0A\x15psc_google_api_target\x18\x0A \x01(\x09\x12\x18\x0A\x10health_check_uri\x18\x06 \x01(\x09\x12\x8C\x01\x0A#health_check_firewalls_config_state\x18\x07 \x01(\x0E2Z.google.cloud.networkmanagement.v1.LoadBalancerBackendInfo.HealthCheckFirewallsConfigStateB\x03\xE0A\x03\"\xCD\x01\x0A\x1FHealthCheckFirewallsConfigState\x123\x0A/HEALTH_CHECK_FIREWALLS_CONFIG_STATE_UNSPECIFIED\x10\x00\x12\x18\x0A\x14FIREWALLS_CONFIGURED\x10\x01\x12\"\x0A\x1EFIREWALLS_PARTIALLY_CONFIGURED\x10\x02\x12\x1C\x0A\x18FIREWALLS_NOT_CONFIGURED\x10\x03\x12\x19\x0A\x15FIREWALLS_UNSUPPORTED\x10\x04\"#\x0A\x11StorageBucketInfo\x12\x0E\x0A\x06bucket\x18\x01 \x01(\x09\"\$\x0A\x11ServerlessNegInfo\x12\x0F\x0A\x07neg_uri\x18\x01 \x01(\x09\">\x0A\x18NgfwPacketInspectionInfo\x12\"\x0A\x1Asecurity_profile_group_uri\x18\x01 \x01(\x09\"\$\x0A\x15PrivateConnectionInfo\x12\x0B\x0A\x03uri\x18\x01 \x01(\x09*\xF6\x02\x0A\x10LoadBalancerType\x12\"\x0A\x1ELOAD_BALANCER_TYPE_UNSPECIFIED\x10\x00\x12 \x0A\x1CHTTPS_ADVANCED_LOAD_BALANCER\x10\x01\x12\x17\x0A\x13HTTPS_LOAD_BALANCER\x10\x02\x12 \x0A\x1CREGIONAL_HTTPS_LOAD_BALANCER\x10\x03\x12 \x0A\x1CINTERNAL_HTTPS_LOAD_BALANCER\x10\x04\x12\x1B\x0A\x17SSL_PROXY_LOAD_BALANCER\x10\x05\x12\x1B\x0A\x17TCP_PROXY_LOAD_BALANCER\x10\x06\x12\$\x0A INTERNAL_TCP_PROXY_LOAD_BALANCER\x10\x07\x12\x19\x0A\x15NETWORK_LOAD_BALANCER\x10\x08\x12 \x0A\x1CLEGACY_NETWORK_LOAD_BALANCER\x10\x09\x12\"\x0A\x1ETCP_UDP_INTERNAL_LOAD_BALANCER\x10\x0AB\xF9\x01\x0A%com.google.cloud.networkmanagement.v1B\x0ATraceProtoP\x01ZScloud.google.com/go/networkmanagement/apiv1/networkmanagementpb;networkmanagementpb\xAA\x02!Google.Cloud.NetworkManagement.V1\xCA\x02!Google\\Cloud\\NetworkManagement\\V1\xEA\x02\$Google::Cloud::NetworkManagement::V1b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/NetworkManagement/src/V1/DeliverInfo/Target.php b/NetworkManagement/src/V1/DeliverInfo/Target.php
index 40b896fdb5fd..6ebf625b3df2 100644
--- a/NetworkManagement/src/V1/DeliverInfo/Target.php
+++ b/NetworkManagement/src/V1/DeliverInfo/Target.php
@@ -136,6 +136,12 @@ class Target
* Generated from protobuf enum CLOUD_RUN_JOB = 20;
*/
const CLOUD_RUN_JOB = 20;
+ /**
+ * Target is a DMS Private Connection. Used only for return traces.
+ *
+ * Generated from protobuf enum DMS_PRIVATE_CONNECTION = 21;
+ */
+ const DMS_PRIVATE_CONNECTION = 21;
private static $valueToName = [
self::TARGET_UNSPECIFIED => 'TARGET_UNSPECIFIED',
@@ -158,6 +164,7 @@ class Target
self::REDIS_CLUSTER => 'REDIS_CLUSTER',
self::GKE_POD => 'GKE_POD',
self::CLOUD_RUN_JOB => 'CLOUD_RUN_JOB',
+ self::DMS_PRIVATE_CONNECTION => 'DMS_PRIVATE_CONNECTION',
];
public static function name($value)
diff --git a/NetworkManagement/src/V1/DropInfo/Cause.php b/NetworkManagement/src/V1/DropInfo/Cause.php
index 083e32a5a0b7..971c45718f82 100644
--- a/NetworkManagement/src/V1/DropInfo/Cause.php
+++ b/NetworkManagement/src/V1/DropInfo/Cause.php
@@ -279,6 +279,12 @@ class Cause
* Generated from protobuf enum DROPPED_INSIDE_CLOUD_SQL_SERVICE = 19;
*/
const DROPPED_INSIDE_CLOUD_SQL_SERVICE = 19;
+ /**
+ * Packet was dropped inside DMS Private Connection.
+ *
+ * Generated from protobuf enum DROPPED_INSIDE_DMS_PRIVATE_CONNECTION = 114;
+ */
+ const DROPPED_INSIDE_DMS_PRIVATE_CONNECTION = 114;
/**
* Packet was dropped because there is no peering between the originating
* network and the Google Managed Services Network.
@@ -749,6 +755,13 @@ class Cause
* Generated from protobuf enum NO_VALID_ROUTE_FROM_GOOGLE_MANAGED_NETWORK_TO_DESTINATION = 110;
*/
const NO_VALID_ROUTE_FROM_GOOGLE_MANAGED_NETWORK_TO_DESTINATION = 110;
+ /**
+ * Packet is dropped due to no running instance found for private
+ * connection.
+ *
+ * Generated from protobuf enum PRIVATE_CONNECTION_NO_RUNNING_INSTANCE = 111;
+ */
+ const PRIVATE_CONNECTION_NO_RUNNING_INSTANCE = 111;
private static $valueToName = [
self::CAUSE_UNSPECIFIED => 'CAUSE_UNSPECIFIED',
@@ -790,6 +803,7 @@ class Cause
self::CLOUD_SQL_INSTANCE_UNAUTHORIZED_ACCESS => 'CLOUD_SQL_INSTANCE_UNAUTHORIZED_ACCESS',
self::DROPPED_INSIDE_GKE_SERVICE => 'DROPPED_INSIDE_GKE_SERVICE',
self::DROPPED_INSIDE_CLOUD_SQL_SERVICE => 'DROPPED_INSIDE_CLOUD_SQL_SERVICE',
+ self::DROPPED_INSIDE_DMS_PRIVATE_CONNECTION => 'DROPPED_INSIDE_DMS_PRIVATE_CONNECTION',
self::GOOGLE_MANAGED_SERVICE_NO_PEERING => 'GOOGLE_MANAGED_SERVICE_NO_PEERING',
self::GOOGLE_MANAGED_SERVICE_NO_PSC_ENDPOINT => 'GOOGLE_MANAGED_SERVICE_NO_PSC_ENDPOINT',
self::GKE_PSC_ENDPOINT_MISSING => 'GKE_PSC_ENDPOINT_MISSING',
@@ -857,6 +871,7 @@ class Cause
self::HYBRID_SUBNET_NO_ROUTE => 'HYBRID_SUBNET_NO_ROUTE',
self::GKE_NETWORK_POLICY => 'GKE_NETWORK_POLICY',
self::NO_VALID_ROUTE_FROM_GOOGLE_MANAGED_NETWORK_TO_DESTINATION => 'NO_VALID_ROUTE_FROM_GOOGLE_MANAGED_NETWORK_TO_DESTINATION',
+ self::PRIVATE_CONNECTION_NO_RUNNING_INSTANCE => 'PRIVATE_CONNECTION_NO_RUNNING_INSTANCE',
];
public static function name($value)
diff --git a/NetworkManagement/src/V1/Endpoint.php b/NetworkManagement/src/V1/Endpoint.php
index c640f288d1d4..2fb4bb8c4f9e 100644
--- a/NetworkManagement/src/V1/Endpoint.php
+++ b/NetworkManagement/src/V1/Endpoint.php
@@ -108,6 +108,15 @@ class Endpoint extends \Google\Protobuf\Internal\Message
* Generated from protobuf field string gke_pod = 21;
*/
protected $gke_pod = '';
+ /**
+ * A [DMS Private
+ * Connection](https://docs.cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.privateConnections)
+ * name format:
+ * projects/{project}/locations/{location}/privateConnections/{privateConnection}.
+ *
+ * Generated from protobuf field string dms_private_connection = 22;
+ */
+ protected $dms_private_connection = '';
/**
* A [Cloud Function](https://cloud.google.com/functions). Applicable only to
* source endpoint.
@@ -212,6 +221,11 @@ class Endpoint extends \Google\Protobuf\Internal\Message
* @type string $gke_pod
* A [GKE Pod](https://cloud.google.com/kubernetes-engine/docs/concepts/pod)
* URI.
+ * @type string $dms_private_connection
+ * A [DMS Private
+ * Connection](https://docs.cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.privateConnections)
+ * name format:
+ * projects/{project}/locations/{location}/privateConnections/{privateConnection}.
* @type \Google\Cloud\NetworkManagement\V1\Endpoint\CloudFunctionEndpoint $cloud_function
* A [Cloud Function](https://cloud.google.com/functions). Applicable only to
* source endpoint.
@@ -645,6 +659,38 @@ public function setGkePod($var)
return $this;
}
+ /**
+ * A [DMS Private
+ * Connection](https://docs.cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.privateConnections)
+ * name format:
+ * projects/{project}/locations/{location}/privateConnections/{privateConnection}.
+ *
+ * Generated from protobuf field string dms_private_connection = 22;
+ * @return string
+ */
+ public function getDmsPrivateConnection()
+ {
+ return $this->dms_private_connection;
+ }
+
+ /**
+ * A [DMS Private
+ * Connection](https://docs.cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.privateConnections)
+ * name format:
+ * projects/{project}/locations/{location}/privateConnections/{privateConnection}.
+ *
+ * Generated from protobuf field string dms_private_connection = 22;
+ * @param string $var
+ * @return $this
+ */
+ public function setDmsPrivateConnection($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->dms_private_connection = $var;
+
+ return $this;
+ }
+
/**
* A [Cloud Function](https://cloud.google.com/functions). Applicable only to
* source endpoint.
diff --git a/NetworkManagement/src/V1/PrivateConnectionInfo.php b/NetworkManagement/src/V1/PrivateConnectionInfo.php
new file mode 100644
index 000000000000..a609d986619c
--- /dev/null
+++ b/NetworkManagement/src/V1/PrivateConnectionInfo.php
@@ -0,0 +1,71 @@
+google.cloud.networkmanagement.v1.PrivateConnectionInfo
+ */
+class PrivateConnectionInfo extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * URI of the Private Connection in format
+ * "projects/{project_id}/locations/{location}/privateConnections/{private_connection_id}"
+ *
+ * Generated from protobuf field string uri = 1;
+ */
+ protected $uri = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $uri
+ * URI of the Private Connection in format
+ * "projects/{project_id}/locations/{location}/privateConnections/{private_connection_id}"
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Networkmanagement\V1\Trace::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * URI of the Private Connection in format
+ * "projects/{project_id}/locations/{location}/privateConnections/{private_connection_id}"
+ *
+ * Generated from protobuf field string uri = 1;
+ * @return string
+ */
+ public function getUri()
+ {
+ return $this->uri;
+ }
+
+ /**
+ * URI of the Private Connection in format
+ * "projects/{project_id}/locations/{location}/privateConnections/{private_connection_id}"
+ *
+ * Generated from protobuf field string uri = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setUri($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->uri = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/NetworkManagement/src/V1/Step.php b/NetworkManagement/src/V1/Step.php
index b42a0ef640c3..3ff36dcbdc70 100644
--- a/NetworkManagement/src/V1/Step.php
+++ b/NetworkManagement/src/V1/Step.php
@@ -137,6 +137,8 @@ class Step extends \Google\Protobuf\Internal\Message
* only for return traces.
* @type \Google\Cloud\NetworkManagement\V1\NgfwPacketInspectionInfo $ngfw_packet_inspection
* Display information of a layer 7 packet inspection by the firewall.
+ * @type \Google\Cloud\NetworkManagement\V1\PrivateConnectionInfo $dms_private_connection
+ * Display information of a DMS Private Connection.
* }
*/
public function __construct($data = NULL) {
@@ -1418,6 +1420,37 @@ public function setNgfwPacketInspection($var)
return $this;
}
+ /**
+ * Display information of a DMS Private Connection.
+ *
+ * Generated from protobuf field .google.cloud.networkmanagement.v1.PrivateConnectionInfo dms_private_connection = 43;
+ * @return \Google\Cloud\NetworkManagement\V1\PrivateConnectionInfo|null
+ */
+ public function getDmsPrivateConnection()
+ {
+ return $this->readOneof(43);
+ }
+
+ public function hasDmsPrivateConnection()
+ {
+ return $this->hasOneof(43);
+ }
+
+ /**
+ * Display information of a DMS Private Connection.
+ *
+ * Generated from protobuf field .google.cloud.networkmanagement.v1.PrivateConnectionInfo dms_private_connection = 43;
+ * @param \Google\Cloud\NetworkManagement\V1\PrivateConnectionInfo $var
+ * @return $this
+ */
+ public function setDmsPrivateConnection($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\NetworkManagement\V1\PrivateConnectionInfo::class);
+ $this->writeOneof(43, $var);
+
+ return $this;
+ }
+
/**
* @return string
*/
diff --git a/NetworkManagement/src/V1/Step/State.php b/NetworkManagement/src/V1/Step/State.php
index d099b9f3ddb8..998fa373a1b5 100644
--- a/NetworkManagement/src/V1/Step/State.php
+++ b/NetworkManagement/src/V1/Step/State.php
@@ -136,6 +136,12 @@ class State
* Generated from protobuf enum START_FROM_SERVERLESS_NEG = 31;
*/
const START_FROM_SERVERLESS_NEG = 31;
+ /**
+ * Initial state: packet originating from a DMS Private Connection.
+ *
+ * Generated from protobuf enum START_FROM_DMS_PRIVATE_CONNECTION = 48;
+ */
+ const START_FROM_DMS_PRIVATE_CONNECTION = 48;
/**
* Config checking state: verify ingress firewall rule.
*
@@ -347,6 +353,7 @@ class State
self::START_FROM_STORAGE_BUCKET => 'START_FROM_STORAGE_BUCKET',
self::START_FROM_PSC_PUBLISHED_SERVICE => 'START_FROM_PSC_PUBLISHED_SERVICE',
self::START_FROM_SERVERLESS_NEG => 'START_FROM_SERVERLESS_NEG',
+ self::START_FROM_DMS_PRIVATE_CONNECTION => 'START_FROM_DMS_PRIVATE_CONNECTION',
self::APPLY_INGRESS_FIREWALL_RULE => 'APPLY_INGRESS_FIREWALL_RULE',
self::APPLY_EGRESS_FIREWALL_RULE => 'APPLY_EGRESS_FIREWALL_RULE',
self::APPLY_ROUTE => 'APPLY_ROUTE',
diff --git a/NetworkSecurity/src/V1/SecurityProfileGroup.php b/NetworkSecurity/src/V1/SecurityProfileGroup.php
index aae55456f389..d136e578be4a 100644
--- a/NetworkSecurity/src/V1/SecurityProfileGroup.php
+++ b/NetworkSecurity/src/V1/SecurityProfileGroup.php
@@ -52,8 +52,8 @@ class SecurityProfileGroup extends \Google\Protobuf\Internal\Message
*/
protected $etag = '';
/**
- * Output only. Identifier used by the data-path. Unique within {container,
- * location}.
+ * Output only. Identifier used by the data-path. Unique within \{container,
+ * location\}.
*
* Generated from protobuf field uint64 data_path_id = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
*/
@@ -115,8 +115,8 @@ class SecurityProfileGroup extends \Google\Protobuf\Internal\Message
* other fields, and may be sent on update and delete requests to ensure the
* client has an up-to-date value before proceeding.
* @type int|string $data_path_id
- * Output only. Identifier used by the data-path. Unique within {container,
- * location}.
+ * Output only. Identifier used by the data-path. Unique within \{container,
+ * location\}.
* @type array|\Google\Protobuf\Internal\MapField $labels
* Optional. Labels as key value pairs.
* @type string $threat_prevention_profile
@@ -299,8 +299,8 @@ public function setEtag($var)
}
/**
- * Output only. Identifier used by the data-path. Unique within {container,
- * location}.
+ * Output only. Identifier used by the data-path. Unique within \{container,
+ * location\}.
*
* Generated from protobuf field uint64 data_path_id = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
* @return int|string
@@ -311,8 +311,8 @@ public function getDataPathId()
}
/**
- * Output only. Identifier used by the data-path. Unique within {container,
- * location}.
+ * Output only. Identifier used by the data-path. Unique within \{container,
+ * location\}.
*
* Generated from protobuf field uint64 data_path_id = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
* @param int|string $var
diff --git a/Storage/src/Bucket.php b/Storage/src/Bucket.php
index c15b50d07b32..daa01adfb84b 100644
--- a/Storage/src/Bucket.php
+++ b/Storage/src/Bucket.php
@@ -1092,6 +1092,16 @@ public function delete(array $options = [])
* 'inherited' and 'enforced' are supported. **defaults to**
* `inherited`. For more details, see
* [Public Access Prevention](https://cloud.google.com/storage/docs/public-access-prevention).
+ * @type array $ipFilter The bucket's IP filter configuration.
+ * @type string $ipFilter.mode The IP filter mode. Accepted values are 'Enabled' and 'Disabled'.
+ * @type array $ipFilter.publicNetworkSource Public network configuration.
+ * @type array $ipFilter.publicNetworkSource.allowedIpCidrRanges Allowed IP/CIDR ranges.
+ * @type array $ipFilter.vpcNetworkSources List of private VPC networks configurations.
+ * Each element contains:
+ * @type string $ipFilter.vpcNetworkSources[].network Fully qualified VPC network URL/name.
+ * @type array $ipFilter.vpcNetworkSources[].allowedIpCidrRanges Allowed IP/CIDR ranges.
+ * @type bool $ipFilter.allowCrossOrgVpcs Set true to allow VPCs outside the org.
+ * @type bool $ipFilter.allowAllServiceAgentAccess Set true to allow service-to-service agent interactions.
* }
* @codingStandardsIgnoreEnd
* @return array
diff --git a/Storage/src/Connection/ServiceDefinition/storage-v1.json b/Storage/src/Connection/ServiceDefinition/storage-v1.json
index 55ebe63e52ba..bd7bcf730ed7 100644
--- a/Storage/src/Connection/ServiceDefinition/storage-v1.json
+++ b/Storage/src/Connection/ServiceDefinition/storage-v1.json
@@ -324,6 +324,61 @@
}
}
},
+ "ipFilter": {
+ "type": "object",
+ "description": "The bucket's IP filter configuration.",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "description": "The bucket's IP filter mode. E.g., 'Enabled', 'Disabled'.",
+ "enum": [
+ "Enabled",
+ "Disabled"
+ ]
+ },
+ "publicNetworkSource": {
+ "type": "object",
+ "description": "The public network source configuration for IP filtering.",
+ "properties": {
+ "allowedIpCidrRanges": {
+ "type": "array",
+ "description": "Allowed public IP CIDR ranges.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "vpcNetworkSources": {
+ "type": "array",
+ "description": "Private VPC network sources for IP filtering.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "network": {
+ "type": "string",
+ "description": "The fully qualified VPC network name."
+ },
+ "allowedIpCidrRanges": {
+ "type": "array",
+ "description": "Allowed IP CIDR ranges.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "allowCrossOrgVpcs": {
+ "type": "boolean",
+ "description": "Whether to allow cross-organization VPCs."
+ },
+ "allowAllServiceAgentAccess": {
+ "type": "boolean",
+ "description": "Whether to allow service agent access."
+ }
+ }
+ },
"id": {
"type": "string",
"description": "The ID of the bucket. For buckets, the id and name properties are the same."
diff --git a/Storage/src/StorageClient.php b/Storage/src/StorageClient.php
index 1fbacc0ae21d..e74256f3e926 100644
--- a/Storage/src/StorageClient.php
+++ b/Storage/src/StorageClient.php
@@ -496,6 +496,16 @@ public function restore(string $name, string $generation, array $options = [])
* [feature documentation](https://cloud.google.com/storage/docs/uniform-bucket-level-access),
* as well as
* [Should You Use uniform bucket-level access](https://cloud.google.com/storage/docs/uniform-bucket-level-access#should-you-use)
+ * @type array $ipFilter The bucket's IP filter configuration.
+ * @type string $ipFilter.mode The IP filter mode. Accepted values are 'Enabled' and 'Disabled'.
+ * @type array $ipFilter.publicNetworkSource Public network configuration.
+ * @type array $ipFilter.publicNetworkSource.allowedIpCidrRanges Allowed IP/CIDR ranges.
+ * @type array $ipFilter.vpcNetworkSources List of private VPC networks configurations.
+ * Each element contains:
+ * @type string $ipFilter.vpcNetworkSources[].network Fully qualified VPC network URL/name.
+ * @type array $ipFilter.vpcNetworkSources[].allowedIpCidrRanges Allowed IP/CIDR ranges.
+ * @type bool $ipFilter.allowCrossOrgVpcs Set true to allow VPCs outside the org.
+ * @type bool $ipFilter.allowAllServiceAgentAccess Set true to allow service-to-service agent interactions.
* @type string $rpo Specifies the Turbo Replication setting for a dual-region bucket.
* The possible values are DEFAULT and ASYNC_TURBO. Trying to set the rpo for a non dual-region
* bucket will throw an exception. Non existence of this parameter is equivalent to it being DEFAULT.
diff --git a/Storage/tests/System/ManageBucketsTest.php b/Storage/tests/System/ManageBucketsTest.php
index 68fb3e79e121..4968ec905ad3 100644
--- a/Storage/tests/System/ManageBucketsTest.php
+++ b/Storage/tests/System/ManageBucketsTest.php
@@ -18,6 +18,7 @@
namespace Google\Cloud\Storage\Tests\System;
use Google\Cloud\Core\Exception\BadRequestException;
+use Google\Cloud\Core\Exception\ServiceException;
use Google\Cloud\Storage\Bucket;
/**
@@ -577,4 +578,211 @@ public function encryptionEnforcementConfigs()
]
];
}
+
+ /**
+ * @group storage-ipfilter
+ */
+ public function testCreateBucketWithIpFilterDisabled()
+ {
+ $projectId = self::getProjectId(getenv('GOOGLE_CLOUD_PHP_TESTS_KEY_PATH'));
+
+ $ipFilterConfig = [
+ 'mode' => 'Disabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.0/24']
+ ],
+ 'vpcNetworkSources' => [
+ [
+ 'network' => 'projects/' . $projectId . '/global/networks/default',
+ 'allowedIpCidrRanges' => ['10.0.0.0/24']
+ ]
+ ],
+ 'allowCrossOrgVpcs' => true,
+ 'allowAllServiceAgentAccess' => true
+ ];
+
+ $bucketName = uniqid(self::TESTING_PREFIX);
+ $bucket = self::createBucket(
+ self::$client,
+ $bucketName,
+ ['ipFilter' => $ipFilterConfig]
+ );
+
+ $info = $bucket->info();
+ $this->assertArrayHasKey('ipFilter', $info);
+ $this->assertEquals('Disabled', $info['ipFilter']['mode']);
+ $this->assertEquals(['1.2.3.0/24'], $info['ipFilter']['publicNetworkSource']['allowedIpCidrRanges']);
+ $this->assertEquals(
+ 'projects/' . $projectId . '/global/networks/default',
+ $info['ipFilter']['vpcNetworkSources'][0]['network']
+ );
+ $this->assertEquals(['10.0.0.0/24'], $info['ipFilter']['vpcNetworkSources'][0]['allowedIpCidrRanges']);
+ $this->assertTrue($info['ipFilter']['allowAllServiceAgentAccess']);
+ $this->assertTrue($info['ipFilter']['allowCrossOrgVpcs']);
+
+ return $bucket;
+ }
+
+ /**
+ * @depends testCreateBucketWithIpFilterDisabled
+ * @group storage-ipfilter
+ */
+ public function testUpdateIpFilterDisabled(Bucket $bucket)
+ {
+ $ipFilterConfig = [
+ 'mode' => 'Disabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.0/24', '5.6.7.0/24']
+ ],
+ 'allowAllServiceAgentAccess' => false
+ ];
+
+ $bucket->update(['ipFilter' => $ipFilterConfig]);
+ $info = $bucket->reload();
+
+ $this->assertArrayHasKey('ipFilter', $info);
+ $this->assertEquals('Disabled', $info['ipFilter']['mode']);
+ $this->assertEquals(
+ ['1.2.3.0/24', '5.6.7.0/24'],
+ $info['ipFilter']['publicNetworkSource']['allowedIpCidrRanges']
+ );
+ $this->assertFalse($info['ipFilter']['allowAllServiceAgentAccess']);
+ }
+
+ /**
+ * @group storage-ipfilter
+ */
+ public function testCreateBucketWithInvalidIpFilterFails()
+ {
+ $this->expectException(BadRequestException::class);
+
+ $ipFilterConfig = [
+ 'mode' => 'Disabled',
+ 'publicNetworkSource' => [
+ // Host bits must be zero for /24 range, so 1.2.3.4/24 is invalid
+ 'allowedIpCidrRanges' => ['1.2.3.4/24']
+ ],
+ 'allowAllServiceAgentAccess' => true
+ ];
+
+ self::createBucket(
+ self::$client,
+ uniqid(self::TESTING_PREFIX),
+ [
+ 'ipFilter' => $ipFilterConfig,
+ 'retries' => 0,
+ 'sysTestRetries' => 0
+ ]
+ );
+ }
+
+ /**
+ * @group storage-ipfilter
+ */
+ public function testUpdateBucketWithInvalidIpFilterFails()
+ {
+ $bucket = self::createBucket(self::$client, uniqid(self::TESTING_PREFIX));
+
+ $this->expectException(BadRequestException::class);
+
+ $ipFilterConfig = [
+ 'mode' => 'Disabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.4/24']
+ ],
+ 'allowAllServiceAgentAccess' => true
+ ];
+
+ $bucket->update(['ipFilter' => $ipFilterConfig]);
+ }
+
+ /**
+ * @group storage-ipfilter
+ */
+ public function testGetBucketWithIpFilter()
+ {
+ $bucketName = uniqid(self::TESTING_PREFIX);
+ $ipFilterConfig = [
+ 'mode' => 'Disabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.0/24']
+ ],
+ 'allowAllServiceAgentAccess' => true
+ ];
+
+ self::createBucket(
+ self::$client,
+ $bucketName,
+ ['ipFilter' => $ipFilterConfig]
+ );
+
+ $bucket = self::$client->bucket($bucketName);
+ $info = $bucket->reload();
+
+ $this->assertArrayHasKey('ipFilter', $info);
+ $this->assertEquals('Disabled', $info['ipFilter']['mode']);
+ $this->assertEquals(
+ ['1.2.3.0/24'],
+ $info['ipFilter']['publicNetworkSource']['allowedIpCidrRanges']
+ );
+ }
+
+ /**
+ * @group storage-ipfilter
+ * @depends testCreateBucketWithIpFilterDisabled
+ */
+ public function testDeleteBucketIpFilter(Bucket $bucket)
+ {
+ $bucket->update(['ipFilter' => null]);
+ $info = $bucket->reload();
+
+ $this->assertArrayNotHasKey('ipFilter', $info);
+ }
+
+ /**
+ * @group storage-ipfilter
+ */
+ public function testBucketAccessWhenEnforced()
+ {
+ $iam = self::$bucket->iam();
+ $isExempt = !empty($iam->testPermissions(['storage.buckets.exemptFromIpFilter']));
+
+ if (!$isExempt) {
+ $this->markTestSkipped(
+ 'Runner is not exempt from IP filter. Skipping lockout tests to prevent orphaned resources.'
+ );
+ }
+
+ $bucketName = uniqid(self::TESTING_PREFIX);
+ $ipFilterConfig = [
+ 'mode' => 'Enabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.1.1.1/32'] // Blocked IP for runner
+ ],
+ 'allowAllServiceAgentAccess' => true
+ ];
+
+ $bucket = self::createBucket(
+ self::$client,
+ $bucketName,
+ ['ipFilter' => $ipFilterConfig]
+ );
+
+ $objectName = 'test_ip_filter.txt';
+ $objectContent = 'hello world';
+
+ $object = $bucket->upload($objectContent, ['name' => $objectName]);
+ $this->assertEquals($objectContent, $object->downloadAsString());
+
+ $unauthBucket = self::$unauthenticatedClient->bucket($bucketName);
+ $unauthObject = $unauthBucket->object($objectName);
+
+ try {
+ $unauthObject->downloadAsString();
+ $this->fail('Expected unauthenticated download to fail due to IP filter.');
+ } catch (ServiceException $e) {
+ $this->assertEquals(403, $e->getCode());
+ $this->assertStringContainsString('IP filtering', $e->getMessage());
+ }
+ }
}
diff --git a/Storage/tests/Unit/BucketTest.php b/Storage/tests/Unit/BucketTest.php
index 4f70471fdb21..ebb953ce0b09 100644
--- a/Storage/tests/Unit/BucketTest.php
+++ b/Storage/tests/Unit/BucketTest.php
@@ -631,6 +631,154 @@ public function testUpdatesEncryptionEnforcementConfig()
);
}
+ public function testUpdatesIpFilterConfig()
+ {
+ $ipFilterConfig = [
+ 'mode' => 'Enabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.4/32']
+ ],
+ 'vpcNetworkSources' => [
+ [
+ 'network' => 'projects/p1/global/networks/n1',
+ 'allowedIpCidrRanges' => ['10.0.0.0/24']
+ ]
+ ],
+ 'allowCrossOrgVpcs' => true,
+ 'allowAllServiceAgentAccess' => false
+ ];
+ $this->connection->patchBucket(Argument::withEntry('ipFilter', $ipFilterConfig))
+ ->shouldBeCalled()
+ ->willReturn([
+ 'name' => self::BUCKET_NAME,
+ 'ipFilter' => $ipFilterConfig
+ ]);
+
+ $bucket = $this->getBucket(['name' => self::BUCKET_NAME]);
+
+ $bucket->update(['ipFilter' => $ipFilterConfig]);
+
+ $this->assertArrayHasKey('ipFilter', $bucket->info());
+ $this->assertEquals(
+ 'Enabled',
+ $bucket->info()['ipFilter']['mode']
+ );
+ $this->assertEquals(
+ ['1.2.3.4/32'],
+ $bucket->info()['ipFilter']['publicNetworkSource']['allowedIpCidrRanges']
+ );
+ }
+
+ public function testBucketAccessAllowedWithIpFilter()
+ {
+ $ipFilterConfig = [
+ 'mode' => 'Enabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['12.34.56.78/32']
+ ],
+ 'allowAllServiceAgentAccess' => true
+ ];
+ $bucketInfo = [
+ 'name' => self::BUCKET_NAME,
+ 'ipFilter' => $ipFilterConfig
+ ];
+ $this->connection->getBucket(Argument::any())
+ ->shouldBeCalled()
+ ->willReturn($bucketInfo);
+
+ $bucket = $this->getBucket();
+ $info = $bucket->info();
+
+ $this->assertArrayHasKey('ipFilter', $info);
+ $this->assertEquals('Enabled', $info['ipFilter']['mode']);
+ }
+
+ public function testBucketAccessDeniedByIpFilter()
+ {
+ $this->expectException(ServiceException::class);
+ $this->expectExceptionCode(403);
+ $this->expectExceptionMessage('BUCKET_IP_FILTER_DENIED');
+
+ $this->connection->getBucket(Argument::any())
+ ->shouldBeCalled()
+ ->willThrow(new ServiceException('BUCKET_IP_FILTER_DENIED', 403));
+
+ $bucket = $this->getBucket();
+ $bucket->info();
+ }
+
+ public function testGetBucketWithIpFilter()
+ {
+ $ipFilterConfig = [
+ 'mode' => 'Disabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.0/24']
+ ],
+ 'allowAllServiceAgentAccess' => true
+ ];
+
+ $bucketInfo = [
+ 'name' => self::BUCKET_NAME,
+ 'ipFilter' => $ipFilterConfig
+ ];
+
+ $this->connection->getBucket(Argument::any())
+ ->shouldBeCalled()
+ ->willReturn($bucketInfo);
+
+ $bucket = $this->getBucket();
+ $info = $bucket->info();
+
+ $this->assertArrayHasKey('ipFilter', $info);
+ $this->assertEquals('Disabled', $info['ipFilter']['mode']);
+ $this->assertEquals(
+ ['1.2.3.0/24'],
+ $info['ipFilter']['publicNetworkSource']['allowedIpCidrRanges']
+ );
+ }
+
+ public function testDisableBucketIpFilter()
+ {
+ $ipFilterConfig = [
+ 'mode' => 'Disabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.0/24']
+ ],
+ 'allowAllServiceAgentAccess' => true
+ ];
+
+ $bucketInfo = [
+ 'name' => self::BUCKET_NAME,
+ 'ipFilter' => $ipFilterConfig
+ ];
+
+ $this->connection->patchBucket(Argument::withEntry('ipFilter', $ipFilterConfig))
+ ->shouldBeCalled()
+ ->willReturn($bucketInfo);
+
+ $bucket = $this->getBucket();
+ $info = $bucket->update(['ipFilter' => $ipFilterConfig]);
+
+ $this->assertArrayHasKey('ipFilter', $info);
+ $this->assertEquals('Disabled', $info['ipFilter']['mode']);
+ }
+
+ public function testDeleteBucketIpFilter()
+ {
+ $bucketInfo = [
+ 'name' => self::BUCKET_NAME,
+ ];
+
+ $this->connection->patchBucket(Argument::withEntry('ipFilter', null))
+ ->shouldBeCalled()
+ ->willReturn($bucketInfo);
+
+ $bucket = $this->getBucket();
+ $info = $bucket->update(['ipFilter' => null]);
+
+ $this->assertArrayNotHasKey('ipFilter', $info);
+ }
+
public function testGetsInfo()
{
$bucketInfo = [
diff --git a/Storage/tests/Unit/StorageClientTest.php b/Storage/tests/Unit/StorageClientTest.php
index 9883dfe58564..9fc8c7bf6892 100644
--- a/Storage/tests/Unit/StorageClientTest.php
+++ b/Storage/tests/Unit/StorageClientTest.php
@@ -130,6 +130,35 @@ public function testGetsBucketsWithoutToken()
$this->assertEquals('bucket1', $buckets[0]->name());
}
+ public function testGetsBucketsWithIpFilter()
+ {
+ $ipFilterConfig = [
+ 'mode' => 'Enabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.4/32']
+ ]
+ ];
+
+ $this->connection->listBuckets(Argument::any())->willReturn([
+ 'items' => [
+ ['name' => 'bucket1', 'ipFilter' => $ipFilterConfig]
+ ]
+ ]);
+ $this->connection->projectId()
+ ->willReturn(self::PROJECT);
+
+ $this->client->___setProperty('connection', $this->connection->reveal());
+ $buckets = iterator_to_array($this->client->buckets());
+
+ $this->assertEquals('bucket1', $buckets[0]->name());
+ $this->assertArrayHasKey('ipFilter', $buckets[0]->info());
+ $this->assertEquals('Enabled', $buckets[0]->info()['ipFilter']['mode']);
+ $this->assertEquals(
+ ['1.2.3.4/32'],
+ $buckets[0]->info()['ipFilter']['publicNetworkSource']['allowedIpCidrRanges']
+ );
+ }
+
public function testGetsBucketsWithToken()
{
$this->connection->listBuckets(Argument::any())
@@ -266,6 +295,43 @@ public function testCreatesBucketWithEncryptionEnforcement()
);
}
+ public function testCreatesBucketWithIpFilter()
+ {
+ $bucketName = 'ip-filter-bucket';
+ $ipFilterConfig = [
+ 'mode' => 'Enabled',
+ 'publicNetworkSource' => [
+ 'allowedIpCidrRanges' => ['1.2.3.4/32']
+ ],
+ 'vpcNetworkSources' => [
+ [
+ 'network' => 'projects/p1/global/networks/n1',
+ 'allowedIpCidrRanges' => ['10.0.0.0/24']
+ ]
+ ],
+ 'allowCrossOrgVpcs' => true,
+ 'allowAllServiceAgentAccess' => false
+ ];
+ $this->connection->projectId()
+ ->willReturn(self::PROJECT);
+ $this->connection
+ ->insertBucket(Argument::allOf(
+ Argument::withEntry('name', $bucketName),
+ Argument::withEntry('project', self::PROJECT),
+ Argument::withEntry('ipFilter', $ipFilterConfig)
+ ))
+ ->willReturn(['name' => $bucketName]);
+ $this->client->___setProperty('connection', $this->connection->reveal());
+
+ $this->assertInstanceOf(
+ Bucket::class,
+ $this->client->createBucket(
+ $bucketName,
+ ['ipFilter' => $ipFilterConfig]
+ )
+ );
+ }
+
public function testRegisteringStreamWrapper()
{
$this->assertTrue($this->client->registerStreamWrapper());
diff --git a/VectorSearch/metadata/V1/DataObjectSearchService.php b/VectorSearch/metadata/V1/DataObjectSearchService.php
index 34f80ed9d5b4..7ec518151475 100644
--- a/VectorSearch/metadata/V1/DataObjectSearchService.php
+++ b/VectorSearch/metadata/V1/DataObjectSearchService.php
@@ -23,7 +23,7 @@ public static function initOnce() {
\GPBMetadata\Google\Cloud\Vectorsearch\V1\EmbeddingConfig::initOnce();
\GPBMetadata\Google\Protobuf\Struct::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xD6)\x0A=google/cloud/vectorsearch/v1/data_object_search_service.proto\x12\x1Cgoogle.cloud.vectorsearch.v1\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x19google/api/resource.proto\x1A)google/cloud/vectorsearch/v1/common.proto\x1A.google/cloud/vectorsearch/v1/data_object.proto\x1A3google/cloud/vectorsearch/v1/embedding_config.proto\x1A\x1Cgoogle/protobuf/struct.proto\"b\x0A\x0COutputFields\x12\x18\x0A\x0Bdata_fields\x18\x01 \x03(\x09B\x03\xE0A\x01\x12\x1A\x0A\x0Dvector_fields\x18\x02 \x03(\x09B\x03\xE0A\x01\x12\x1C\x0A\x0Fmetadata_fields\x18\x03 \x03(\x09B\x03\xE0A\x01\"\x85\x02\x0A\x0ASearchHint\x12I\x0A\x08knn_hint\x18\x03 \x01(\x0B20.google.cloud.vectorsearch.v1.SearchHint.KnnHintB\x03\xE0A\x01H\x00\x12M\x0A\x0Aindex_hint\x18\x04 \x01(\x0B22.google.cloud.vectorsearch.v1.SearchHint.IndexHintB\x03\xE0A\x01H\x00\x1AD\x0A\x09IndexHint\x127\x0A\x04name\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!vectorsearch.googleapis.com/Index\x1A\x09\x0A\x07KnnHintB\x0C\x0A\x0Aindex_type\"\xE6\x01\x0A\x06Search\x12C\x0A\x0Dvector_search\x18\x01 \x01(\x0B2*.google.cloud.vectorsearch.v1.VectorSearchH\x00\x12G\x0A\x0Fsemantic_search\x18\x02 \x01(\x0B2,.google.cloud.vectorsearch.v1.SemanticSearchH\x00\x12?\x0A\x0Btext_search\x18\x03 \x01(\x0B2(.google.cloud.vectorsearch.v1.TextSearchH\x00B\x0D\x0A\x0Bsearch_type\"\xE3\x03\x0A\x0CVectorSearch\x12;\x0A\x06vector\x18\x01 \x01(\x0B2).google.cloud.vectorsearch.v1.DenseVectorH\x00\x12C\x0A\x0Dsparse_vector\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.SparseVectorH\x00\x12\x19\x0A\x0Csearch_field\x18\x08 \x01(\x09B\x03\xE0A\x02\x12,\x0A\x06filter\x18\x04 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x05 \x01(\x05B\x03\xE0A\x01H\x01\x88\x01\x01\x12F\x0A\x0Doutput_fields\x18\x07 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12B\x0A\x0Bsearch_hint\x18\x09 \x01(\x0B2(.google.cloud.vectorsearch.v1.SearchHintB\x03\xE0A\x01\x12J\x0A\x0Fdistance_metric\x18\x0B \x01(\x0E2,.google.cloud.vectorsearch.v1.DistanceMetricB\x03\xE0A\x01B\x0D\x0A\x0Bvector_typeB\x08\x0A\x06_top_k\"\xEB\x02\x0A\x0ESemanticSearch\x12\x18\x0A\x0Bsearch_text\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x19\x0A\x0Csearch_field\x18\x02 \x01(\x09B\x03\xE0A\x02\x12G\x0A\x09task_type\x18\x05 \x01(\x0E2/.google.cloud.vectorsearch.v1.EmbeddingTaskTypeB\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x03 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12,\x0A\x06filter\x18\x06 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x04 \x01(\x05B\x03\xE0A\x01H\x00\x88\x01\x01\x12B\x0A\x0Bsearch_hint\x18\x07 \x01(\x0B2(.google.cloud.vectorsearch.v1.SearchHintB\x03\xE0A\x01B\x08\x0A\x06_top_k\"\xDE\x01\x0A\x0ATextSearch\x12\x18\x0A\x0Bsearch_text\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x1D\x0A\x10data_field_names\x18\x02 \x03(\x09B\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x03 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x04 \x01(\x05B\x03\xE0A\x01H\x00\x88\x01\x01\x12,\x0A\x06filter\x18\x05 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01B\x08\x0A\x06_top_k\"\xEE\x02\x0A\x18SearchDataObjectsRequest\x12C\x0A\x0Dvector_search\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.VectorSearchH\x00\x12G\x0A\x0Fsemantic_search\x18\x04 \x01(\x0B2,.google.cloud.vectorsearch.v1.SemanticSearchH\x00\x12D\x0A\x0Btext_search\x18\x07 \x01(\x0B2(.google.cloud.vectorsearch.v1.TextSearchB\x03\xE0A\x01H\x00\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12\x16\x0A\x09page_size\x18\x05 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x06 \x01(\x09B\x03\xE0A\x01B\x0D\x0A\x0Bsearch_type\"{\x0A\x0CSearchResult\x12B\x0A\x0Bdata_object\x18\x01 \x01(\x0B2(.google.cloud.vectorsearch.v1.DataObjectB\x03\xE0A\x03\x12\x1A\x0A\x08distance\x18\x02 \x01(\x01B\x03\xE0A\x03H\x00\x88\x01\x01B\x0B\x0A\x09_distance\"{\x0A\x19SearchDataObjectsResponse\x12@\x0A\x07results\x18\x01 \x03(\x0B2*.google.cloud.vectorsearch.v1.SearchResultB\x03\xE0A\x03\x12\x1C\x0A\x0Fnext_page_token\x18\x02 \x01(\x09B\x03\xE0A\x03\"\xD4\x01\x0A\x1BAggregateDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12,\x0A\x06filter\x18\x02 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12G\x0A\x09aggregate\x18\x03 \x01(\x0E2/.google.cloud.vectorsearch.v1.AggregationMethodB\x03\xE0A\x02\"W\x0A\x1CAggregateDataObjectsResponse\x127\x0A\x11aggregate_results\x18\x01 \x03(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x03\"\x80\x02\x0A\x17QueryDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12,\x0A\x06filter\x18\x02 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12F\x0A\x0Doutput_fields\x18\x07 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x16\x0A\x09page_size\x18\x05 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x06 \x01(\x09B\x03\xE0A\x01\"}\x0A\x18QueryDataObjectsResponse\x12C\x0A\x0Cdata_objects\x18\x04 \x03(\x0B2(.google.cloud.vectorsearch.v1.DataObjectB\x03\xE0A\x03\x12\x1C\x0A\x0Fnext_page_token\x18\x03 \x01(\x09B\x03\xE0A\x03\"\xB6\x03\x0A\x1DBatchSearchDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12;\x0A\x08searches\x18\x02 \x03(\x0B2\$.google.cloud.vectorsearch.v1.SearchB\x03\xE0A\x02\x12g\x0A\x07combine\x18\x03 \x01(\x0B2Q.google.cloud.vectorsearch.v1.BatchSearchDataObjectsRequest.CombineResultsOptionsB\x03\xE0A\x01\x1A\xAE\x01\x0A\x15CombineResultsOptions\x129\x0A\x06ranker\x18\x01 \x01(\x0B2\$.google.cloud.vectorsearch.v1.RankerB\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x12\x0A\x05top_k\x18\x03 \x01(\x05B\x03\xE0A\x01\"U\x0A\x06Ranker\x12A\x0A\x03rrf\x18\x01 \x01(\x0B22.google.cloud.vectorsearch.v1.ReciprocalRankFusionH\x00B\x08\x0A\x06ranker\",\x0A\x14ReciprocalRankFusion\x12\x14\x0A\x07weights\x18\x01 \x03(\x01B\x03\xE0A\x02\"o\x0A\x1EBatchSearchDataObjectsResponse\x12M\x0A\x07results\x18\x01 \x03(\x0B27.google.cloud.vectorsearch.v1.SearchDataObjectsResponseB\x03\xE0A\x03*B\x0A\x11AggregationMethod\x12\"\x0A\x1EAGGREGATION_METHOD_UNSPECIFIED\x10\x00\x12\x09\x0A\x05COUNT\x10\x012\xE6\x07\x0A\x17DataObjectSearchService\x12\xD5\x01\x0A\x11SearchDataObjects\x126.google.cloud.vectorsearch.v1.SearchDataObjectsRequest\x1A7.google.cloud.vectorsearch.v1.SearchDataObjectsResponse\"O\x82\xD3\xE4\x93\x02I\"D/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:search:\x01*\x12\xD1\x01\x0A\x10QueryDataObjects\x125.google.cloud.vectorsearch.v1.QueryDataObjectsRequest\x1A6.google.cloud.vectorsearch.v1.QueryDataObjectsResponse\"N\x82\xD3\xE4\x93\x02H\"C/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:query:\x01*\x12\xE1\x01\x0A\x14AggregateDataObjects\x129.google.cloud.vectorsearch.v1.AggregateDataObjectsRequest\x1A:.google.cloud.vectorsearch.v1.AggregateDataObjectsResponse\"R\x82\xD3\xE4\x93\x02L\"G/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:aggregate:\x01*\x12\xE9\x01\x0A\x16BatchSearchDataObjects\x12;.google.cloud.vectorsearch.v1.BatchSearchDataObjectsRequest\x1A<.google.cloud.vectorsearch.v1.BatchSearchDataObjectsResponse\"T\x82\xD3\xE4\x93\x02N\"I/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:batchSearch:\x01*\x1AO\xCAA\x1Bvectorsearch.googleapis.com\xD2A.https://www.googleapis.com/auth/cloud-platformB\xE8\x01\x0A com.google.cloud.vectorsearch.v1B\x1CDataObjectSearchServiceProtoP\x01ZDcloud.google.com/go/vectorsearch/apiv1/vectorsearchpb;vectorsearchpb\xAA\x02\x1CGoogle.Cloud.VectorSearch.V1\xCA\x02\x1CGoogle\\Cloud\\VectorSearch\\V1\xEA\x02\x1FGoogle::Cloud::VectorSearch::V1b\x06proto3"
+ "\x0A\xD6)\x0A=google/cloud/vectorsearch/v1/data_object_search_service.proto\x12\x1Cgoogle.cloud.vectorsearch.v1\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x19google/api/resource.proto\x1A)google/cloud/vectorsearch/v1/common.proto\x1A.google/cloud/vectorsearch/v1/data_object.proto\x1A3google/cloud/vectorsearch/v1/embedding_config.proto\x1A\x1Cgoogle/protobuf/struct.proto\"b\x0A\x0COutputFields\x12\x18\x0A\x0Bdata_fields\x18\x01 \x03(\x09B\x03\xE0A\x01\x12\x1A\x0A\x0Dvector_fields\x18\x02 \x03(\x09B\x03\xE0A\x01\x12\x1C\x0A\x0Fmetadata_fields\x18\x03 \x03(\x09B\x03\xE0A\x01\"\x85\x02\x0A\x0ASearchHint\x12I\x0A\x08knn_hint\x18\x03 \x01(\x0B20.google.cloud.vectorsearch.v1.SearchHint.KnnHintB\x03\xE0A\x01H\x00\x12M\x0A\x0Aindex_hint\x18\x04 \x01(\x0B22.google.cloud.vectorsearch.v1.SearchHint.IndexHintB\x03\xE0A\x01H\x00\x1AD\x0A\x09IndexHint\x127\x0A\x04name\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!vectorsearch.googleapis.com/Index\x1A\x09\x0A\x07KnnHintB\x0C\x0A\x0Aindex_type\"\xE6\x01\x0A\x06Search\x12C\x0A\x0Dvector_search\x18\x01 \x01(\x0B2*.google.cloud.vectorsearch.v1.VectorSearchH\x00\x12G\x0A\x0Fsemantic_search\x18\x02 \x01(\x0B2,.google.cloud.vectorsearch.v1.SemanticSearchH\x00\x12?\x0A\x0Btext_search\x18\x03 \x01(\x0B2(.google.cloud.vectorsearch.v1.TextSearchH\x00B\x0D\x0A\x0Bsearch_type\"\xE3\x03\x0A\x0CVectorSearch\x12;\x0A\x06vector\x18\x01 \x01(\x0B2).google.cloud.vectorsearch.v1.DenseVectorH\x00\x12C\x0A\x0Dsparse_vector\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.SparseVectorH\x00\x12\x19\x0A\x0Csearch_field\x18\x08 \x01(\x09B\x03\xE0A\x02\x12,\x0A\x06filter\x18\x04 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x05 \x01(\x05B\x03\xE0A\x01H\x01\x88\x01\x01\x12F\x0A\x0Doutput_fields\x18\x07 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12B\x0A\x0Bsearch_hint\x18\x09 \x01(\x0B2(.google.cloud.vectorsearch.v1.SearchHintB\x03\xE0A\x01\x12J\x0A\x0Fdistance_metric\x18\x0B \x01(\x0E2,.google.cloud.vectorsearch.v1.DistanceMetricB\x03\xE0A\x01B\x0D\x0A\x0Bvector_typeB\x08\x0A\x06_top_k\"\xEB\x02\x0A\x0ESemanticSearch\x12\x18\x0A\x0Bsearch_text\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x19\x0A\x0Csearch_field\x18\x02 \x01(\x09B\x03\xE0A\x02\x12G\x0A\x09task_type\x18\x05 \x01(\x0E2/.google.cloud.vectorsearch.v1.EmbeddingTaskTypeB\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x03 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12,\x0A\x06filter\x18\x06 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x04 \x01(\x05B\x03\xE0A\x01H\x00\x88\x01\x01\x12B\x0A\x0Bsearch_hint\x18\x07 \x01(\x0B2(.google.cloud.vectorsearch.v1.SearchHintB\x03\xE0A\x01B\x08\x0A\x06_top_k\"\xDE\x01\x0A\x0ATextSearch\x12\x18\x0A\x0Bsearch_text\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x1D\x0A\x10data_field_names\x18\x02 \x03(\x09B\x03\xE0A\x01\x12F\x0A\x0Doutput_fields\x18\x03 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x04 \x01(\x05B\x03\xE0A\x01H\x00\x88\x01\x01\x12,\x0A\x06filter\x18\x05 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01B\x08\x0A\x06_top_k\"\xEE\x02\x0A\x18SearchDataObjectsRequest\x12C\x0A\x0Dvector_search\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.VectorSearchH\x00\x12G\x0A\x0Fsemantic_search\x18\x04 \x01(\x0B2,.google.cloud.vectorsearch.v1.SemanticSearchH\x00\x12D\x0A\x0Btext_search\x18\x07 \x01(\x0B2(.google.cloud.vectorsearch.v1.TextSearchB\x03\xE0A\x01H\x00\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12\x16\x0A\x09page_size\x18\x05 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x06 \x01(\x09B\x03\xE0A\x01B\x0D\x0A\x0Bsearch_type\"{\x0A\x0CSearchResult\x12B\x0A\x0Bdata_object\x18\x01 \x01(\x0B2(.google.cloud.vectorsearch.v1.DataObjectB\x03\xE0A\x03\x12\x1A\x0A\x08distance\x18\x02 \x01(\x01B\x03\xE0A\x03H\x00\x88\x01\x01B\x0B\x0A\x09_distance\"{\x0A\x19SearchDataObjectsResponse\x12@\x0A\x07results\x18\x01 \x03(\x0B2*.google.cloud.vectorsearch.v1.SearchResultB\x03\xE0A\x03\x12\x1C\x0A\x0Fnext_page_token\x18\x02 \x01(\x09B\x03\xE0A\x03\"\xD4\x01\x0A\x1BAggregateDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12,\x0A\x06filter\x18\x02 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12G\x0A\x09aggregate\x18\x03 \x01(\x0E2/.google.cloud.vectorsearch.v1.AggregationMethodB\x03\xE0A\x02\"W\x0A\x1CAggregateDataObjectsResponse\x127\x0A\x11aggregate_results\x18\x01 \x03(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x03\"\x80\x02\x0A\x17QueryDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12,\x0A\x06filter\x18\x02 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12F\x0A\x0Doutput_fields\x18\x07 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x16\x0A\x09page_size\x18\x05 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x06 \x01(\x09B\x03\xE0A\x01\"}\x0A\x18QueryDataObjectsResponse\x12C\x0A\x0Cdata_objects\x18\x04 \x03(\x0B2(.google.cloud.vectorsearch.v1.DataObjectB\x03\xE0A\x03\x12\x1C\x0A\x0Fnext_page_token\x18\x03 \x01(\x09B\x03\xE0A\x03\"\xB6\x03\x0A\x1DBatchSearchDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12;\x0A\x08searches\x18\x02 \x03(\x0B2\$.google.cloud.vectorsearch.v1.SearchB\x03\xE0A\x02\x12g\x0A\x07combine\x18\x03 \x01(\x0B2Q.google.cloud.vectorsearch.v1.BatchSearchDataObjectsRequest.CombineResultsOptionsB\x03\xE0A\x01\x1A\xAE\x01\x0A\x15CombineResultsOptions\x129\x0A\x06ranker\x18\x01 \x01(\x0B2\$.google.cloud.vectorsearch.v1.RankerB\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x12\x0A\x05top_k\x18\x03 \x01(\x05B\x03\xE0A\x01\"U\x0A\x06Ranker\x12A\x0A\x03rrf\x18\x01 \x01(\x0B22.google.cloud.vectorsearch.v1.ReciprocalRankFusionH\x00B\x08\x0A\x06ranker\",\x0A\x14ReciprocalRankFusion\x12\x14\x0A\x07weights\x18\x01 \x03(\x01B\x03\xE0A\x02\"o\x0A\x1EBatchSearchDataObjectsResponse\x12M\x0A\x07results\x18\x01 \x03(\x0B27.google.cloud.vectorsearch.v1.SearchDataObjectsResponseB\x03\xE0A\x03*B\x0A\x11AggregationMethod\x12\"\x0A\x1EAGGREGATION_METHOD_UNSPECIFIED\x10\x00\x12\x09\x0A\x05COUNT\x10\x012\xE6\x07\x0A\x17DataObjectSearchService\x12\xD5\x01\x0A\x11SearchDataObjects\x126.google.cloud.vectorsearch.v1.SearchDataObjectsRequest\x1A7.google.cloud.vectorsearch.v1.SearchDataObjectsResponse\"O\x82\xD3\xE4\x93\x02I\"D/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:search:\x01*\x12\xD1\x01\x0A\x10QueryDataObjects\x125.google.cloud.vectorsearch.v1.QueryDataObjectsRequest\x1A6.google.cloud.vectorsearch.v1.QueryDataObjectsResponse\"N\x82\xD3\xE4\x93\x02H\"C/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:query:\x01*\x12\xE1\x01\x0A\x14AggregateDataObjects\x129.google.cloud.vectorsearch.v1.AggregateDataObjectsRequest\x1A:.google.cloud.vectorsearch.v1.AggregateDataObjectsResponse\"R\x82\xD3\xE4\x93\x02L\"G/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:aggregate:\x01*\x12\xE9\x01\x0A\x16BatchSearchDataObjects\x12;.google.cloud.vectorsearch.v1.BatchSearchDataObjectsRequest\x1A<.google.cloud.vectorsearch.v1.BatchSearchDataObjectsResponse\"T\x82\xD3\xE4\x93\x02N\"I/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:batchSearch:\x01*\x1AO\xCAA\x1Bvectorsearch.googleapis.com\xD2A.https://www.googleapis.com/auth/cloud-platformB\xE8\x01\x0A com.google.cloud.vectorsearch.v1B\x1CDataObjectSearchServiceProtoP\x01ZDcloud.google.com/go/vectorsearch/apiv1/vectorsearchpb;vectorsearchpb\xAA\x02\x1CGoogle.Cloud.VectorSearch.V1\xCA\x02\x1CGoogle\\Cloud\\VectorSearch\\V1\xEA\x02\x1FGoogle::Cloud::VectorSearch::V1b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/VectorSearch/metadata/V1/VectorsearchService.php b/VectorSearch/metadata/V1/VectorsearchService.php
index 163e08d1aa1e..6a4875fd56d3 100644
--- a/VectorSearch/metadata/V1/VectorsearchService.php
+++ b/VectorSearch/metadata/V1/VectorsearchService.php
@@ -29,7 +29,7 @@ public static function initOnce() {
\GPBMetadata\Google\Protobuf\Timestamp::initOnce();
\GPBMetadata\Google\Rpc\Status::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xA5G\x0A7google/cloud/vectorsearch/v1/vectorsearch_service.proto\x12\x1Cgoogle.cloud.vectorsearch.v1\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x1Bgoogle/api/field_info.proto\x1A\x19google/api/resource.proto\x1A)google/cloud/vectorsearch/v1/common.proto\x1A3google/cloud/vectorsearch/v1/embedding_config.proto\x1A2google/cloud/vectorsearch/v1/encryption_spec.proto\x1A#google/longrunning/operations.proto\x1A\x1Bgoogle/protobuf/empty.proto\x1A google/protobuf/field_mask.proto\x1A\x1Cgoogle/protobuf/struct.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\x1A\x17google/rpc/status.proto\"\xFE\x05\x0A\x0ACollection\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12\x19\x0A\x0Cdisplay_name\x18\x08 \x01(\x09B\x03\xE0A\x01\x12\x18\x0A\x0Bdescription\x18\x09 \x01(\x09B\x03\xE0A\x01\x124\x0A\x0Bcreate_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bupdate_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12I\x0A\x06labels\x18\x04 \x03(\x0B24.google.cloud.vectorsearch.v1.Collection.LabelsEntryB\x03\xE0A\x01\x12V\x0A\x0Dvector_schema\x18\x07 \x03(\x0B2:.google.cloud.vectorsearch.v1.Collection.VectorSchemaEntryB\x03\xE0A\x01\x121\x0A\x0Bdata_schema\x18\x0A \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12M\x0A\x0Fencryption_spec\x18\x0B \x01(\x0B2,.google.cloud.vectorsearch.v1.EncryptionSpecB\x06\xE0A\x05\xE0A\x01\x1A-\x0A\x0BLabelsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01\x1A^\x0A\x11VectorSchemaEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x128\x0A\x05value\x18\x02 \x01(\x0B2).google.cloud.vectorsearch.v1.VectorField:\x028\x01:\x87\x01\xEAA\x83\x01\x0A&vectorsearch.googleapis.com/Collection\x12@projects/{project}/locations/{location}/collections/{collection}*\x0Bcollections2\x0Acollection\"\xB5\x01\x0A\x0BVectorField\x12F\x0A\x0Cdense_vector\x18\x03 \x01(\x0B2..google.cloud.vectorsearch.v1.DenseVectorFieldH\x00\x12H\x0A\x0Dsparse_vector\x18\x04 \x01(\x0B2/.google.cloud.vectorsearch.v1.SparseVectorFieldH\x00B\x14\x0A\x12vector_type_config\"\x81\x01\x0A\x10DenseVectorField\x12\x12\x0A\x0Adimensions\x18\x01 \x01(\x05\x12Y\x0A\x17vertex_embedding_config\x18\x03 \x01(\x0B23.google.cloud.vectorsearch.v1.VertexEmbeddingConfigB\x03\xE0A\x01\"\x13\x0A\x11SparseVectorField\"\xB5\x01\x0A\x16ListCollectionsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x12&vectorsearch.googleapis.com/Collection\x12\x16\x0A\x09page_size\x18\x02 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x03 \x01(\x09B\x03\xE0A\x01\x12\x13\x0A\x06filter\x18\x04 \x01(\x09B\x03\xE0A\x01\x12\x15\x0A\x08order_by\x18\x05 \x01(\x09B\x03\xE0A\x01\"\x8B\x01\x0A\x17ListCollectionsResponse\x12=\x0A\x0Bcollections\x18\x01 \x03(\x0B2(.google.cloud.vectorsearch.v1.Collection\x12\x17\x0A\x0Fnext_page_token\x18\x02 \x01(\x09\x12\x18\x0A\x0Bunreachable\x18\x03 \x03(\x09B\x03\xE0A\x06\"T\x0A\x14GetCollectionRequest\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\"\xD9\x01\x0A\x17CreateCollectionRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x12&vectorsearch.googleapis.com/Collection\x12\x1A\x0A\x0Dcollection_id\x18\x02 \x01(\x09B\x03\xE0A\x02\x12A\x0A\x0Acollection\x18\x03 \x01(\x0B2(.google.cloud.vectorsearch.v1.CollectionB\x03\xE0A\x02\x12\x1F\x0A\x0Arequest_id\x18\x04 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"\xB3\x01\x0A\x17UpdateCollectionRequest\x124\x0A\x0Bupdate_mask\x18\x01 \x01(\x0B2\x1A.google.protobuf.FieldMaskB\x03\xE0A\x01\x12A\x0A\x0Acollection\x18\x02 \x01(\x0B2(.google.cloud.vectorsearch.v1.CollectionB\x03\xE0A\x02\x12\x1F\x0A\x0Arequest_id\x18\x03 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"x\x0A\x17DeleteCollectionRequest\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12\x1F\x0A\x0Arequest_id\x18\x02 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"\xA0\x06\x0A\x05Index\x12^\x0A\x18dedicated_infrastructure\x18\x0B \x01(\x0B25.google.cloud.vectorsearch.v1.DedicatedInfrastructureB\x03\xE0A\x01H\x00\x12I\x0A\x0Bdense_scann\x18\x0C \x01(\x0B2-.google.cloud.vectorsearch.v1.DenseScannIndexB\x03\xE0A\x01H\x01\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12\x19\x0A\x0Cdisplay_name\x18\x08 \x01(\x09B\x03\xE0A\x01\x12\x18\x0A\x0Bdescription\x18\x09 \x01(\x09B\x03\xE0A\x01\x12D\x0A\x06labels\x18\x0A \x03(\x0B2/.google.cloud.vectorsearch.v1.Index.LabelsEntryB\x03\xE0A\x01\x124\x0A\x0Bcreate_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bupdate_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12J\x0A\x0Fdistance_metric\x18\x04 \x01(\x0E2,.google.cloud.vectorsearch.v1.DistanceMetricB\x03\xE0A\x01\x12\x18\x0A\x0Bindex_field\x18\x05 \x01(\x09B\x03\xE0A\x02\x12\x1A\x0A\x0Dfilter_fields\x18\x06 \x03(\x09B\x03\xE0A\x01\x12\x19\x0A\x0Cstore_fields\x18\x07 \x03(\x09B\x03\xE0A\x01\x1A-\x0A\x0BLabelsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01:\x89\x01\xEAA\x85\x01\x0A!vectorsearch.googleapis.com/Index\x12Pprojects/{project}/locations/{location}/collections/{collection}/indexes/{index}*\x07indexes2\x05indexB\x0C\x0A\x0Ainfra_typeB\x0C\x0A\x0Aindex_type\"\xC5\x01\x0A\x12CreateIndexRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12\x15\x0A\x08index_id\x18\x02 \x01(\x09B\x03\xE0A\x02\x127\x0A\x05index\x18\x03 \x01(\x0B2#.google.cloud.vectorsearch.v1.IndexB\x03\xE0A\x02\x12\x1F\x0A\x0Arequest_id\x18\x04 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"\xA4\x01\x0A\x12UpdateIndexRequest\x127\x0A\x05index\x18\x01 \x01(\x0B2#.google.cloud.vectorsearch.v1.IndexB\x03\xE0A\x02\x124\x0A\x0Bupdate_mask\x18\x02 \x01(\x0B2\x1A.google.protobuf.FieldMaskB\x03\xE0A\x01\x12\x1F\x0A\x0Arequest_id\x18\x03 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"n\x0A\x12DeleteIndexRequest\x127\x0A\x04name\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!vectorsearch.googleapis.com/Index\x12\x1F\x0A\x0Arequest_id\x18\x02 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"\xAC\x01\x0A\x12ListIndexesRequest\x129\x0A\x06parent\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x12!vectorsearch.googleapis.com/Index\x12\x16\x0A\x09page_size\x18\x02 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x03 \x01(\x09B\x03\xE0A\x01\x12\x13\x0A\x06filter\x18\x04 \x01(\x09B\x03\xE0A\x01\x12\x15\x0A\x08order_by\x18\x05 \x01(\x09B\x03\xE0A\x01\"d\x0A\x13ListIndexesResponse\x124\x0A\x07indexes\x18\x01 \x03(\x0B2#.google.cloud.vectorsearch.v1.Index\x12\x17\x0A\x0Fnext_page_token\x18\x02 \x01(\x09\"J\x0A\x0FGetIndexRequest\x127\x0A\x04name\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!vectorsearch.googleapis.com/Index\"\x80\x02\x0A\x11OperationMetadata\x124\x0A\x0Bcreate_time\x18\x01 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x121\x0A\x08end_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x13\x0A\x06target\x18\x03 \x01(\x09B\x03\xE0A\x03\x12\x11\x0A\x04verb\x18\x04 \x01(\x09B\x03\xE0A\x03\x12\x1B\x0A\x0Estatus_message\x18\x05 \x01(\x09B\x03\xE0A\x03\x12#\x0A\x16requested_cancellation\x18\x06 \x01(\x08B\x03\xE0A\x03\x12\x18\x0A\x0Bapi_version\x18\x07 \x01(\x09B\x03\xE0A\x03\"\x9F\x02\x0A\x18ImportDataObjectsRequest\x12\\\x0A\x0Agcs_import\x18\x02 \x01(\x0B2F.google.cloud.vectorsearch.v1.ImportDataObjectsRequest.GcsImportConfigH\x00\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x1A]\x0A\x0FGcsImportConfig\x12\x19\x0A\x0Ccontents_uri\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x16\x0A\x09error_uri\x18\x02 \x01(\x09B\x03\xE0A\x02\x12\x17\x0A\x0Aoutput_uri\x18\x03 \x01(\x09B\x03\xE0A\x01B\x08\x0A\x06config\"\xBF\x01\x0A\x19ImportDataObjectsMetadata\x124\x0A\x0Bcreate_time\x18\x01 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bupdate_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x1A\x0A\x0Dsuccess_count\x18\x03 \x01(\x03B\x03\xE0A\x03\x12\x1A\x0A\x0Dfailure_count\x18\x04 \x01(\x03B\x03\xE0A\x03\"?\x0A\x19ImportDataObjectsResponse\x12\"\x0A\x06status\x18\x01 \x01(\x0B2\x12.google.rpc.Status\"\x97\x03\x0A\x18ExportDataObjectsRequest\x12f\x0A\x0Fgcs_destination\x18\x02 \x01(\x0B2K.google.cloud.vectorsearch.v1.ExportDataObjectsRequest.GcsExportDestinationH\x00\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x1A\xC5\x01\x0A\x14GcsExportDestination\x12\x17\x0A\x0Aexport_uri\x18\x01 \x01(\x09B\x03\xE0A\x02\x12g\x0A\x06format\x18\x02 \x01(\x0E2R.google.cloud.vectorsearch.v1.ExportDataObjectsRequest.GcsExportDestination.FormatB\x03\xE0A\x02\"+\x0A\x06Format\x12\x16\x0A\x12FORMAT_UNSPECIFIED\x10\x00\x12\x09\x0A\x05JSONL\x10\x02B\x0D\x0A\x0Bdestination\"\x87\x01\x0A\x19ExportDataObjectsMetadata\x124\x0A\x0Bcreate_time\x18\x01 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bfinish_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\"\x1B\x0A\x19ExportDataObjectsResponse\"\xFF\x02\x0A\x17DedicatedInfrastructure\x12R\x0A\x04mode\x18\x01 \x01(\x0E2:.google.cloud.vectorsearch.v1.DedicatedInfrastructure.ModeB\x03\xE0A\x01H\x00\x88\x01\x01\x12d\x0A\x10autoscaling_spec\x18\x02 \x01(\x0B2E.google.cloud.vectorsearch.v1.DedicatedInfrastructure.AutoscalingSpecB\x03\xE0A\x01\x1AQ\x0A\x0FAutoscalingSpec\x12\x1E\x0A\x11min_replica_count\x18\x01 \x01(\x05B\x03\xE0A\x01\x12\x1E\x0A\x11max_replica_count\x18\x02 \x01(\x05B\x03\xE0A\x01\"N\x0A\x04Mode\x12\x14\x0A\x10MODE_UNSPECIFIED\x10\x00\x12\x15\x0A\x11STORAGE_OPTIMIZED\x10\x01\x12\x19\x0A\x15PERFORMANCE_OPTIMIZED\x10\x02B\x07\x0A\x05_mode\"\xC2\x01\x0A\x0FDenseScannIndex\x12]\x0A\x11feature_norm_type\x18\x02 \x01(\x0E2=.google.cloud.vectorsearch.v1.DenseScannIndex.FeatureNormTypeB\x03\xE0A\x01\"P\x0A\x0FFeatureNormType\x12!\x0A\x1DFEATURE_NORM_TYPE_UNSPECIFIED\x10\x00\x12\x08\x0A\x04NONE\x10\x01\x12\x10\x0A\x0CUNIT_L2_NORM\x10\x022\x8D\x15\x0A\x13VectorSearchService\x12\xC0\x01\x0A\x0FListCollections\x124.google.cloud.vectorsearch.v1.ListCollectionsRequest\x1A5.google.cloud.vectorsearch.v1.ListCollectionsResponse\"@\xDAA\x06parent\x82\xD3\xE4\x93\x021\x12//v1/{parent=projects/*/locations/*}/collections\x12\xAD\x01\x0A\x0DGetCollection\x122.google.cloud.vectorsearch.v1.GetCollectionRequest\x1A(.google.cloud.vectorsearch.v1.Collection\">\xDAA\x04name\x82\xD3\xE4\x93\x021\x12//v1/{name=projects/*/locations/*/collections/*}\x12\xF2\x01\x0A\x10CreateCollection\x125.google.cloud.vectorsearch.v1.CreateCollectionRequest\x1A\x1D.google.longrunning.Operation\"\x87\x01\xCAA\x1F\x0A\x0ACollection\x12\x11OperationMetadata\xDAA\x1Fparent,collection,collection_id\x82\xD3\xE4\x93\x02=\"//v1/{parent=projects/*/locations/*}/collections:\x0Acollection\x12\xF4\x01\x0A\x10UpdateCollection\x125.google.cloud.vectorsearch.v1.UpdateCollectionRequest\x1A\x1D.google.longrunning.Operation\"\x89\x01\xCAA\x1F\x0A\x0ACollection\x12\x11OperationMetadata\xDAA\x16collection,update_mask\x82\xD3\xE4\x93\x02H2:/v1/{collection.name=projects/*/locations/*/collections/*}:\x0Acollection\x12\xD5\x01\x0A\x10DeleteCollection\x125.google.cloud.vectorsearch.v1.DeleteCollectionRequest\x1A\x1D.google.longrunning.Operation\"k\xCAA*\x0A\x15google.protobuf.Empty\x12\x11OperationMetadata\xDAA\x04name\x82\xD3\xE4\x93\x021*//v1/{name=projects/*/locations/*/collections/*}\x12\xBE\x01\x0A\x0BListIndexes\x120.google.cloud.vectorsearch.v1.ListIndexesRequest\x1A1.google.cloud.vectorsearch.v1.ListIndexesResponse\"J\xDAA\x06parent\x82\xD3\xE4\x93\x02;\x129/v1/{parent=projects/*/locations/*/collections/*}/indexes\x12\xA8\x01\x0A\x08GetIndex\x12-.google.cloud.vectorsearch.v1.GetIndexRequest\x1A#.google.cloud.vectorsearch.v1.Index\"H\xDAA\x04name\x82\xD3\xE4\x93\x02;\x129/v1/{name=projects/*/locations/*/collections/*/indexes/*}\x12\xDD\x01\x0A\x0BCreateIndex\x120.google.cloud.vectorsearch.v1.CreateIndexRequest\x1A\x1D.google.longrunning.Operation\"}\xCAA\x1A\x0A\x05Index\x12\x11OperationMetadata\xDAA\x15parent,index,index_id\x82\xD3\xE4\x93\x02B\"9/v1/{parent=projects/*/locations/*/collections/*}/indexes:\x05index\x12\xDF\x01\x0A\x0BUpdateIndex\x120.google.cloud.vectorsearch.v1.UpdateIndexRequest\x1A\x1D.google.longrunning.Operation\"\x7F\xCAA\x1A\x0A\x05Index\x12\x11OperationMetadata\xDAA\x11index,update_mask\x82\xD3\xE4\x93\x02H2?/v1/{index.name=projects/*/locations/*/collections/*/indexes/*}:\x05index\x12\xD5\x01\x0A\x0BDeleteIndex\x120.google.cloud.vectorsearch.v1.DeleteIndexRequest\x1A\x1D.google.longrunning.Operation\"u\xCAA*\x0A\x15google.protobuf.Empty\x12\x11OperationMetadata\xDAA\x04name\x82\xD3\xE4\x93\x02;*9/v1/{name=projects/*/locations/*/collections/*/indexes/*}\x12\xF2\x01\x0A\x11ImportDataObjects\x126.google.cloud.vectorsearch.v1.ImportDataObjectsRequest\x1A\x1D.google.longrunning.Operation\"\x85\x01\xCAA6\x0A\x19ImportDataObjectsResponse\x12\x19ImportDataObjectsMetadata\x82\xD3\xE4\x93\x02F\"A/v1/{name=projects/*/locations/*/collections/*}:importDataObjects:\x01*\x12\xF2\x01\x0A\x11ExportDataObjects\x126.google.cloud.vectorsearch.v1.ExportDataObjectsRequest\x1A\x1D.google.longrunning.Operation\"\x85\x01\xCAA6\x0A\x19ExportDataObjectsResponse\x12\x19ExportDataObjectsMetadata\x82\xD3\xE4\x93\x02F\"A/v1/{name=projects/*/locations/*/collections/*}:exportDataObjects:\x01*\x1AO\xCAA\x1Bvectorsearch.googleapis.com\xD2A.https://www.googleapis.com/auth/cloud-platformB\xE4\x01\x0A com.google.cloud.vectorsearch.v1B\x18VectorSearchServiceProtoP\x01ZDcloud.google.com/go/vectorsearch/apiv1/vectorsearchpb;vectorsearchpb\xAA\x02\x1CGoogle.Cloud.VectorSearch.V1\xCA\x02\x1CGoogle\\Cloud\\VectorSearch\\V1\xEA\x02\x1FGoogle::Cloud::VectorSearch::V1b\x06proto3"
+ "\x0A\xB3J\x0A7google/cloud/vectorsearch/v1/vectorsearch_service.proto\x12\x1Cgoogle.cloud.vectorsearch.v1\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x1Bgoogle/api/field_info.proto\x1A\x19google/api/resource.proto\x1A)google/cloud/vectorsearch/v1/common.proto\x1A3google/cloud/vectorsearch/v1/embedding_config.proto\x1A2google/cloud/vectorsearch/v1/encryption_spec.proto\x1A#google/longrunning/operations.proto\x1A\x1Bgoogle/protobuf/empty.proto\x1A google/protobuf/field_mask.proto\x1A\x1Cgoogle/protobuf/struct.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\x1A\x17google/rpc/status.proto\"\xFE\x05\x0A\x0ACollection\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12\x19\x0A\x0Cdisplay_name\x18\x08 \x01(\x09B\x03\xE0A\x01\x12\x18\x0A\x0Bdescription\x18\x09 \x01(\x09B\x03\xE0A\x01\x124\x0A\x0Bcreate_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bupdate_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12I\x0A\x06labels\x18\x04 \x03(\x0B24.google.cloud.vectorsearch.v1.Collection.LabelsEntryB\x03\xE0A\x01\x12V\x0A\x0Dvector_schema\x18\x07 \x03(\x0B2:.google.cloud.vectorsearch.v1.Collection.VectorSchemaEntryB\x03\xE0A\x01\x121\x0A\x0Bdata_schema\x18\x0A \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12M\x0A\x0Fencryption_spec\x18\x0B \x01(\x0B2,.google.cloud.vectorsearch.v1.EncryptionSpecB\x06\xE0A\x05\xE0A\x01\x1A-\x0A\x0BLabelsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01\x1A^\x0A\x11VectorSchemaEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x128\x0A\x05value\x18\x02 \x01(\x0B2).google.cloud.vectorsearch.v1.VectorField:\x028\x01:\x87\x01\xEAA\x83\x01\x0A&vectorsearch.googleapis.com/Collection\x12@projects/{project}/locations/{location}/collections/{collection}*\x0Bcollections2\x0Acollection\"\xB5\x01\x0A\x0BVectorField\x12F\x0A\x0Cdense_vector\x18\x03 \x01(\x0B2..google.cloud.vectorsearch.v1.DenseVectorFieldH\x00\x12H\x0A\x0Dsparse_vector\x18\x04 \x01(\x0B2/.google.cloud.vectorsearch.v1.SparseVectorFieldH\x00B\x14\x0A\x12vector_type_config\"\x81\x01\x0A\x10DenseVectorField\x12\x12\x0A\x0Adimensions\x18\x01 \x01(\x05\x12Y\x0A\x17vertex_embedding_config\x18\x03 \x01(\x0B23.google.cloud.vectorsearch.v1.VertexEmbeddingConfigB\x03\xE0A\x01\"\x13\x0A\x11SparseVectorField\"\xB5\x01\x0A\x16ListCollectionsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x12&vectorsearch.googleapis.com/Collection\x12\x16\x0A\x09page_size\x18\x02 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x03 \x01(\x09B\x03\xE0A\x01\x12\x13\x0A\x06filter\x18\x04 \x01(\x09B\x03\xE0A\x01\x12\x15\x0A\x08order_by\x18\x05 \x01(\x09B\x03\xE0A\x01\"\x8B\x01\x0A\x17ListCollectionsResponse\x12=\x0A\x0Bcollections\x18\x01 \x03(\x0B2(.google.cloud.vectorsearch.v1.Collection\x12\x17\x0A\x0Fnext_page_token\x18\x02 \x01(\x09\x12\x18\x0A\x0Bunreachable\x18\x03 \x03(\x09B\x03\xE0A\x06\"T\x0A\x14GetCollectionRequest\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\"\xD9\x01\x0A\x17CreateCollectionRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x12&vectorsearch.googleapis.com/Collection\x12\x1A\x0A\x0Dcollection_id\x18\x02 \x01(\x09B\x03\xE0A\x02\x12A\x0A\x0Acollection\x18\x03 \x01(\x0B2(.google.cloud.vectorsearch.v1.CollectionB\x03\xE0A\x02\x12\x1F\x0A\x0Arequest_id\x18\x04 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"\xB3\x01\x0A\x17UpdateCollectionRequest\x124\x0A\x0Bupdate_mask\x18\x01 \x01(\x0B2\x1A.google.protobuf.FieldMaskB\x03\xE0A\x01\x12A\x0A\x0Acollection\x18\x02 \x01(\x0B2(.google.cloud.vectorsearch.v1.CollectionB\x03\xE0A\x02\x12\x1F\x0A\x0Arequest_id\x18\x03 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"\x8C\x01\x0A\x17DeleteCollectionRequest\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12\x1F\x0A\x0Arequest_id\x18\x02 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\x12\x12\x0A\x05force\x18\x03 \x01(\x08B\x03\xE0A\x01\"\xA0\x06\x0A\x05Index\x12^\x0A\x18dedicated_infrastructure\x18\x0B \x01(\x0B25.google.cloud.vectorsearch.v1.DedicatedInfrastructureB\x03\xE0A\x01H\x00\x12I\x0A\x0Bdense_scann\x18\x0C \x01(\x0B2-.google.cloud.vectorsearch.v1.DenseScannIndexB\x03\xE0A\x01H\x01\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12\x19\x0A\x0Cdisplay_name\x18\x08 \x01(\x09B\x03\xE0A\x01\x12\x18\x0A\x0Bdescription\x18\x09 \x01(\x09B\x03\xE0A\x01\x12D\x0A\x06labels\x18\x0A \x03(\x0B2/.google.cloud.vectorsearch.v1.Index.LabelsEntryB\x03\xE0A\x01\x124\x0A\x0Bcreate_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bupdate_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12J\x0A\x0Fdistance_metric\x18\x04 \x01(\x0E2,.google.cloud.vectorsearch.v1.DistanceMetricB\x03\xE0A\x01\x12\x18\x0A\x0Bindex_field\x18\x05 \x01(\x09B\x03\xE0A\x02\x12\x1A\x0A\x0Dfilter_fields\x18\x06 \x03(\x09B\x03\xE0A\x01\x12\x19\x0A\x0Cstore_fields\x18\x07 \x03(\x09B\x03\xE0A\x01\x1A-\x0A\x0BLabelsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12\x0D\x0A\x05value\x18\x02 \x01(\x09:\x028\x01:\x89\x01\xEAA\x85\x01\x0A!vectorsearch.googleapis.com/Index\x12Pprojects/{project}/locations/{location}/collections/{collection}/indexes/{index}*\x07indexes2\x05indexB\x0C\x0A\x0Ainfra_typeB\x0C\x0A\x0Aindex_type\"\xC5\x01\x0A\x12CreateIndexRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12\x15\x0A\x08index_id\x18\x02 \x01(\x09B\x03\xE0A\x02\x127\x0A\x05index\x18\x03 \x01(\x0B2#.google.cloud.vectorsearch.v1.IndexB\x03\xE0A\x02\x12\x1F\x0A\x0Arequest_id\x18\x04 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"\xA4\x01\x0A\x12UpdateIndexRequest\x127\x0A\x05index\x18\x01 \x01(\x0B2#.google.cloud.vectorsearch.v1.IndexB\x03\xE0A\x02\x124\x0A\x0Bupdate_mask\x18\x02 \x01(\x0B2\x1A.google.protobuf.FieldMaskB\x03\xE0A\x01\x12\x1F\x0A\x0Arequest_id\x18\x03 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"n\x0A\x12DeleteIndexRequest\x127\x0A\x04name\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!vectorsearch.googleapis.com/Index\x12\x1F\x0A\x0Arequest_id\x18\x02 \x01(\x09B\x0B\xE0A\x01\xE2\x8C\xCF\xD7\x08\x02\x08\x01\"\xAC\x01\x0A\x12ListIndexesRequest\x129\x0A\x06parent\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x12!vectorsearch.googleapis.com/Index\x12\x16\x0A\x09page_size\x18\x02 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x03 \x01(\x09B\x03\xE0A\x01\x12\x13\x0A\x06filter\x18\x04 \x01(\x09B\x03\xE0A\x01\x12\x15\x0A\x08order_by\x18\x05 \x01(\x09B\x03\xE0A\x01\"d\x0A\x13ListIndexesResponse\x124\x0A\x07indexes\x18\x01 \x03(\x0B2#.google.cloud.vectorsearch.v1.Index\x12\x17\x0A\x0Fnext_page_token\x18\x02 \x01(\x09\"J\x0A\x0FGetIndexRequest\x127\x0A\x04name\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!vectorsearch.googleapis.com/Index\"\x80\x02\x0A\x11OperationMetadata\x124\x0A\x0Bcreate_time\x18\x01 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x121\x0A\x08end_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x13\x0A\x06target\x18\x03 \x01(\x09B\x03\xE0A\x03\x12\x11\x0A\x04verb\x18\x04 \x01(\x09B\x03\xE0A\x03\x12\x1B\x0A\x0Estatus_message\x18\x05 \x01(\x09B\x03\xE0A\x03\x12#\x0A\x16requested_cancellation\x18\x06 \x01(\x08B\x03\xE0A\x03\x12\x18\x0A\x0Bapi_version\x18\x07 \x01(\x09B\x03\xE0A\x03\"\x9F\x02\x0A\x18ImportDataObjectsRequest\x12\\\x0A\x0Agcs_import\x18\x02 \x01(\x0B2F.google.cloud.vectorsearch.v1.ImportDataObjectsRequest.GcsImportConfigH\x00\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x1A]\x0A\x0FGcsImportConfig\x12\x19\x0A\x0Ccontents_uri\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x16\x0A\x09error_uri\x18\x02 \x01(\x09B\x03\xE0A\x02\x12\x17\x0A\x0Aoutput_uri\x18\x03 \x01(\x09B\x03\xE0A\x01B\x08\x0A\x06config\"\xBF\x01\x0A\x19ImportDataObjectsMetadata\x124\x0A\x0Bcreate_time\x18\x01 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bupdate_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x1A\x0A\x0Dsuccess_count\x18\x03 \x01(\x03B\x03\xE0A\x03\x12\x1A\x0A\x0Dfailure_count\x18\x04 \x01(\x03B\x03\xE0A\x03\"?\x0A\x19ImportDataObjectsResponse\x12\"\x0A\x06status\x18\x01 \x01(\x0B2\x12.google.rpc.Status\"\x90\x06\x0A\x18ExportDataObjectsRequest\x12f\x0A\x0Fgcs_destination\x18\x02 \x01(\x0B2K.google.cloud.vectorsearch.v1.ExportDataObjectsRequest.GcsExportDestinationH\x00\x12<\x0A\x04name\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12]\x0A\x0Cfield_filter\x18\x03 \x01(\x0B2B.google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilterB\x03\xE0A\x01\x1A\xC5\x01\x0A\x14GcsExportDestination\x12\x17\x0A\x0Aexport_uri\x18\x01 \x01(\x09B\x03\xE0A\x02\x12g\x0A\x06format\x18\x02 \x01(\x0E2R.google.cloud.vectorsearch.v1.ExportDataObjectsRequest.GcsExportDestination.FormatB\x03\xE0A\x02\"+\x0A\x06Format\x12\x16\x0A\x12FORMAT_UNSPECIFIED\x10\x00\x12\x09\x0A\x05JSONL\x10\x02\x1A\x97\x02\x0A\x0BFieldFilter\x12l\x0A\x0Fincluded_fields\x18\x01 \x01(\x0B2L.google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter.FieldListB\x03\xE0A\x01H\x00\x12l\x0A\x0Fexcluded_fields\x18\x02 \x01(\x0B2L.google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter.FieldListB\x03\xE0A\x01H\x00\x1A \x0A\x09FieldList\x12\x13\x0A\x06fields\x18\x01 \x03(\x09B\x03\xE0A\x02B\x0A\x0A\x08selectorB\x0D\x0A\x0Bdestination\"\x87\x01\x0A\x19ExportDataObjectsMetadata\x124\x0A\x0Bcreate_time\x18\x01 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x124\x0A\x0Bfinish_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\"\x1B\x0A\x19ExportDataObjectsResponse\"\xFF\x02\x0A\x17DedicatedInfrastructure\x12R\x0A\x04mode\x18\x01 \x01(\x0E2:.google.cloud.vectorsearch.v1.DedicatedInfrastructure.ModeB\x03\xE0A\x01H\x00\x88\x01\x01\x12d\x0A\x10autoscaling_spec\x18\x02 \x01(\x0B2E.google.cloud.vectorsearch.v1.DedicatedInfrastructure.AutoscalingSpecB\x03\xE0A\x01\x1AQ\x0A\x0FAutoscalingSpec\x12\x1E\x0A\x11min_replica_count\x18\x01 \x01(\x05B\x03\xE0A\x01\x12\x1E\x0A\x11max_replica_count\x18\x02 \x01(\x05B\x03\xE0A\x01\"N\x0A\x04Mode\x12\x14\x0A\x10MODE_UNSPECIFIED\x10\x00\x12\x15\x0A\x11STORAGE_OPTIMIZED\x10\x01\x12\x19\x0A\x15PERFORMANCE_OPTIMIZED\x10\x02B\x07\x0A\x05_mode\"\xC2\x01\x0A\x0FDenseScannIndex\x12]\x0A\x11feature_norm_type\x18\x02 \x01(\x0E2=.google.cloud.vectorsearch.v1.DenseScannIndex.FeatureNormTypeB\x03\xE0A\x01\"P\x0A\x0FFeatureNormType\x12!\x0A\x1DFEATURE_NORM_TYPE_UNSPECIFIED\x10\x00\x12\x08\x0A\x04NONE\x10\x01\x12\x10\x0A\x0CUNIT_L2_NORM\x10\x022\x8D\x15\x0A\x13VectorSearchService\x12\xC0\x01\x0A\x0FListCollections\x124.google.cloud.vectorsearch.v1.ListCollectionsRequest\x1A5.google.cloud.vectorsearch.v1.ListCollectionsResponse\"@\xDAA\x06parent\x82\xD3\xE4\x93\x021\x12//v1/{parent=projects/*/locations/*}/collections\x12\xAD\x01\x0A\x0DGetCollection\x122.google.cloud.vectorsearch.v1.GetCollectionRequest\x1A(.google.cloud.vectorsearch.v1.Collection\">\xDAA\x04name\x82\xD3\xE4\x93\x021\x12//v1/{name=projects/*/locations/*/collections/*}\x12\xF2\x01\x0A\x10CreateCollection\x125.google.cloud.vectorsearch.v1.CreateCollectionRequest\x1A\x1D.google.longrunning.Operation\"\x87\x01\xCAA\x1F\x0A\x0ACollection\x12\x11OperationMetadata\xDAA\x1Fparent,collection,collection_id\x82\xD3\xE4\x93\x02=\"//v1/{parent=projects/*/locations/*}/collections:\x0Acollection\x12\xF4\x01\x0A\x10UpdateCollection\x125.google.cloud.vectorsearch.v1.UpdateCollectionRequest\x1A\x1D.google.longrunning.Operation\"\x89\x01\xCAA\x1F\x0A\x0ACollection\x12\x11OperationMetadata\xDAA\x16collection,update_mask\x82\xD3\xE4\x93\x02H2:/v1/{collection.name=projects/*/locations/*/collections/*}:\x0Acollection\x12\xD5\x01\x0A\x10DeleteCollection\x125.google.cloud.vectorsearch.v1.DeleteCollectionRequest\x1A\x1D.google.longrunning.Operation\"k\xCAA*\x0A\x15google.protobuf.Empty\x12\x11OperationMetadata\xDAA\x04name\x82\xD3\xE4\x93\x021*//v1/{name=projects/*/locations/*/collections/*}\x12\xBE\x01\x0A\x0BListIndexes\x120.google.cloud.vectorsearch.v1.ListIndexesRequest\x1A1.google.cloud.vectorsearch.v1.ListIndexesResponse\"J\xDAA\x06parent\x82\xD3\xE4\x93\x02;\x129/v1/{parent=projects/*/locations/*/collections/*}/indexes\x12\xA8\x01\x0A\x08GetIndex\x12-.google.cloud.vectorsearch.v1.GetIndexRequest\x1A#.google.cloud.vectorsearch.v1.Index\"H\xDAA\x04name\x82\xD3\xE4\x93\x02;\x129/v1/{name=projects/*/locations/*/collections/*/indexes/*}\x12\xDD\x01\x0A\x0BCreateIndex\x120.google.cloud.vectorsearch.v1.CreateIndexRequest\x1A\x1D.google.longrunning.Operation\"}\xCAA\x1A\x0A\x05Index\x12\x11OperationMetadata\xDAA\x15parent,index,index_id\x82\xD3\xE4\x93\x02B\"9/v1/{parent=projects/*/locations/*/collections/*}/indexes:\x05index\x12\xDF\x01\x0A\x0BUpdateIndex\x120.google.cloud.vectorsearch.v1.UpdateIndexRequest\x1A\x1D.google.longrunning.Operation\"\x7F\xCAA\x1A\x0A\x05Index\x12\x11OperationMetadata\xDAA\x11index,update_mask\x82\xD3\xE4\x93\x02H2?/v1/{index.name=projects/*/locations/*/collections/*/indexes/*}:\x05index\x12\xD5\x01\x0A\x0BDeleteIndex\x120.google.cloud.vectorsearch.v1.DeleteIndexRequest\x1A\x1D.google.longrunning.Operation\"u\xCAA*\x0A\x15google.protobuf.Empty\x12\x11OperationMetadata\xDAA\x04name\x82\xD3\xE4\x93\x02;*9/v1/{name=projects/*/locations/*/collections/*/indexes/*}\x12\xF2\x01\x0A\x11ImportDataObjects\x126.google.cloud.vectorsearch.v1.ImportDataObjectsRequest\x1A\x1D.google.longrunning.Operation\"\x85\x01\xCAA6\x0A\x19ImportDataObjectsResponse\x12\x19ImportDataObjectsMetadata\x82\xD3\xE4\x93\x02F\"A/v1/{name=projects/*/locations/*/collections/*}:importDataObjects:\x01*\x12\xF2\x01\x0A\x11ExportDataObjects\x126.google.cloud.vectorsearch.v1.ExportDataObjectsRequest\x1A\x1D.google.longrunning.Operation\"\x85\x01\xCAA6\x0A\x19ExportDataObjectsResponse\x12\x19ExportDataObjectsMetadata\x82\xD3\xE4\x93\x02F\"A/v1/{name=projects/*/locations/*/collections/*}:exportDataObjects:\x01*\x1AO\xCAA\x1Bvectorsearch.googleapis.com\xD2A.https://www.googleapis.com/auth/cloud-platformB\xE4\x01\x0A com.google.cloud.vectorsearch.v1B\x18VectorSearchServiceProtoP\x01ZDcloud.google.com/go/vectorsearch/apiv1/vectorsearchpb;vectorsearchpb\xAA\x02\x1CGoogle.Cloud.VectorSearch.V1\xCA\x02\x1CGoogle\\Cloud\\VectorSearch\\V1\xEA\x02\x1FGoogle::Cloud::VectorSearch::V1b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/VectorSearch/samples/V1/DataObjectSearchServiceClient/list_locations.php b/VectorSearch/samples/V1/DataObjectSearchServiceClient/list_locations.php
index 65a26d857a7f..b42cf457da0d 100644
--- a/VectorSearch/samples/V1/DataObjectSearchServiceClient/list_locations.php
+++ b/VectorSearch/samples/V1/DataObjectSearchServiceClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/VectorSearch/samples/V1/DataObjectServiceClient/list_locations.php b/VectorSearch/samples/V1/DataObjectServiceClient/list_locations.php
index 0a4730deaa8c..5ac76f799c96 100644
--- a/VectorSearch/samples/V1/DataObjectServiceClient/list_locations.php
+++ b/VectorSearch/samples/V1/DataObjectServiceClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/VectorSearch/samples/V1/VectorSearchServiceClient/list_locations.php b/VectorSearch/samples/V1/VectorSearchServiceClient/list_locations.php
index 212feaf99516..d0d1d58c98ee 100644
--- a/VectorSearch/samples/V1/VectorSearchServiceClient/list_locations.php
+++ b/VectorSearch/samples/V1/VectorSearchServiceClient/list_locations.php
@@ -33,9 +33,8 @@
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/VectorSearch/src/V1/Client/DataObjectSearchServiceClient.php b/VectorSearch/src/V1/Client/DataObjectSearchServiceClient.php
index 0459e3a28625..92898165d8f6 100644
--- a/VectorSearch/src/V1/Client/DataObjectSearchServiceClient.php
+++ b/VectorSearch/src/V1/Client/DataObjectSearchServiceClient.php
@@ -403,9 +403,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/VectorSearch/src/V1/Client/DataObjectServiceClient.php b/VectorSearch/src/V1/Client/DataObjectServiceClient.php
index a590f471ede8..7a4c3e9daca6 100644
--- a/VectorSearch/src/V1/Client/DataObjectServiceClient.php
+++ b/VectorSearch/src/V1/Client/DataObjectServiceClient.php
@@ -486,9 +486,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/VectorSearch/src/V1/Client/VectorSearchServiceClient.php b/VectorSearch/src/V1/Client/VectorSearchServiceClient.php
index 04b146b496da..cf1d2033847e 100644
--- a/VectorSearch/src/V1/Client/VectorSearchServiceClient.php
+++ b/VectorSearch/src/V1/Client/VectorSearchServiceClient.php
@@ -720,9 +720,8 @@ public function getLocation(GetLocationRequest $request, array $callOptions = []
* Lists information about the supported locations for this service.
*
* This method lists locations based on the resource scope provided in
- * the [ListLocationsRequest.name] field:
- *
- * * **Global locations**: If `name` is empty, the method lists the
+ * the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
+ * **Global locations**: If `name` is empty, the method lists the
* public locations available to all projects. * **Project-specific
* locations**: If `name` follows the format
* `projects/{project}`, the method lists locations visible to that
diff --git a/VectorSearch/src/V1/DeleteCollectionRequest.php b/VectorSearch/src/V1/DeleteCollectionRequest.php
index a15a54e937b2..51d6fcc50cc3 100644
--- a/VectorSearch/src/V1/DeleteCollectionRequest.php
+++ b/VectorSearch/src/V1/DeleteCollectionRequest.php
@@ -37,6 +37,14 @@ class DeleteCollectionRequest extends \Google\Protobuf\Internal\Message
* Generated from protobuf field string request_id = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = {
*/
protected $request_id = '';
+ /**
+ * Optional. If set to true, any Indexes and DataObjects from this Collection
+ * will also be deleted. (Otherwise, the request will only work if the
+ * Collection has no Indexes and DataObjects.)
+ *
+ * Generated from protobuf field bool force = 3 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $force = false;
/**
* @param string $name Required. Name of the resource
@@ -72,6 +80,10 @@ public static function build(string $name): self
* clients from accidentally creating duplicate commitments.
* The request ID must be a valid UUID with the exception that zero UUID is
* not supported (00000000-0000-0000-0000-000000000000).
+ * @type bool $force
+ * Optional. If set to true, any Indexes and DataObjects from this Collection
+ * will also be deleted. (Otherwise, the request will only work if the
+ * Collection has no Indexes and DataObjects.)
* }
*/
public function __construct($data = NULL) {
@@ -151,5 +163,35 @@ public function setRequestId($var)
return $this;
}
+ /**
+ * Optional. If set to true, any Indexes and DataObjects from this Collection
+ * will also be deleted. (Otherwise, the request will only work if the
+ * Collection has no Indexes and DataObjects.)
+ *
+ * Generated from protobuf field bool force = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @return bool
+ */
+ public function getForce()
+ {
+ return $this->force;
+ }
+
+ /**
+ * Optional. If set to true, any Indexes and DataObjects from this Collection
+ * will also be deleted. (Otherwise, the request will only work if the
+ * Collection has no Indexes and DataObjects.)
+ *
+ * Generated from protobuf field bool force = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @param bool $var
+ * @return $this
+ */
+ public function setForce($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->force = $var;
+
+ return $this;
+ }
+
}
diff --git a/VectorSearch/src/V1/ExportDataObjectsRequest.php b/VectorSearch/src/V1/ExportDataObjectsRequest.php
index 707456e9a116..a9f2f3782806 100644
--- a/VectorSearch/src/V1/ExportDataObjectsRequest.php
+++ b/VectorSearch/src/V1/ExportDataObjectsRequest.php
@@ -24,6 +24,17 @@ class ExportDataObjectsRequest extends \Google\Protobuf\Internal\Message
* Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
*/
protected $name = '';
+ /**
+ * Optional. Restricts which top-level Data Object fields appear in each
+ * exported JSONL record. If unset, every field is exported (the existing
+ * behavior). The primary use case is excluding the per-object `etag` so
+ * that the exported records can be imported into a Collection in a
+ * different region without optimistic-concurrency conflicts.
+ * Allowed field names are `id`, `data`, `vectors`, `etag`.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter field_filter = 3 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $field_filter = null;
protected $destination;
/**
@@ -38,6 +49,13 @@ class ExportDataObjectsRequest extends \Google\Protobuf\Internal\Message
* Required. The resource name of the Collection from which we want to export
* Data Objects. Format:
* `projects/{project}/locations/{location}/collections/{collection}`.
+ * @type \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter $field_filter
+ * Optional. Restricts which top-level Data Object fields appear in each
+ * exported JSONL record. If unset, every field is exported (the existing
+ * behavior). The primary use case is excluding the per-object `etag` so
+ * that the exported records can be imported into a Collection in a
+ * different region without optimistic-concurrency conflicts.
+ * Allowed field names are `id`, `data`, `vectors`, `etag`.
* }
*/
public function __construct($data = NULL) {
@@ -106,6 +124,52 @@ public function setName($var)
return $this;
}
+ /**
+ * Optional. Restricts which top-level Data Object fields appear in each
+ * exported JSONL record. If unset, every field is exported (the existing
+ * behavior). The primary use case is excluding the per-object `etag` so
+ * that the exported records can be imported into a Collection in a
+ * different region without optimistic-concurrency conflicts.
+ * Allowed field names are `id`, `data`, `vectors`, `etag`.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter field_filter = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter|null
+ */
+ public function getFieldFilter()
+ {
+ return $this->field_filter;
+ }
+
+ public function hasFieldFilter()
+ {
+ return isset($this->field_filter);
+ }
+
+ public function clearFieldFilter()
+ {
+ unset($this->field_filter);
+ }
+
+ /**
+ * Optional. Restricts which top-level Data Object fields appear in each
+ * exported JSONL record. If unset, every field is exported (the existing
+ * behavior). The primary use case is excluding the per-object `etag` so
+ * that the exported records can be imported into a Collection in a
+ * different region without optimistic-concurrency conflicts.
+ * Allowed field names are `id`, `data`, `vectors`, `etag`.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter field_filter = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter $var
+ * @return $this
+ */
+ public function setFieldFilter($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter::class);
+ $this->field_filter = $var;
+
+ return $this;
+ }
+
/**
* @return string
*/
diff --git a/VectorSearch/src/V1/ExportDataObjectsRequest/FieldFilter.php b/VectorSearch/src/V1/ExportDataObjectsRequest/FieldFilter.php
new file mode 100644
index 000000000000..1e593020b28c
--- /dev/null
+++ b/VectorSearch/src/V1/ExportDataObjectsRequest/FieldFilter.php
@@ -0,0 +1,114 @@
+google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter
+ */
+class FieldFilter extends \Google\Protobuf\Internal\Message
+{
+ protected $selector;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter\FieldList $included_fields
+ * Optional. Only these top-level fields will appear in each exported
+ * record.
+ * @type \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter\FieldList $excluded_fields
+ * Optional. Every top-level field except these will appear in each
+ * exported record.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Vectorsearch\V1\VectorsearchService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Optional. Only these top-level fields will appear in each exported
+ * record.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter.FieldList included_fields = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter\FieldList|null
+ */
+ public function getIncludedFields()
+ {
+ return $this->readOneof(1);
+ }
+
+ public function hasIncludedFields()
+ {
+ return $this->hasOneof(1);
+ }
+
+ /**
+ * Optional. Only these top-level fields will appear in each exported
+ * record.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter.FieldList included_fields = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter\FieldList $var
+ * @return $this
+ */
+ public function setIncludedFields($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter\FieldList::class);
+ $this->writeOneof(1, $var);
+
+ return $this;
+ }
+
+ /**
+ * Optional. Every top-level field except these will appear in each
+ * exported record.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter.FieldList excluded_fields = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter\FieldList|null
+ */
+ public function getExcludedFields()
+ {
+ return $this->readOneof(2);
+ }
+
+ public function hasExcludedFields()
+ {
+ return $this->hasOneof(2);
+ }
+
+ /**
+ * Optional. Every top-level field except these will appear in each
+ * exported record.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter.FieldList excluded_fields = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter\FieldList $var
+ * @return $this
+ */
+ public function setExcludedFields($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\VectorSearch\V1\ExportDataObjectsRequest\FieldFilter\FieldList::class);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getSelector()
+ {
+ return $this->whichOneof("selector");
+ }
+
+}
+
diff --git a/VectorSearch/src/V1/ExportDataObjectsRequest/FieldFilter/FieldList.php b/VectorSearch/src/V1/ExportDataObjectsRequest/FieldFilter/FieldList.php
new file mode 100644
index 000000000000..ce86b2d34c8d
--- /dev/null
+++ b/VectorSearch/src/V1/ExportDataObjectsRequest/FieldFilter/FieldList.php
@@ -0,0 +1,73 @@
+google.cloud.vectorsearch.v1.ExportDataObjectsRequest.FieldFilter.FieldList
+ */
+class FieldList extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. The list of top-level Data Object JSON field names. Allowed
+ * values are `id`, `data`, `vectors`, `etag`.
+ *
+ * Generated from protobuf field repeated string fields = 1 [(.google.api.field_behavior) = REQUIRED];
+ */
+ private $fields;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string[] $fields
+ * Required. The list of top-level Data Object JSON field names. Allowed
+ * values are `id`, `data`, `vectors`, `etag`.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Vectorsearch\V1\VectorsearchService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. The list of top-level Data Object JSON field names. Allowed
+ * values are `id`, `data`, `vectors`, `etag`.
+ *
+ * Generated from protobuf field repeated string fields = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @return RepeatedField
+ */
+ public function getFields()
+ {
+ return $this->fields;
+ }
+
+ /**
+ * Required. The list of top-level Data Object JSON field names. Allowed
+ * values are `id`, `data`, `vectors`, `etag`.
+ *
+ * Generated from protobuf field repeated string fields = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @param string[] $var
+ * @return $this
+ */
+ public function setFields($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->fields = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/VectorSearch/src/V1/TextSearch.php b/VectorSearch/src/V1/TextSearch.php
index 60bd53821ac3..993f2254b919 100644
--- a/VectorSearch/src/V1/TextSearch.php
+++ b/VectorSearch/src/V1/TextSearch.php
@@ -16,15 +16,16 @@
class TextSearch extends \Google\Protobuf\Internal\Message
{
/**
- * Required. The query text.
+ * Optional. The query text. Required when using the default text search mode.
*
- * Generated from protobuf field string search_text = 1 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field string search_text = 1 [(.google.api.field_behavior) = OPTIONAL];
*/
protected $search_text = '';
/**
- * Required. The data field names to search.
+ * Optional. The data field names to search. Required when using the default
+ * text search mode.
*
- * Generated from protobuf field repeated string data_field_names = 2 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field repeated string data_field_names = 2 [(.google.api.field_behavior) = OPTIONAL];
*/
private $data_field_names;
/**
@@ -54,9 +55,10 @@ class TextSearch extends \Google\Protobuf\Internal\Message
* Optional. Data for populating the Message object.
*
* @type string $search_text
- * Required. The query text.
+ * Optional. The query text. Required when using the default text search mode.
* @type string[] $data_field_names
- * Required. The data field names to search.
+ * Optional. The data field names to search. Required when using the default
+ * text search mode.
* @type \Google\Cloud\VectorSearch\V1\OutputFields $output_fields
* Optional. The fields to return in the search results.
* @type int $top_k
@@ -72,9 +74,9 @@ public function __construct($data = NULL) {
}
/**
- * Required. The query text.
+ * Optional. The query text. Required when using the default text search mode.
*
- * Generated from protobuf field string search_text = 1 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field string search_text = 1 [(.google.api.field_behavior) = OPTIONAL];
* @return string
*/
public function getSearchText()
@@ -83,9 +85,9 @@ public function getSearchText()
}
/**
- * Required. The query text.
+ * Optional. The query text. Required when using the default text search mode.
*
- * Generated from protobuf field string search_text = 1 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field string search_text = 1 [(.google.api.field_behavior) = OPTIONAL];
* @param string $var
* @return $this
*/
@@ -98,9 +100,10 @@ public function setSearchText($var)
}
/**
- * Required. The data field names to search.
+ * Optional. The data field names to search. Required when using the default
+ * text search mode.
*
- * Generated from protobuf field repeated string data_field_names = 2 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field repeated string data_field_names = 2 [(.google.api.field_behavior) = OPTIONAL];
* @return RepeatedField
*/
public function getDataFieldNames()
@@ -109,9 +112,10 @@ public function getDataFieldNames()
}
/**
- * Required. The data field names to search.
+ * Optional. The data field names to search. Required when using the default
+ * text search mode.
*
- * Generated from protobuf field repeated string data_field_names = 2 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field repeated string data_field_names = 2 [(.google.api.field_behavior) = OPTIONAL];
* @param string[] $var
* @return $this
*/