From fbe33947332e5477afc35a31815853840598c319 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 11:26:35 -0400 Subject: [PATCH] chore: [google-cloud-dialogflow-cx] Update gapic-generator-python to v1.18.3 (#12918) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 656040068 Source-Link: https://github.com/googleapis/googleapis/commit/3f4e29a88f2e1f412439e61c48c88f81dec0bbbf Source-Link: https://github.com/googleapis/googleapis-gen/commit/b8feb2109dde7b0938c22c993d002251ac6714dc Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWNsb3VkLWRpYWxvZ2Zsb3ctY3gvLk93bEJvdC55YW1sIiwiaCI6ImI4ZmViMjEwOWRkZTdiMDkzOGMyMmM5OTNkMDAyMjUxYWM2NzE0ZGMifQ== BEGIN_NESTED_COMMIT chore: [google-cloud-dialogflow-cx] Update gapic-generator-python to v1.18.3 PiperOrigin-RevId: 655567917 Source-Link: https://github.com/googleapis/googleapis/commit/43aa65e3897557c11d947f3133ddb76e5c4b2a6c Source-Link: https://github.com/googleapis/googleapis-gen/commit/0e38378753074c0f66ff63348d6864929e104d5c Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWNsb3VkLWRpYWxvZ2Zsb3ctY3gvLk93bEJvdC55YW1sIiwiaCI6IjBlMzgzNzg3NTMwNzRjMGY2NmZmNjMzNDhkNjg2NDkyOWUxMDRkNWMifQ== END_NESTED_COMMIT BEGIN_NESTED_COMMIT feat: [google-cloud-dialogflow-cx] exposed DataStoreConnectionSignals BEGIN_COMMIT_OVERRIDE feat: [google-cloud-dialogflow-cx] exposed DataStoreConnectionSignals feat: added support for lock flow feat: added support for multi language settings in flow feat: added support for service directory in tools feat: added support for oauth and service agent auth for webhook. feat: expose store tts option in security settings feat: expose PersonalizationSettings & SpeechSettings in v3 API. docs: clarified wording around enable_stackdriver_logging & enable_interaction_logging docs: clarified wording around start point of test config. docs: clarified wording around audio redaction END_COMMIT_OVERRIDE PiperOrigin-RevId: 654775620 Source-Link: https://github.com/googleapis/googleapis/commit/d44c3001960c430bc60ac1e1736cebfd8fd45e77 Source-Link: https://github.com/googleapis/googleapis-gen/commit/f4bd9f8cbfa75a531d571be10e68f1d51cc1f3ea Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWNsb3VkLWRpYWxvZ2Zsb3ctY3gvLk93bEJvdC55YW1sIiwiaCI6ImY0YmQ5ZjhjYmZhNzVhNTMxZDU3MWJlMTBlNjhmMWQ1MWNjMWYzZWEifQ== END_NESTED_COMMIT --------- Co-authored-by: Owl Bot Co-authored-by: Victor Chudnovsky --- .../google/cloud/dialogflowcx/__init__.py | 4 + .../cloud/dialogflowcx/gapic_version.py | 2 +- .../google/cloud/dialogflowcx_v3/__init__.py | 9 +- .../cloud/dialogflowcx_v3/gapic_version.py | 2 +- .../cloud/dialogflowcx_v3/types/__init__.py | 9 +- .../types/advanced_settings.py | 84 ++++- .../cloud/dialogflowcx_v3/types/agent.py | 41 ++- .../types/data_store_connection.py | 341 ++++++++++++++++++ .../cloud/dialogflowcx_v3/types/flow.py | 45 +++ .../types/security_settings.py | 14 + .../cloud/dialogflowcx_v3/types/session.py | 31 +- .../cloud/dialogflowcx_v3/types/test_case.py | 14 +- .../cloud/dialogflowcx_v3/types/webhook.py | 121 +++++++ .../dialogflowcx_v3beta1/gapic_version.py | 2 +- .../cloud/dialogflowcx_v3beta1/types/tool.py | 17 +- ...etadata_google.cloud.dialogflow.cx.v3.json | 2 +- ...ta_google.cloud.dialogflow.cx.v3beta1.json | 2 +- .../unit/gapic/dialogflowcx_v3/test_agents.py | 44 +++ .../dialogflowcx_v3/test_environments.py | 14 + .../unit/gapic/dialogflowcx_v3/test_flows.py | 56 +++ .../unit/gapic/dialogflowcx_v3/test_pages.py | 19 + .../test_security_settings_service.py | 2 + .../gapic/dialogflowcx_v3/test_test_cases.py | 18 + .../test_transition_route_groups.py | 19 + .../gapic/dialogflowcx_v3/test_webhooks.py | 14 + 25 files changed, 893 insertions(+), 33 deletions(-) diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx/__init__.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx/__init__.py index 5abe91db8509..e320c219e802 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx/__init__.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx/__init__.py @@ -126,6 +126,7 @@ ) from google.cloud.dialogflowcx_v3.types.data_store_connection import ( DataStoreConnection, + DataStoreConnectionSignals, DataStoreType, ) from google.cloud.dialogflowcx_v3.types.deployment import ( @@ -361,6 +362,7 @@ CreateWebhookRequest, DeleteWebhookRequest, GetWebhookRequest, + LanguageInfo, ListWebhooksRequest, ListWebhooksResponse, PageInfo, @@ -439,6 +441,7 @@ "ListChangelogsRequest", "ListChangelogsResponse", "DataStoreConnection", + "DataStoreConnectionSignals", "DataStoreType", "Deployment", "GetDeploymentRequest", @@ -643,6 +646,7 @@ "CreateWebhookRequest", "DeleteWebhookRequest", "GetWebhookRequest", + "LanguageInfo", "ListWebhooksRequest", "ListWebhooksResponse", "PageInfo", diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx/gapic_version.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx/gapic_version.py index 03d7732c0556..558c8aab67c5 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx/gapic_version.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "1.34.1" # {x-release-please-version} +__version__ = "0.0.0" # {x-release-please-version} diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/__init__.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/__init__.py index 0b71cd6e3f33..dfc215af8c85 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/__init__.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/__init__.py @@ -82,7 +82,11 @@ ListChangelogsRequest, ListChangelogsResponse, ) -from .types.data_store_connection import DataStoreConnection, DataStoreType +from .types.data_store_connection import ( + DataStoreConnection, + DataStoreConnectionSignals, + DataStoreType, +) from .types.deployment import ( Deployment, GetDeploymentRequest, @@ -313,6 +317,7 @@ CreateWebhookRequest, DeleteWebhookRequest, GetWebhookRequest, + LanguageInfo, ListWebhooksRequest, ListWebhooksResponse, PageInfo, @@ -380,6 +385,7 @@ "CreateVersionRequest", "CreateWebhookRequest", "DataStoreConnection", + "DataStoreConnectionSignals", "DataStoreType", "DeleteAgentRequest", "DeleteEntityTypeRequest", @@ -477,6 +483,7 @@ "IntentView", "IntentsClient", "KnowledgeConnectorSettings", + "LanguageInfo", "ListAgentsRequest", "ListAgentsResponse", "ListChangelogsRequest", diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/gapic_version.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/gapic_version.py index 03d7732c0556..558c8aab67c5 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/gapic_version.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "1.34.1" # {x-release-please-version} +__version__ = "0.0.0" # {x-release-please-version} diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/__init__.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/__init__.py index 4dbab6c88304..b4341bee3d0a 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/__init__.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/__init__.py @@ -51,7 +51,11 @@ ListChangelogsRequest, ListChangelogsResponse, ) -from .data_store_connection import DataStoreConnection, DataStoreType +from .data_store_connection import ( + DataStoreConnection, + DataStoreConnectionSignals, + DataStoreType, +) from .deployment import ( Deployment, GetDeploymentRequest, @@ -282,6 +286,7 @@ CreateWebhookRequest, DeleteWebhookRequest, GetWebhookRequest, + LanguageInfo, ListWebhooksRequest, ListWebhooksResponse, PageInfo, @@ -326,6 +331,7 @@ "ListChangelogsRequest", "ListChangelogsResponse", "DataStoreConnection", + "DataStoreConnectionSignals", "DataStoreType", "Deployment", "GetDeploymentRequest", @@ -530,6 +536,7 @@ "CreateWebhookRequest", "DeleteWebhookRequest", "GetWebhookRequest", + "LanguageInfo", "ListWebhooksRequest", "ListWebhooksResponse", "PageInfo", diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/advanced_settings.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/advanced_settings.py index 1012092810be..83ae083d693f 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/advanced_settings.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/advanced_settings.py @@ -17,6 +17,7 @@ from typing import MutableMapping, MutableSequence +from google.protobuf import duration_pb2 # type: ignore import proto # type: ignore from google.cloud.dialogflowcx_v3.types import gcs @@ -52,6 +53,14 @@ class AdvancedSettings(proto.Message): - Agent level - Flow level + speech_settings (google.cloud.dialogflowcx_v3.types.AdvancedSettings.SpeechSettings): + Settings for speech to text detection. + Exposed at the following levels: + + - Agent level + - Flow level + - Page level + - Parameter level dtmf_settings (google.cloud.dialogflowcx_v3.types.AdvancedSettings.DtmfSettings): Settings for DTMF. Exposed at the following levels: @@ -69,6 +78,45 @@ class AdvancedSettings(proto.Message): - Agent level. """ + class SpeechSettings(proto.Message): + r"""Define behaviors of speech to text detection. + + Attributes: + endpointer_sensitivity (int): + Sensitivity of the speech model that detects + the end of speech. Scale from 0 to 100. + no_speech_timeout (google.protobuf.duration_pb2.Duration): + Timeout before detecting no speech. + use_timeout_based_endpointing (bool): + Use timeout based endpointing, interpreting + endpointer sensitivy as seconds of timeout + value. + models (MutableMapping[str, str]): + Mapping from language to Speech-to-Text model. The mapped + Speech-to-Text model will be selected for requests from its + corresponding language. For more information, see `Speech + models `__. + """ + + endpointer_sensitivity: int = proto.Field( + proto.INT32, + number=1, + ) + no_speech_timeout: duration_pb2.Duration = proto.Field( + proto.MESSAGE, + number=2, + message=duration_pb2.Duration, + ) + use_timeout_based_endpointing: bool = proto.Field( + proto.BOOL, + number=3, + ) + models: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=5, + ) + class DtmfSettings(proto.Message): r"""Define behaviors for DTMF (dual tone multi frequency). @@ -87,6 +135,12 @@ class DtmfSettings(proto.Message): finish_digit (str): The digit that terminates a DTMF digit sequence. + interdigit_timeout_duration (google.protobuf.duration_pb2.Duration): + Interdigit timeout setting for matching dtmf + input to regex. + endpointing_timeout_duration (google.protobuf.duration_pb2.Duration): + Endpoint timeout setting for matching dtmf + input to regex. """ enabled: bool = proto.Field( @@ -101,17 +155,30 @@ class DtmfSettings(proto.Message): proto.STRING, number=3, ) + interdigit_timeout_duration: duration_pb2.Duration = proto.Field( + proto.MESSAGE, + number=6, + message=duration_pb2.Duration, + ) + endpointing_timeout_duration: duration_pb2.Duration = proto.Field( + proto.MESSAGE, + number=7, + message=duration_pb2.Duration, + ) class LoggingSettings(proto.Message): r"""Define behaviors on logging. Attributes: enable_stackdriver_logging (bool): - If true, StackDriver logging is currently - enabled. + Enables StackDriver logging. enable_interaction_logging (bool): - If true, DF Interaction logging is currently - enabled. + Enables DF Interaction logging. + enable_consent_based_redaction (bool): + Enables consent-based end-user input redaction, if true, a + pre-defined session parameter + ``$session.params.conversation-redaction`` will be used to + determine if the utterance should be redacted. """ enable_stackdriver_logging: bool = proto.Field( @@ -122,12 +189,21 @@ class LoggingSettings(proto.Message): proto.BOOL, number=3, ) + enable_consent_based_redaction: bool = proto.Field( + proto.BOOL, + number=4, + ) audio_export_gcs_destination: gcs.GcsDestination = proto.Field( proto.MESSAGE, number=2, message=gcs.GcsDestination, ) + speech_settings: SpeechSettings = proto.Field( + proto.MESSAGE, + number=3, + message=SpeechSettings, + ) dtmf_settings: DtmfSettings = proto.Field( proto.MESSAGE, number=5, diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/agent.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/agent.py index b53980fb179b..f296cbe1e9c5 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/agent.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/agent.py @@ -18,6 +18,7 @@ from typing import MutableMapping, MutableSequence from google.protobuf import field_mask_pb2 # type: ignore +from google.protobuf import struct_pb2 # type: ignore import proto # type: ignore from google.cloud.dialogflowcx_v3.types import ( @@ -127,8 +128,6 @@ class Agent(proto.Message): created, and can only be deleted by deleting the agent. Format: ``projects//locations//agents//flows/``. - Currently only the default start flow with id - "00000000-0000-0000-0000-000000000000" is allowed. security_settings (str): Name of the [SecuritySettings][google.cloud.dialogflow.cx.v3.SecuritySettings] @@ -142,6 +141,11 @@ class Agent(proto.Message): enable_spell_correction (bool): Indicates if automatic spell correction is enabled in detect intent requests. + enable_multi_language_training (bool): + Optional. Enable training multi-lingual + models for this agent. These models will be + trained on all the languages supported by the + agent. locked (bool): Indicates whether the agent is locked for changes. If the agent is locked, modifications to the agent will be rejected @@ -164,6 +168,9 @@ class Agent(proto.Message): answer_feedback_settings (google.cloud.dialogflowcx_v3.types.Agent.AnswerFeedbackSettings): Optional. Answer feedback collection settings. + personalization_settings (google.cloud.dialogflowcx_v3.types.Agent.PersonalizationSettings): + Optional. Settings for end user + personalization. """ class GitIntegrationSettings(proto.Message): @@ -259,6 +266,27 @@ class AnswerFeedbackSettings(proto.Message): number=1, ) + class PersonalizationSettings(proto.Message): + r"""Settings for end user personalization. + + Attributes: + default_end_user_metadata (google.protobuf.struct_pb2.Struct): + Optional. Default end user metadata, used when processing + DetectIntent requests. Recommended to be filled as a + template instead of hard-coded value, for example { "age": + "$session.params.age" }. The data will be merged with the + [QueryParameters.end_user_metadata][google.cloud.dialogflow.cx.v3.QueryParameters.end_user_metadata] + in + [DetectIntentRequest.query_params][google.cloud.dialogflow.cx.v3.DetectIntentRequest.query_params] + during query processing. + """ + + default_end_user_metadata: struct_pb2.Struct = proto.Field( + proto.MESSAGE, + number=1, + message=struct_pb2.Struct, + ) + name: str = proto.Field( proto.STRING, number=1, @@ -308,6 +336,10 @@ class AnswerFeedbackSettings(proto.Message): proto.BOOL, number=20, ) + enable_multi_language_training: bool = proto.Field( + proto.BOOL, + number=40, + ) locked: bool = proto.Field( proto.BOOL, number=27, @@ -338,6 +370,11 @@ class AnswerFeedbackSettings(proto.Message): number=38, message=AnswerFeedbackSettings, ) + personalization_settings: PersonalizationSettings = proto.Field( + proto.MESSAGE, + number=42, + message=PersonalizationSettings, + ) class ListAgentsRequest(proto.Message): diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/data_store_connection.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/data_store_connection.py index 46a65a065366..50ac8cc3cb57 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/data_store_connection.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/data_store_connection.py @@ -24,6 +24,7 @@ manifest={ "DataStoreType", "DataStoreConnection", + "DataStoreConnectionSignals", }, ) @@ -77,4 +78,344 @@ class DataStoreConnection(proto.Message): ) +class DataStoreConnectionSignals(proto.Message): + r"""Data store connection feature output signals. + Might be only partially field if processing stop before the + final answer. Reasons for this can be, but are not limited to: + empty UCS search results, positive RAI check outcome, grounding + failure, ... + + Attributes: + rewriter_model_call_signals (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.RewriterModelCallSignals): + Optional. Diagnostic info related to the + rewriter model call. + rewritten_query (str): + Optional. Rewritten string query used for + search. + search_snippets (MutableSequence[google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.SearchSnippet]): + Optional. Search snippets included in the + answer generation prompt. + answer_generation_model_call_signals (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.AnswerGenerationModelCallSignals): + Optional. Diagnostic info related to the + answer generation model call. + answer (str): + Optional. The final compiled answer. + answer_parts (MutableSequence[google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.AnswerPart]): + Optional. Answer parts with relevant citations. + Concatenation of texts should add up the ``answer`` (not + counting whitespaces). + cited_snippets (MutableSequence[google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.CitedSnippet]): + Optional. Snippets cited by the answer + generation model from the most to least + relevant. + grounding_signals (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.GroundingSignals): + Optional. Grounding signals. + safety_signals (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.SafetySignals): + Optional. Safety check result. + """ + + class RewriterModelCallSignals(proto.Message): + r"""Diagnostic info related to the rewriter model call. + + Attributes: + rendered_prompt (str): + Prompt as sent to the model. + model_output (str): + Output of the generative model. + model (str): + Name of the generative model. For example, + "gemini-ultra", "gemini-pro", "gemini-1.5-flash" + etc. Defaults to "Other" if the model is + unknown. + """ + + rendered_prompt: str = proto.Field( + proto.STRING, + number=1, + ) + model_output: str = proto.Field( + proto.STRING, + number=2, + ) + model: str = proto.Field( + proto.STRING, + number=3, + ) + + class SearchSnippet(proto.Message): + r"""Search snippet details. + + Attributes: + document_title (str): + Title of the enclosing document. + document_uri (str): + Uri for the document. Present if specified + for the document. + text (str): + Text included in the prompt. + """ + + document_title: str = proto.Field( + proto.STRING, + number=1, + ) + document_uri: str = proto.Field( + proto.STRING, + number=2, + ) + text: str = proto.Field( + proto.STRING, + number=3, + ) + + class AnswerGenerationModelCallSignals(proto.Message): + r"""Diagnostic info related to the answer generation model call. + + Attributes: + rendered_prompt (str): + Prompt as sent to the model. + model_output (str): + Output of the generative model. + model (str): + Name of the generative model. For example, + "gemini-ultra", "gemini-pro", "gemini-1.5-flash" + etc. Defaults to "Other" if the model is + unknown. + """ + + rendered_prompt: str = proto.Field( + proto.STRING, + number=1, + ) + model_output: str = proto.Field( + proto.STRING, + number=2, + ) + model: str = proto.Field( + proto.STRING, + number=3, + ) + + class AnswerPart(proto.Message): + r"""Answer part with citation. + + Attributes: + text (str): + Substring of the answer. + supporting_indices (MutableSequence[int]): + Citations for this answer part. Indices of + ``search_snippets``. + """ + + text: str = proto.Field( + proto.STRING, + number=1, + ) + supporting_indices: MutableSequence[int] = proto.RepeatedField( + proto.INT32, + number=2, + ) + + class CitedSnippet(proto.Message): + r"""Snippet cited by the answer generation model. + + Attributes: + search_snippet (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.SearchSnippet): + Details of the snippet. + snippet_index (int): + Index of the snippet in ``search_snippets`` field. + """ + + search_snippet: "DataStoreConnectionSignals.SearchSnippet" = proto.Field( + proto.MESSAGE, + number=1, + message="DataStoreConnectionSignals.SearchSnippet", + ) + snippet_index: int = proto.Field( + proto.INT32, + number=2, + ) + + class GroundingSignals(proto.Message): + r"""Grounding signals. + + Attributes: + decision (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.GroundingSignals.GroundingDecision): + Represents the decision of the grounding + check. + score (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.GroundingSignals.GroundingScoreBucket): + Grounding score bucket setting. + """ + + class GroundingDecision(proto.Enum): + r"""Represents the decision of the grounding check. + + Values: + GROUNDING_DECISION_UNSPECIFIED (0): + Decision not specified. + ACCEPTED_BY_GROUNDING (1): + Grounding have accepted the answer. + REJECTED_BY_GROUNDING (2): + Grounding have rejected the answer. + """ + GROUNDING_DECISION_UNSPECIFIED = 0 + ACCEPTED_BY_GROUNDING = 1 + REJECTED_BY_GROUNDING = 2 + + class GroundingScoreBucket(proto.Enum): + r"""Grounding score buckets. + + Values: + GROUNDING_SCORE_BUCKET_UNSPECIFIED (0): + Score not specified. + VERY_LOW (1): + We have very low confidence that the answer + is grounded. + LOW (3): + We have low confidence that the answer is + grounded. + MEDIUM (4): + We have medium confidence that the answer is + grounded. + HIGH (5): + We have high confidence that the answer is + grounded. + VERY_HIGH (6): + We have very high confidence that the answer + is grounded. + """ + GROUNDING_SCORE_BUCKET_UNSPECIFIED = 0 + VERY_LOW = 1 + LOW = 3 + MEDIUM = 4 + HIGH = 5 + VERY_HIGH = 6 + + decision: "DataStoreConnectionSignals.GroundingSignals.GroundingDecision" = ( + proto.Field( + proto.ENUM, + number=1, + enum="DataStoreConnectionSignals.GroundingSignals.GroundingDecision", + ) + ) + score: "DataStoreConnectionSignals.GroundingSignals.GroundingScoreBucket" = ( + proto.Field( + proto.ENUM, + number=2, + enum="DataStoreConnectionSignals.GroundingSignals.GroundingScoreBucket", + ) + ) + + class SafetySignals(proto.Message): + r"""Safety check results. + + Attributes: + decision (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.SafetySignals.SafetyDecision): + Safety decision. + banned_phrase_match (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals.SafetySignals.BannedPhraseMatch): + Specifies banned phrase match subject. + matched_banned_phrase (str): + The matched banned phrase if there was a + match. + """ + + class SafetyDecision(proto.Enum): + r"""Safety decision. + All kinds of check are incorporated into this final decision, + including banned phrases check. + + Values: + SAFETY_DECISION_UNSPECIFIED (0): + Decision not specified. + ACCEPTED_BY_SAFETY_CHECK (1): + No manual or automatic safety check fired. + REJECTED_BY_SAFETY_CHECK (2): + One ore more safety checks fired. + """ + SAFETY_DECISION_UNSPECIFIED = 0 + ACCEPTED_BY_SAFETY_CHECK = 1 + REJECTED_BY_SAFETY_CHECK = 2 + + class BannedPhraseMatch(proto.Enum): + r"""Specifies banned phrase match subject. + + Values: + BANNED_PHRASE_MATCH_UNSPECIFIED (0): + No banned phrase check was executed. + BANNED_PHRASE_MATCH_NONE (1): + All banned phrase checks led to no match. + BANNED_PHRASE_MATCH_QUERY (2): + A banned phrase matched the query. + BANNED_PHRASE_MATCH_RESPONSE (3): + A banned phrase matched the response. + """ + BANNED_PHRASE_MATCH_UNSPECIFIED = 0 + BANNED_PHRASE_MATCH_NONE = 1 + BANNED_PHRASE_MATCH_QUERY = 2 + BANNED_PHRASE_MATCH_RESPONSE = 3 + + decision: "DataStoreConnectionSignals.SafetySignals.SafetyDecision" = ( + proto.Field( + proto.ENUM, + number=1, + enum="DataStoreConnectionSignals.SafetySignals.SafetyDecision", + ) + ) + banned_phrase_match: "DataStoreConnectionSignals.SafetySignals.BannedPhraseMatch" = proto.Field( + proto.ENUM, + number=2, + enum="DataStoreConnectionSignals.SafetySignals.BannedPhraseMatch", + ) + matched_banned_phrase: str = proto.Field( + proto.STRING, + number=3, + ) + + rewriter_model_call_signals: RewriterModelCallSignals = proto.Field( + proto.MESSAGE, + number=1, + message=RewriterModelCallSignals, + ) + rewritten_query: str = proto.Field( + proto.STRING, + number=2, + ) + search_snippets: MutableSequence[SearchSnippet] = proto.RepeatedField( + proto.MESSAGE, + number=3, + message=SearchSnippet, + ) + answer_generation_model_call_signals: AnswerGenerationModelCallSignals = ( + proto.Field( + proto.MESSAGE, + number=4, + message=AnswerGenerationModelCallSignals, + ) + ) + answer: str = proto.Field( + proto.STRING, + number=5, + ) + answer_parts: MutableSequence[AnswerPart] = proto.RepeatedField( + proto.MESSAGE, + number=6, + message=AnswerPart, + ) + cited_snippets: MutableSequence[CitedSnippet] = proto.RepeatedField( + proto.MESSAGE, + number=7, + message=CitedSnippet, + ) + grounding_signals: GroundingSignals = proto.Field( + proto.MESSAGE, + number=8, + message=GroundingSignals, + ) + safety_signals: SafetySignals = proto.Field( + proto.MESSAGE, + number=9, + message=SafetySignals, + ) + + __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/flow.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/flow.py index b1119c1eefb1..6a4f64ff33b6 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/flow.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/flow.py @@ -208,8 +208,44 @@ class Flow(proto.Message): level. knowledge_connector_settings (google.cloud.dialogflowcx_v3.types.KnowledgeConnectorSettings): Optional. Knowledge connector configuration. + multi_language_settings (google.cloud.dialogflowcx_v3.types.Flow.MultiLanguageSettings): + Optional. Multi-lingual agent settings for + this flow. + locked (bool): + Indicates whether the flow is locked for + changes. If the flow is locked, modifications to + the flow will be rejected. """ + class MultiLanguageSettings(proto.Message): + r"""Settings for multi-lingual agents. + + Attributes: + enable_multi_language_detection (bool): + Optional. Enable multi-language detection for this flow. + This can be set only if [agent level multi language + setting][Agent.enable_multi_language_training] is enabled. + supported_response_language_codes (MutableSequence[str]): + Optional. Agent will respond in the detected language if the + detected language code is in the supported resolved + languages for this flow. This will be used only if + multi-language training is enabled in the + [agent][google.cloud.dialogflow.cx.v3.Agent.enable_multi_language_training] + and multi-language detection is enabled in the + [flow][google.cloud.dialogflow.cx.v3.Flow.MultiLanguageSettings.enable_multi_language_detection]. + The supported languages must be a subset of the languages + supported by the agent. + """ + + enable_multi_language_detection: bool = proto.Field( + proto.BOOL, + number=1, + ) + supported_response_language_codes: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=2, + ) + name: str = proto.Field( proto.STRING, number=1, @@ -251,6 +287,15 @@ class Flow(proto.Message): number=18, message=page.KnowledgeConnectorSettings, ) + multi_language_settings: MultiLanguageSettings = proto.Field( + proto.MESSAGE, + number=28, + message=MultiLanguageSettings, + ) + locked: bool = proto.Field( + proto.BOOL, + number=30, + ) class CreateFlowRequest(proto.Message): diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/security_settings.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/security_settings.py index d2ec56f54fc7..087dbcb5b52b 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/security_settings.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/security_settings.py @@ -251,6 +251,10 @@ class SecuritySettings(proto.Message): and use default. Setting a value higher than that has no effect. A missing value or setting to 0 also means we use default TTL. + When data retention configuration is changed, it + only applies to the data created after the + change; the TTL of existing data created before + the change stays intact. This field is a member of `oneof`_ ``data_retention``. retention_strategy (google.cloud.dialogflowcx_v3.types.SecuritySettings.RetentionStrategy): @@ -368,9 +372,15 @@ class AudioExportSettings(proto.Message): Filename pattern for exported audio. enable_audio_redaction (bool): Enable audio redaction if it is true. + Note that this only redacts end-user audio data; + Synthesised audio from the virtual agent is not + redacted. audio_format (google.cloud.dialogflowcx_v3.types.SecuritySettings.AudioExportSettings.AudioFormat): File format for exported audio file. Currently only in telephony recordings. + store_tts_audio (bool): + Whether to store TTS audio. By default, TTS + audio from the virtual agent is not exported. """ class AudioFormat(proto.Enum): @@ -409,6 +419,10 @@ class AudioFormat(proto.Enum): number=4, enum="SecuritySettings.AudioExportSettings.AudioFormat", ) + store_tts_audio: bool = proto.Field( + proto.BOOL, + number=6, + ) class InsightsExportSettings(proto.Message): r"""Settings for exporting conversations to diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/session.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/session.py index 31421e702308..f9c5b2891e5a 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/session.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/session.py @@ -24,6 +24,7 @@ from google.type import latlng_pb2 # type: ignore import proto # type: ignore +from google.cloud.dialogflowcx_v3.types import audio_config, data_store_connection, flow from google.cloud.dialogflowcx_v3.types import ( page, response_message, @@ -32,7 +33,6 @@ from google.cloud.dialogflowcx_v3.types import ( advanced_settings as gcdc_advanced_settings, ) -from google.cloud.dialogflowcx_v3.types import audio_config, flow from google.cloud.dialogflowcx_v3.types import intent as gcdc_intent __protobuf__ = proto.module( @@ -939,6 +939,11 @@ class QueryParameters(proto.Message): search_config (google.cloud.dialogflowcx_v3.types.SearchConfig): Optional. Search configuration for UCS search queries. + populate_data_store_connection_signals (bool): + Optional. If set to true and data stores are involved in + serving the request then + DetectIntentResponse.query_result.data_store_connection_signals + will be filled with data that can help evaluations. """ time_zone: str = proto.Field( @@ -1007,6 +1012,10 @@ class QueryParameters(proto.Message): number=20, message="SearchConfig", ) + populate_data_store_connection_signals: bool = proto.Field( + proto.BOOL, + number=25, + ) class SearchConfig(proto.Message): @@ -1401,6 +1410,12 @@ class QueryResult(proto.Message): Indicates whether the Thumbs up/Thumbs down rating controls are need to be shown for the response in the Dialogflow Messenger widget. + data_store_connection_signals (google.cloud.dialogflowcx_v3.types.DataStoreConnectionSignals): + Optional. Data store connection feature output signals. + Filled only when data stores are involved in serving the + query and DetectIntentRequest.populate + data_store_connection_quality_signals is set to true in the + request. """ text: str = proto.Field( @@ -1515,6 +1530,13 @@ class QueryResult(proto.Message): proto.BOOL, number=32, ) + data_store_connection_signals: data_store_connection.DataStoreConnectionSignals = ( + proto.Field( + proto.MESSAGE, + number=35, + message=data_store_connection.DataStoreConnectionSignals, + ) + ) class TextInput(proto.Message): @@ -1685,6 +1707,11 @@ class MatchType(proto.Enum): Indicates an empty query. EVENT (6): The query directly triggered an event. + KNOWLEDGE_CONNECTOR (8): + The query was matched to a Knowledge + Connector answer. + PLAYBOOK (9): + The query was handled by a [``Playbook``][Playbook]. """ MATCH_TYPE_UNSPECIFIED = 0 INTENT = 1 @@ -1693,6 +1720,8 @@ class MatchType(proto.Enum): NO_MATCH = 4 NO_INPUT = 5 EVENT = 6 + KNOWLEDGE_CONNECTOR = 8 + PLAYBOOK = 9 intent: gcdc_intent.Intent = proto.Field( proto.MESSAGE, diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/test_case.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/test_case.py index 29a22f18888d..956af15280db 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/test_case.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/test_case.py @@ -222,20 +222,18 @@ class TestConfig(proto.Message): ``projects//locations//agents//flows/``. Only one of ``flow`` and ``page`` should be set to indicate - the starting point of the test case. If both are set, - ``page`` takes precedence over ``flow``. If neither is set, - the test case will start with start page on the default - start flow. + the starting point of the test case. If neither is set, the + test case will start with start page on the default start + flow. page (str): The [page][google.cloud.dialogflow.cx.v3.Page] to start the test case with. Format: ``projects//locations//agents//flows//pages/``. Only one of ``flow`` and ``page`` should be set to indicate - the starting point of the test case. If both are set, - ``page`` takes precedence over ``flow``. If neither is set, - the test case will start with start page on the default - start flow. + the starting point of the test case. If neither is set, the + test case will start with start page on the default start + flow. """ tracking_parameters: MutableSequence[str] = proto.RepeatedField( diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/webhook.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/webhook.py index f0dd2590c53d..75b2d8e5afa6 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/webhook.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3/types/webhook.py @@ -38,6 +38,7 @@ "WebhookResponse", "PageInfo", "SessionInfo", + "LanguageInfo", }, ) @@ -116,6 +117,17 @@ class GenericWebService(proto.Message): -signkey example.com.key \ -out example.com.crt \ -extfile <(printf "\nsubjectAltName='DNS:www.example.com'") + oauth_config (google.cloud.dialogflowcx_v3.types.Webhook.GenericWebService.OAuthConfig): + Optional. The OAuth configuration of the + webhook. If specified, Dialogflow will initiate + the OAuth client credential flow to exchange an + access token from the 3rd party platform and put + it in the auth header. + service_agent_auth (google.cloud.dialogflowcx_v3.types.Webhook.GenericWebService.ServiceAgentAuth): + Optional. Indicate the auth token type generated from the + `Diglogflow service + agent `__. + The generated token is sent in the Authorization header. webhook_type (google.cloud.dialogflowcx_v3.types.Webhook.GenericWebService.WebhookType): Optional. Type of the webhook. http_method (google.cloud.dialogflowcx_v3.types.Webhook.GenericWebService.HttpMethod): @@ -133,6 +145,33 @@ class GenericWebService(proto.Message): - Value: field path in the webhook response """ + class ServiceAgentAuth(proto.Enum): + r"""Indicate the auth token type generated from the `Diglogflow service + agent `__. + + Values: + SERVICE_AGENT_AUTH_UNSPECIFIED (0): + Service agent auth type unspecified. Default to ID_TOKEN. + NONE (1): + No token used. + ID_TOKEN (2): + Use `ID + token `__ + generated from service agent. This can be used to access + Cloud Function and Cloud Run after you grant Invoker role to + ``service-@gcp-sa-dialogflow.iam.gserviceaccount.com``. + ACCESS_TOKEN (3): + Use `access + token `__ + generated from service agent. This can be used to access + other Google Cloud APIs after you grant required roles to + ``service-@gcp-sa-dialogflow.iam.gserviceaccount.com``. + """ + SERVICE_AGENT_AUTH_UNSPECIFIED = 0 + NONE = 1 + ID_TOKEN = 2 + ACCESS_TOKEN = 3 + class WebhookType(proto.Enum): r"""Represents the type of webhook configuration. @@ -178,6 +217,41 @@ class HttpMethod(proto.Enum): PATCH = 6 OPTIONS = 7 + class OAuthConfig(proto.Message): + r"""Represents configuration of OAuth client credential flow for + 3rd party API authentication. + + Attributes: + client_id (str): + Required. The client ID provided by the 3rd + party platform. + client_secret (str): + Required. The client secret provided by the + 3rd party platform. + token_endpoint (str): + Required. The token endpoint provided by the + 3rd party platform to exchange an access token. + scopes (MutableSequence[str]): + Optional. The OAuth scopes to grant. + """ + + client_id: str = proto.Field( + proto.STRING, + number=1, + ) + client_secret: str = proto.Field( + proto.STRING, + number=2, + ) + token_endpoint: str = proto.Field( + proto.STRING, + number=3, + ) + scopes: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=4, + ) + uri: str = proto.Field( proto.STRING, number=1, @@ -199,6 +273,16 @@ class HttpMethod(proto.Enum): proto.BYTES, number=5, ) + oauth_config: "Webhook.GenericWebService.OAuthConfig" = proto.Field( + proto.MESSAGE, + number=11, + message="Webhook.GenericWebService.OAuthConfig", + ) + service_agent_auth: "Webhook.GenericWebService.ServiceAgentAuth" = proto.Field( + proto.ENUM, + number=12, + enum="Webhook.GenericWebService.ServiceAgentAuth", + ) webhook_type: "Webhook.GenericWebService.WebhookType" = proto.Field( proto.ENUM, number=6, @@ -508,6 +592,9 @@ class WebhookRequest(proto.Message): user request. The field is filled when sentiment analysis is configured to be enabled for the request. + language_info (google.cloud.dialogflowcx_v3.types.LanguageInfo): + Information about the language of the + request. """ class FulfillmentInfo(proto.Message): @@ -686,6 +773,11 @@ class SentimentAnalysisResult(proto.Message): number=9, message=SentimentAnalysisResult, ) + language_info: "LanguageInfo" = proto.Field( + proto.MESSAGE, + number=18, + message="LanguageInfo", + ) class WebhookResponse(proto.Message): @@ -998,4 +1090,33 @@ class SessionInfo(proto.Message): ) +class LanguageInfo(proto.Message): + r"""Represents the language information of the request. + + Attributes: + input_language_code (str): + The language code specified in the original + [request][google.cloud.dialogflow.cx.v3.QueryInput.language_code]. + resolved_language_code (str): + The language code detected for this request + based on the user conversation. + confidence_score (float): + The confidence score of the detected language + between 0 and 1. + """ + + input_language_code: str = proto.Field( + proto.STRING, + number=1, + ) + resolved_language_code: str = proto.Field( + proto.STRING, + number=2, + ) + confidence_score: float = proto.Field( + proto.FLOAT, + number=3, + ) + + __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3beta1/gapic_version.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3beta1/gapic_version.py index 03d7732c0556..558c8aab67c5 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3beta1/gapic_version.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3beta1/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "1.34.1" # {x-release-please-version} +__version__ = "0.0.0" # {x-release-please-version} diff --git a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3beta1/types/tool.py b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3beta1/types/tool.py index 2adbf8c97e31..65a3df4ad4d9 100644 --- a/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3beta1/types/tool.py +++ b/packages/google-cloud-dialogflow-cx/google/cloud/dialogflowcx_v3beta1/types/tool.py @@ -660,17 +660,12 @@ class CACert(proto.Message): certificates. N.B. Make sure the HTTPS server certificates are signed with "subject alt name". For instance a certificate can be self-signed - using the following command: - - :: - - openssl x509 - -req -days 200 -in example.com.csr \ - -signkey example.com.key \ - -out example.com.crt \ - -extfile <(printf - "\nsubjectAltName='DNS:www.example.com'") - + using the following command, openssl x509 + -req -days 200 -in example.com.csr \ + -signkey example.com.key \ + -out example.com.crt \ + -extfile <(printf + "\nsubjectAltName='DNS:www.example.com'") """ display_name: str = proto.Field( diff --git a/packages/google-cloud-dialogflow-cx/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.cx.v3.json b/packages/google-cloud-dialogflow-cx/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.cx.v3.json index 73aca5fd98c1..1ea6a76db3ff 100644 --- a/packages/google-cloud-dialogflow-cx/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.cx.v3.json +++ b/packages/google-cloud-dialogflow-cx/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.cx.v3.json @@ -8,7 +8,7 @@ ], "language": "PYTHON", "name": "google-cloud-dialogflow-cx", - "version": "1.34.1" + "version": "0.1.0" }, "snippets": [ { diff --git a/packages/google-cloud-dialogflow-cx/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.cx.v3beta1.json b/packages/google-cloud-dialogflow-cx/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.cx.v3beta1.json index d352343c7398..0fdb4114a2f4 100644 --- a/packages/google-cloud-dialogflow-cx/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.cx.v3beta1.json +++ b/packages/google-cloud-dialogflow-cx/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.cx.v3beta1.json @@ -8,7 +8,7 @@ ], "language": "PYTHON", "name": "google-cloud-dialogflow-cx", - "version": "1.34.1" + "version": "0.1.0" }, "snippets": [ { diff --git a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_agents.py b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_agents.py index 391688e755bb..4270a0920a47 100644 --- a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_agents.py +++ b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_agents.py @@ -44,6 +44,7 @@ from google.cloud.location import locations_pb2 from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account +from google.protobuf import duration_pb2 # type: ignore from google.protobuf import empty_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import json_format @@ -1661,6 +1662,7 @@ def test_get_agent(request_type, transport: str = "grpc"): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) response = client.get_agent(request) @@ -1684,6 +1686,7 @@ def test_get_agent(request_type, transport: str = "grpc"): assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True @@ -1794,6 +1797,7 @@ async def test_get_agent_empty_call_async(): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) ) @@ -1871,6 +1875,7 @@ async def test_get_agent_async( security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) ) @@ -1895,6 +1900,7 @@ async def test_get_agent_async( assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True @@ -2074,6 +2080,7 @@ def test_create_agent(request_type, transport: str = "grpc"): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) response = client.create_agent(request) @@ -2097,6 +2104,7 @@ def test_create_agent(request_type, transport: str = "grpc"): assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True @@ -2207,6 +2215,7 @@ async def test_create_agent_empty_call_async(): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) ) @@ -2286,6 +2295,7 @@ async def test_create_agent_async( security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) ) @@ -2310,6 +2320,7 @@ async def test_create_agent_async( assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True @@ -2499,6 +2510,7 @@ def test_update_agent(request_type, transport: str = "grpc"): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) response = client.update_agent(request) @@ -2522,6 +2534,7 @@ def test_update_agent(request_type, transport: str = "grpc"): assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True @@ -2628,6 +2641,7 @@ async def test_update_agent_empty_call_async(): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) ) @@ -2707,6 +2721,7 @@ async def test_update_agent_async( security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) ) @@ -2731,6 +2746,7 @@ async def test_update_agent_async( assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True @@ -5687,6 +5703,7 @@ def test_get_agent_rest(request_type): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) @@ -5714,6 +5731,7 @@ def test_get_agent_rest(request_type): assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True @@ -6002,17 +6020,27 @@ def test_create_agent_rest(request_type): "security_settings": "security_settings_value", "enable_stackdriver_logging": True, "enable_spell_correction": True, + "enable_multi_language_training": True, "locked": True, "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {"seconds": 751, "nanos": 543}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "git_integration_settings": { @@ -6027,6 +6055,7 @@ def test_create_agent_rest(request_type): "text_to_speech_settings": {"synthesize_speech_configs": {}}, "gen_app_builder_settings": {"engine": "engine_value"}, "answer_feedback_settings": {"enable_answer_feedback": True}, + "personalization_settings": {"default_end_user_metadata": {"fields": {}}}, } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency @@ -6112,6 +6141,7 @@ def get_message_fields(field): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) @@ -6139,6 +6169,7 @@ def get_message_fields(field): assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True @@ -6440,17 +6471,27 @@ def test_update_agent_rest(request_type): "security_settings": "security_settings_value", "enable_stackdriver_logging": True, "enable_spell_correction": True, + "enable_multi_language_training": True, "locked": True, "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {"seconds": 751, "nanos": 543}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "git_integration_settings": { @@ -6465,6 +6506,7 @@ def test_update_agent_rest(request_type): "text_to_speech_settings": {"synthesize_speech_configs": {}}, "gen_app_builder_settings": {"engine": "engine_value"}, "answer_feedback_settings": {"enable_answer_feedback": True}, + "personalization_settings": {"default_end_user_metadata": {"fields": {}}}, } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency @@ -6550,6 +6592,7 @@ def get_message_fields(field): security_settings="security_settings_value", enable_stackdriver_logging=True, enable_spell_correction=True, + enable_multi_language_training=True, locked=True, ) @@ -6577,6 +6620,7 @@ def get_message_fields(field): assert response.security_settings == "security_settings_value" assert response.enable_stackdriver_logging is True assert response.enable_spell_correction is True + assert response.enable_multi_language_training is True assert response.locked is True diff --git a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_environments.py b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_environments.py index 739c8098c6a3..dfbd1f7d1864 100644 --- a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_environments.py +++ b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_environments.py @@ -5721,6 +5721,13 @@ def test_create_environment_rest(request_type): b"allowed_ca_certs_blob1", b"allowed_ca_certs_blob2", ], + "oauth_config": { + "client_id": "client_id_value", + "client_secret": "client_secret_value", + "token_endpoint": "token_endpoint_value", + "scopes": ["scopes_value1", "scopes_value2"], + }, + "service_agent_auth": 1, "webhook_type": 1, "http_method": 1, "request_body": "request_body_value", @@ -6146,6 +6153,13 @@ def test_update_environment_rest(request_type): b"allowed_ca_certs_blob1", b"allowed_ca_certs_blob2", ], + "oauth_config": { + "client_id": "client_id_value", + "client_secret": "client_secret_value", + "token_endpoint": "token_endpoint_value", + "scopes": ["scopes_value1", "scopes_value2"], + }, + "service_agent_auth": 1, "webhook_type": 1, "http_method": 1, "request_body": "request_body_value", diff --git a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_flows.py b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_flows.py index 67710baa8517..b47714ad4969 100644 --- a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_flows.py +++ b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_flows.py @@ -44,6 +44,7 @@ from google.cloud.location import locations_pb2 from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account +from google.protobuf import duration_pb2 # type: ignore from google.protobuf import empty_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import json_format @@ -1097,6 +1098,7 @@ def test_create_flow(request_type, transport: str = "grpc"): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) response = client.create_flow(request) @@ -1112,6 +1114,7 @@ def test_create_flow(request_type, transport: str = "grpc"): assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True def test_create_flow_empty_call(): @@ -1216,6 +1219,7 @@ async def test_create_flow_empty_call_async(): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) ) response = await client.create_flow() @@ -1287,6 +1291,7 @@ async def test_create_flow_async( display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) ) response = await client.create_flow(request) @@ -1303,6 +1308,7 @@ async def test_create_flow_async( assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True @pytest.mark.asyncio @@ -2388,6 +2394,7 @@ def test_get_flow(request_type, transport: str = "grpc"): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) response = client.get_flow(request) @@ -2403,6 +2410,7 @@ def test_get_flow(request_type, transport: str = "grpc"): assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True def test_get_flow_empty_call(): @@ -2507,6 +2515,7 @@ async def test_get_flow_empty_call_async(): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) ) response = await client.get_flow() @@ -2576,6 +2585,7 @@ async def test_get_flow_async( display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) ) response = await client.get_flow(request) @@ -2592,6 +2602,7 @@ async def test_get_flow_async( assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True @pytest.mark.asyncio @@ -2763,6 +2774,7 @@ def test_update_flow(request_type, transport: str = "grpc"): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) response = client.update_flow(request) @@ -2778,6 +2790,7 @@ def test_update_flow(request_type, transport: str = "grpc"): assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True def test_update_flow_empty_call(): @@ -2880,6 +2893,7 @@ async def test_update_flow_empty_call_async(): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) ) response = await client.update_flow() @@ -2951,6 +2965,7 @@ async def test_update_flow_async( display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) ) response = await client.update_flow(request) @@ -2967,6 +2982,7 @@ async def test_update_flow_async( assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True @pytest.mark.asyncio @@ -4818,14 +4834,23 @@ def test_create_flow_rest(request_type): ], "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {"seconds": 751, "nanos": 543}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "enable_generative_fallback": True, @@ -4862,6 +4887,14 @@ def test_create_flow_rest(request_type): {"data_store_type": 1, "data_store": "data_store_value"} ], }, + "multi_language_settings": { + "enable_multi_language_detection": True, + "supported_response_language_codes": [ + "supported_response_language_codes_value1", + "supported_response_language_codes_value2", + ], + }, + "locked": True, } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency @@ -4940,6 +4973,7 @@ def get_message_fields(field): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) # Wrap the value into a proper Response obj @@ -4959,6 +4993,7 @@ def get_message_fields(field): assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True def test_create_flow_rest_use_cached_wrapped_rpc(): @@ -5912,6 +5947,7 @@ def test_get_flow_rest(request_type): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) # Wrap the value into a proper Response obj @@ -5931,6 +5967,7 @@ def test_get_flow_rest(request_type): assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True def test_get_flow_rest_use_cached_wrapped_rpc(): @@ -6290,14 +6327,23 @@ def test_update_flow_rest(request_type): ], "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {"seconds": 751, "nanos": 543}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "enable_generative_fallback": True, @@ -6334,6 +6380,14 @@ def test_update_flow_rest(request_type): {"data_store_type": 1, "data_store": "data_store_value"} ], }, + "multi_language_settings": { + "enable_multi_language_detection": True, + "supported_response_language_codes": [ + "supported_response_language_codes_value1", + "supported_response_language_codes_value2", + ], + }, + "locked": True, } # The version of a generated dependency at test runtime may differ from the version used during generation. # Delete any fields which are not present in the current runtime dependency @@ -6412,6 +6466,7 @@ def get_message_fields(field): display_name="display_name_value", description="description_value", transition_route_groups=["transition_route_groups_value"], + locked=True, ) # Wrap the value into a proper Response obj @@ -6431,6 +6486,7 @@ def get_message_fields(field): assert response.display_name == "display_name_value" assert response.description == "description_value" assert response.transition_route_groups == ["transition_route_groups_value"] + assert response.locked is True def test_update_flow_rest_use_cached_wrapped_rpc(): diff --git a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_pages.py b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_pages.py index a5eb9834d2c1..2cf8df14a7d2 100644 --- a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_pages.py +++ b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_pages.py @@ -35,6 +35,7 @@ from google.cloud.location import locations_pb2 from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account +from google.protobuf import duration_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import json_format from google.protobuf import struct_pb2 # type: ignore @@ -3880,14 +3881,23 @@ def test_create_page_rest(request_type): ], "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {"seconds": 751, "nanos": 543}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "enable_generative_fallback": True, @@ -4400,14 +4410,23 @@ def test_update_page_rest(request_type): ], "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {"seconds": 751, "nanos": 543}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "enable_generative_fallback": True, diff --git a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_security_settings_service.py b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_security_settings_service.py index 15eabe71e60a..965d72b1a776 100644 --- a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_security_settings_service.py +++ b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_security_settings_service.py @@ -3542,6 +3542,7 @@ def test_create_security_settings_rest(request_type): "audio_export_pattern": "audio_export_pattern_value", "enable_audio_redaction": True, "audio_format": 1, + "store_tts_audio": True, }, "insights_export_settings": {"enable_insights_export": True}, } @@ -4319,6 +4320,7 @@ def test_update_security_settings_rest(request_type): "audio_export_pattern": "audio_export_pattern_value", "enable_audio_redaction": True, "audio_format": 1, + "store_tts_audio": True, }, "insights_export_settings": {"enable_insights_export": True}, } diff --git a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_test_cases.py b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_test_cases.py index 7d85b214d24d..2473d5544a0f 100644 --- a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_test_cases.py +++ b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_test_cases.py @@ -6808,14 +6808,23 @@ def test_create_test_case_rest(request_type): ], "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "enable_generative_fallback": True, @@ -7442,14 +7451,23 @@ def test_update_test_case_rest(request_type): ], "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "enable_generative_fallback": True, diff --git a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_transition_route_groups.py b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_transition_route_groups.py index 565078a02c23..c2b1e21e1f38 100644 --- a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_transition_route_groups.py +++ b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_transition_route_groups.py @@ -35,6 +35,7 @@ from google.cloud.location import locations_pb2 from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account +from google.protobuf import duration_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import json_format from google.protobuf import struct_pb2 # type: ignore @@ -4215,14 +4216,23 @@ def test_create_transition_route_group_rest(request_type): ], "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {"seconds": 751, "nanos": 543}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "enable_generative_fallback": True, @@ -4725,14 +4735,23 @@ def test_update_transition_route_group_rest(request_type): ], "advanced_settings": { "audio_export_gcs_destination": {"uri": "uri_value"}, + "speech_settings": { + "endpointer_sensitivity": 2402, + "no_speech_timeout": {"seconds": 751, "nanos": 543}, + "use_timeout_based_endpointing": True, + "models": {}, + }, "dtmf_settings": { "enabled": True, "max_digits": 1065, "finish_digit": "finish_digit_value", + "interdigit_timeout_duration": {}, + "endpointing_timeout_duration": {}, }, "logging_settings": { "enable_stackdriver_logging": True, "enable_interaction_logging": True, + "enable_consent_based_redaction": True, }, }, "enable_generative_fallback": True, diff --git a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_webhooks.py b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_webhooks.py index 99beed21d3b6..76479e97f14b 100644 --- a/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_webhooks.py +++ b/packages/google-cloud-dialogflow-cx/tests/unit/gapic/dialogflowcx_v3/test_webhooks.py @@ -3802,6 +3802,13 @@ def test_create_webhook_rest(request_type): "password": "password_value", "request_headers": {}, "allowed_ca_certs": [b"allowed_ca_certs_blob1", b"allowed_ca_certs_blob2"], + "oauth_config": { + "client_id": "client_id_value", + "client_secret": "client_secret_value", + "token_endpoint": "token_endpoint_value", + "scopes": ["scopes_value1", "scopes_value2"], + }, + "service_agent_auth": 1, "webhook_type": 1, "http_method": 1, "request_body": "request_body_value", @@ -4205,6 +4212,13 @@ def test_update_webhook_rest(request_type): "password": "password_value", "request_headers": {}, "allowed_ca_certs": [b"allowed_ca_certs_blob1", b"allowed_ca_certs_blob2"], + "oauth_config": { + "client_id": "client_id_value", + "client_secret": "client_secret_value", + "token_endpoint": "token_endpoint_value", + "scopes": ["scopes_value1", "scopes_value2"], + }, + "service_agent_auth": 1, "webhook_type": 1, "http_method": 1, "request_body": "request_body_value",