Gemini Enterprise for Customer Experience API . projects . locations . apps . versions

Instance Methods

close()

Close httplib2 connections.

create(parent, appVersionId=None, body=None, x__xgafv=None)

Creates a new app version in the given app.

delete(name, etag=None, x__xgafv=None)

Deletes the specified app version.

get(name, x__xgafv=None)

Gets details of the specified app version.

list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)

Lists all app versions in the given app.

list_next()

Retrieves the next page of results.

restore(name, body=None, x__xgafv=None)

Restores the specified app version. This will create a new app version from the current draft app and overwrite the current draft with the specified app version.

Method Details

close()
Close httplib2 connections.
create(parent, appVersionId=None, body=None, x__xgafv=None)
Creates a new app version in the given app.

Args:
  parent: string, Required. The resource name of the app to create an app version in. (required)
  body: object, The request body.
    The object takes the form of:

{ # In Customer Engagement Suite (CES), an app version is a snapshot of the app at a specific point in time. It is immutable and cannot be modified once created.
  "createTime": "A String", # Output only. Timestamp when the app version was created.
  "creator": "A String", # Output only. Email of the user who created the app version.
  "description": "A String", # Optional. The description of the app version.
  "displayName": "A String", # Optional. The display name of the app version.
  "etag": "A String", # Output only. Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
  "name": "A String", # Identifier. The unique identifier of the app version. Format: `projects/{project}/locations/{location}/apps/{app}/versions/{version}`
  "snapshot": { # A snapshot of the app. # Output only. The snapshot of the app when the version is created.
    "agents": [ # Optional. List of agents in the app.
      { # An agent acts as the fundamental building block that provides instructions to the Large Language Model (LLM) for executing specific tasks.
        "afterAgentCallbacks": [ # Optional. The callbacks to execute after the agent is called. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "afterModelCallbacks": [ # Optional. The callbacks to execute after the model is called. If there are multiple calls to the model, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "afterToolCallbacks": [ # Optional. The callbacks to execute after the tool is invoked. If there are multiple tool invocations, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeAgentCallbacks": [ # Optional. The callbacks to execute before the agent is called. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeModelCallbacks": [ # Optional. The callbacks to execute before the model is called. If there are multiple calls to the model, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeToolCallbacks": [ # Optional. The callbacks to execute before the tool is invoked. If there are multiple tool invocations, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "childAgents": [ # Optional. List of child agents in the agent tree. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
          "A String",
        ],
        "createTime": "A String", # Output only. Timestamp when the agent was created.
        "description": "A String", # Optional. Human-readable description of the agent.
        "displayName": "A String", # Required. Display name of the agent.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "generatedSummary": "A String", # Output only. If the agent is generated by the LLM assistant, this field contains a descriptive summary of the generation.
        "guardrails": [ # Optional. List of guardrails for the agent. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
          "A String",
        ],
        "instruction": "A String", # Optional. Instructions for the LLM model to guide the agent's behavior.
        "llmAgent": { # Default agent type. The agent uses instructions and callbacks specified in the agent to perform the task using a large language model. # Optional. The default agent type.
        },
        "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Configurations for the LLM model.
          "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
          "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
        },
        "name": "A String", # Identifier. The unique identifier of the agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
        "remoteDialogflowAgent": { # The agent which will transfer execution to a remote [Dialogflow CX](https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent) agent. The Dialogflow agent will process subsequent user queries until the session ends or flow ends, and the control is transferred back to the parent CES agent. # Optional. The remote [Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents) agent to be used for the agent execution. If this field is set, all other agent level properties will be ignored. Note: If the Dialogflow agent is in a different project from the app, you should grant `roles/dialogflow.client` to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "agent": "A String", # Required. The [Dialogflow](https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent) agent resource name. Format: `projects/{project}/locations/{location}/agents/{agent}`
          "environmentId": "A String", # Optional. The environment ID of the Dialogflow agent to be used for the agent execution. If not specified, the draft environment will be used.
          "flowId": "A String", # Optional. The flow ID of the flow in the Dialogflow agent.
          "inputVariableMapping": { # Optional. The mapping of the app variables names to the Dialogflow session parameters names to be sent to the Dialogflow agent as input.
            "a_key": "A String",
          },
          "outputVariableMapping": { # Optional. The mapping of the Dialogflow session parameters names to the app variables names to be sent back to the CES agent after the Dialogflow agent execution ends.
            "a_key": "A String",
          },
          "respectResponseInterruptionSettings": True or False, # Optional. Indicates whether to respect the message-level interruption settings configured in the Dialogflow agent. * If false: all response messages from the Dialogflow agent follow the app-level barge-in settings. * If true: only response messages with [`allow_playback_interruption`](https://docs.cloud.google.com/dialogflow/cx/docs/reference/rpc/google.cloud.dialogflow.cx.v3#text) set to true will be interruptable, all other messages follow the app-level barge-in settings.
        },
        "tools": [ # Optional. List of available tools for the agent. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
          "A String",
        ],
        "toolsets": [ # Optional. List of toolsets for the agent.
          { # A toolset with a selection of its tools.
            "toolIds": [ # Optional. The tools IDs to filter the toolset.
              "A String",
            ],
            "toolset": "A String", # Required. The resource name of the toolset. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
          },
        ],
        "transferRules": [ # Optional. Agent transfer rules. If multiple rules match, the first one in the list will be used.
          { # Rule for transferring to a specific agent.
            "childAgent": "A String", # Required. The resource name of the child agent the rule applies to. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
            "deterministicTransfer": { # Deterministic transfer rule. When the condition evaluates to true, the transfer occurs. # Optional. A rule that immediately transfers to the target agent when the condition is met.
              "expressionCondition": { # Expression condition based on session state. # Optional. A rule that evaluates a session state condition. If the condition evaluates to true, the transfer occurs.
                "expression": "A String", # Required. The string representation of cloud.api.Expression condition.
              },
              "pythonCodeCondition": { # Python code block to evaluate the condition. # Optional. A rule that uses Python code block to evaluate the conditions. If the condition evaluates to true, the transfer occurs.
                "pythonCode": "A String", # Required. The python code to execute.
              },
            },
            "direction": "A String", # Required. The direction of the transfer.
            "disablePlannerTransfer": { # A rule that prevents the planner from transferring to the target agent. # Optional. Rule that prevents the planner from transferring to the target agent.
              "expressionCondition": { # Expression condition based on session state. # Required. If the condition evaluates to true, planner will not be allowed to transfer to the target agent.
                "expression": "A String", # Required. The string representation of cloud.api.Expression condition.
              },
            },
          },
        ],
        "updateTime": "A String", # Output only. Timestamp when the agent was last updated.
      },
    ],
    "app": { # An app serves as a top-level container for a group of agents, including the root agent and its sub-agents, along with their associated configurations. These agents work together to achieve specific goals within the app's context. # Optional. The basic settings for the app.
      "audioProcessingConfig": { # Configuration for how the input and output audio should be processed and delivered. # Optional. Audio processing configuration of the app.
        "ambientSoundConfig": { # Configuration for the ambient sound to be played with the synthesized agent response, to enhance the naturalness of the conversation. # Optional. Configuration for the ambient sound to be played with the synthesized agent response, to enhance the naturalness of the conversation.
          "gcsUri": "A String", # Optional. Ambient noise as a mono-channel, 16kHz WAV file stored in [Cloud Storage](https://cloud.google.com/storage). Note: Please make sure the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com` has `storage.objects.get` permission to the Cloud Storage object.
          "prebuiltAmbientNoise": "A String", # Optional. Deprecated: `prebuilt_ambient_noise` is deprecated in favor of `prebuilt_ambient_sound`.
          "prebuiltAmbientSound": "A String", # Optional. Name of the prebuilt ambient sound. Valid values are: - "coffee_shop" - "keyboard" - "keypad" - "hum" - "office_1" - "office_2" - "office_3" - "room_1" - "room_2" - "room_3" - "room_4" - "room_5" - "air_conditioner"
          "volumeGainDb": 3.14, # Optional. Volume gain (in dB) of the normal native volume supported by ambient noise, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that.
        },
        "bargeInConfig": { # Configuration for how the user barge-in activities should be handled. # Optional. Configures the agent behavior for the user barge-in activities.
          "bargeInAwareness": True or False, # Optional. If enabled, the agent will adapt its next response based on the assumption that the user hasn't heard the full preceding agent message. This should not be used in scenarios where agent responses are displayed visually.
          "disableBargeIn": True or False, # Optional. Disables user barge-in while the agent is speaking. If true, user input during agent response playback will be ignored. Deprecated: `disable_barge_in` is deprecated in favor of `disable_barge_in_control` in ChannelProfile.
        },
        "inactivityTimeout": "A String", # Optional. The duration of user inactivity (no speech or interaction) before the agent prompts the user for reengagement. If not set, the agent will not prompt the user for reengagement.
        "synthesizeSpeechConfigs": { # Optional. Configuration of how the agent response should be synthesized, mapping from the language code to SynthesizeSpeechConfig. If the configuration for the specified language code is not found, the configuration for the root language code will be used. For example, if the map contains "en-us" and "en", and the specified language code is "en-gb", then "en" configuration will be used. Note: Language code is case-insensitive.
          "a_key": { # Configuration for how the agent response should be synthesized.
            "speakingRate": 3.14, # Optional. The speaking rate/speed in the range [0.25, 2.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. Values outside of the range [0.25, 2.0] will return an error.
            "voice": "A String", # Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices) from Cloud Text-to-Speech.
          },
        },
      },
      "clientCertificateSettings": { # Settings for custom client certificates. # Optional. The default client certificate settings for the app.
        "passphrase": "A String", # Optional. The name of the SecretManager secret version resource storing the passphrase to decrypt the private key. Should be left unset if the private key is not encrypted. Format: `projects/{project}/secrets/{secret}/versions/{version}`
        "privateKey": "A String", # Required. The name of the SecretManager secret version resource storing the private key encoded in PEM format. Format: `projects/{project}/secrets/{secret}/versions/{version}`
        "tlsCertificate": "A String", # Required. The TLS certificate encoded in PEM format. This string must include the begin header and end footer lines.
      },
      "createTime": "A String", # Output only. Timestamp when the app was created.
      "dataStoreSettings": { # Data store related settings for the app. # Optional. The data store settings for the app.
        "engines": [ # Output only. The engines for the app.
          { # An engine to which the data stores are connected. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction.
            "name": "A String", # Output only. The resource name of the engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
            "type": "A String", # Output only. The type of the engine.
          },
        ],
      },
      "defaultChannelProfile": { # A ChannelProfile configures the agent's behavior for a specific communication channel, such as web UI or telephony. # Optional. The default channel profile used by the app.
        "channelType": "A String", # Optional. The type of the channel profile.
        "disableBargeInControl": True or False, # Optional. Whether to disable user barge-in control in the conversation. - **true**: User interruptions are disabled while the agent is speaking. - **false**: The agent retains automatic control over when the user can interrupt.
        "disableDtmf": True or False, # Optional. Whether to disable DTMF (dual-tone multi-frequency).
        "noiseSuppressionLevel": "A String", # Optional. The noise suppression level of the channel profile. Available values are "low", "moderate", "high", "very_high".
        "personaProperty": { # Represents the persona property of a channel. # Optional. The persona property of the channel profile.
          "persona": "A String", # Optional. The persona of the channel.
        },
        "profileId": "A String", # Optional. The unique identifier of the channel profile.
        "webWidgetConfig": { # Message for configuration for the web widget. # Optional. The configuration for the web widget.
          "modality": "A String", # Optional. The modality of the web widget.
          "securitySettings": { # Security settings for the web widget. # Optional. The security settings of the web widget.
            "allowedOrigins": [ # Optional. The origins that are allowed to host the web widget. An origin is defined by RFC 6454. If empty, all origins are allowed. A maximum of 100 origins is allowed. Example: "https://example.com"
              "A String",
            ],
            "enableOriginCheck": True or False, # Optional. Indicates whether origin check for the web widget is enabled. If `true`, the web widget will check the origin of the website that loads the web widget and only allow it to be loaded in the same origin or any of the allowed origins.
            "enablePublicAccess": True or False, # Optional. Indicates whether public access to the web widget is enabled. If `true`, the web widget will be publicly accessible. If `false`, the web widget must be integrated with your own authentication and authorization system to return valid credentials for accessing the CES agent.
            "enableRecaptcha": True or False, # Optional. Indicates whether reCAPTCHA verification for the web widget is enabled.
          },
          "theme": "A String", # Optional. The theme of the web widget.
          "webWidgetTitle": "A String", # Optional. The title of the web widget.
        },
      },
      "deploymentCount": 42, # Output only. Number of deployments in the app.
      "description": "A String", # Optional. Human-readable description of the app.
      "displayName": "A String", # Required. Display name of the app.
      "etag": "A String", # Output only. Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
      "evaluationMetricsThresholds": { # Threshold settings for metrics in an Evaluation. # Optional. The evaluation thresholds for the app.
        "goldenEvaluationMetricsThresholds": { # Settings for golden evaluations. # Optional. The golden evaluation metrics thresholds.
          "expectationLevelMetricsThresholds": { # Expectation level metrics thresholds. # Optional. The expectation level metrics thresholds.
            "toolInvocationParameterCorrectnessThreshold": 3.14, # Optional. The success threshold for individual tool invocation parameter correctness. Must be a float between 0 and 1. Default is 1.0.
          },
          "turnLevelMetricsThresholds": { # Turn level metrics thresholds. # Optional. The turn level metrics thresholds.
            "overallToolInvocationCorrectnessThreshold": 3.14, # Optional. The success threshold for overall tool invocation correctness. Must be a float between 0 and 1. Default is 1.0.
            "semanticSimilarityChannel": "A String", # Optional. The semantic similarity channel to use for evaluation.
            "semanticSimilaritySuccessThreshold": 42, # Optional. The success threshold for semantic similarity. Must be an integer between 0 and 4. Default is >= 3.
          },
        },
        "goldenHallucinationMetricBehavior": "A String", # Optional. The hallucination metric behavior for golden evaluations.
        "hallucinationMetricBehavior": "A String", # Optional. Deprecated: Use `golden_hallucination_metric_behavior` instead. The hallucination metric behavior is currently used for golden evaluations.
        "scenarioHallucinationMetricBehavior": "A String", # Optional. The hallucination metric behavior for scenario evaluations.
      },
      "globalInstruction": "A String", # Optional. Instructions for all the agents in the app. You can use this instruction to set up a stable identity or personality across all the agents.
      "guardrails": [ # Optional. List of guardrails for the app. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
        "A String",
      ],
      "languageSettings": { # Language settings of the app. # Optional. Language settings of the app.
        "defaultLanguageCode": "A String", # Optional. The default language code of the app.
        "enableMultilingualSupport": True or False, # Optional. Enables multilingual support. If true, agents in the app will use pre-built instructions to improve handling of multilingual input.
        "fallbackAction": "A String", # Optional. The action to perform when an agent receives input in an unsupported language. This can be a predefined action or a custom tool call. Valid values are: - A tool's full resource name, which triggers a specific tool execution. - A predefined system action, such as "escalate" or "exit", which triggers an EndSession signal with corresponding metadata to terminate the conversation.
        "supportedLanguageCodes": [ # Optional. List of languages codes supported by the app, in addition to the `default_language_code`.
          "A String",
        ],
      },
      "locked": True or False, # Optional. Indicates whether the app is locked for changes. If the app is locked, modifications to the app resources will be rejected.
      "loggingSettings": { # Settings to describe the logging behaviors for the app. # Optional. Logging settings of the app.
        "audioRecordingConfig": { # Configuration for how the audio interactions should be recorded. # Optional. Configuration for how audio interactions should be recorded.
          "gcsBucket": "A String", # Optional. The [Cloud Storage](https://cloud.google.com/storage) bucket to store the session audio recordings. The URI must start with "gs://". Please choose a bucket location that meets your data residency requirements. Note: If the Cloud Storage bucket is in a different project from the app, you should grant `storage.objects.create` permission to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "gcsPathPrefix": "A String", # Optional. The Cloud Storage path prefix for audio recordings. This prefix can include the following placeholders, which will be dynamically substituted at serving time: - $project: project ID - $location: app location - $app: app ID - $date: session date in YYYY-MM-DD format - $session: session ID If the path prefix is not specified, the default prefix `$project/$location/$app/$date/$session/` will be used.
        },
        "bigqueryExportSettings": { # Settings to describe the BigQuery export behaviors for the app. # Optional. Settings to describe the BigQuery export behaviors for the app. The conversation data will be exported to BigQuery tables if it is enabled.
          "dataset": "A String", # Optional. The BigQuery dataset to export the data to.
          "enabled": True or False, # Optional. Indicates whether the BigQuery export is enabled.
          "project": "A String", # Optional. The project ID of the BigQuery dataset to export the data to. Note: If the BigQuery dataset is in a different project from the app, you should grant `roles/bigquery.admin` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
        },
        "cloudLoggingSettings": { # Settings to describe the Cloud Logging behaviors for the app. # Optional. Settings to describe the Cloud Logging behaviors for the app.
          "enableCloudLogging": True or False, # Optional. Whether to enable Cloud Logging for the sessions.
        },
        "conversationLoggingSettings": { # Settings to describe the conversation logging behaviors for the app. # Optional. Settings to describe the conversation logging behaviors for the app.
          "disableConversationLogging": True or False, # Optional. Whether to disable conversation logging for the sessions.
        },
        "evaluationAudioRecordingConfig": { # Configuration for how the audio interactions should be recorded. # Optional. Configuration for how audio interactions should be recorded for the evaluation. By default, audio recording is not enabled for evaluation sessions.
          "gcsBucket": "A String", # Optional. The [Cloud Storage](https://cloud.google.com/storage) bucket to store the session audio recordings. The URI must start with "gs://". Please choose a bucket location that meets your data residency requirements. Note: If the Cloud Storage bucket is in a different project from the app, you should grant `storage.objects.create` permission to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "gcsPathPrefix": "A String", # Optional. The Cloud Storage path prefix for audio recordings. This prefix can include the following placeholders, which will be dynamically substituted at serving time: - $project: project ID - $location: app location - $app: app ID - $date: session date in YYYY-MM-DD format - $session: session ID If the path prefix is not specified, the default prefix `$project/$location/$app/$date/$session/` will be used.
        },
        "metricAnalysisSettings": { # Settings to describe the conversation data collection behaviors for LLM analysis metrics pipeline. # Optional. Settings to describe the conversation data collection behaviors for the LLM analysis pipeline for the app.
          "llmMetricsOptedOut": True or False, # Optional. Whether to collect conversation data for llm analysis metrics. If true, conversation data will not be collected for llm analysis metrics; otherwise, conversation data will be collected.
        },
        "redactionConfig": { # Configuration to instruct how sensitive data should be handled. # Optional. Configuration for how sensitive data should be redacted.
          "deidentifyTemplate": "A String", # Optional. [DLP](https://cloud.google.com/dlp/docs) deidentify template name to instruct on how to de-identify content. Format: `projects/{project}/locations/{location}/deidentifyTemplates/{deidentify_template}`
          "enableRedaction": True or False, # Optional. If true, redaction will be applied in various logging scenarios, including conversation history, Cloud Logging and audio recording.
          "inspectTemplate": "A String", # Optional. [DLP](https://cloud.google.com/dlp/docs) inspect template name to configure detection of sensitive data types. Format: `projects/{project}/locations/{location}/inspectTemplates/{inspect_template}`
        },
      },
      "metadata": { # Optional. Metadata about the app. This field can be used to store additional information relevant to the app's details or intended usages.
        "a_key": "A String",
      },
      "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. The default LLM model settings for the app. Individual resources (e.g. agents, guardrails) can override these configurations as needed.
        "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
        "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
      },
      "name": "A String", # Identifier. The unique identifier of the app. Format: `projects/{project}/locations/{location}/apps/{app}`
      "pinned": True or False, # Optional. Whether the app is pinned in the app list.
      "predefinedVariableDeclarations": [ # Output only. The declarations of predefined variables for the app.
        { # Defines the structure and metadata for a variable.
          "description": "A String", # Required. The description of the variable.
          "name": "A String", # Required. The name of the variable. The name must start with a letter or underscore and contain only letters, numbers, or underscores.
          "schema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Required. The schema of the variable.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
      ],
      "rootAgent": "A String", # Optional. The root agent is the entry point of the app. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
      "timeZoneSettings": { # TimeZone settings of the app. # Optional. TimeZone settings of the app.
        "timeZone": "A String", # Optional. The time zone of the app from the [time zone database](https://www.iana.org/time-zones), e.g., America/Los_Angeles, Europe/Paris.
      },
      "toolExecutionMode": "A String", # Optional. The tool execution mode for the app. If not provided, will default to PARALLEL.
      "updateTime": "A String", # Output only. Timestamp when the app was last updated.
      "variableDeclarations": [ # Optional. The declarations of the variables.
        { # Defines the structure and metadata for a variable.
          "description": "A String", # Required. The description of the variable.
          "name": "A String", # Required. The name of the variable. The name must start with a letter or underscore and contain only letters, numbers, or underscores.
          "schema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Required. The schema of the variable.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
      ],
    },
    "examples": [ # Optional. List of examples in the app.
      { # An example represents a sample conversation between the user and the agent(s).
        "createTime": "A String", # Output only. Timestamp when the example was created.
        "description": "A String", # Optional. Human-readable description of the example.
        "displayName": "A String", # Required. Display name of the example.
        "entryAgent": "A String", # Optional. The agent that initially handles the conversation. If not specified, the example represents a conversation that is handled by the root agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "invalid": True or False, # Output only. The example may become invalid if referencing resources are deleted. Invalid examples will not be used as few-shot examples.
        "messages": [ # Optional. The collection of messages that make up the conversation.
          { # A message within a conversation.
            "chunks": [ # Optional. Content of the message as a series of chunks.
              { # A chunk of content within a message.
                "agentTransfer": { # Represents an event indicating the transfer of a conversation to a different agent. # Optional. Agent transfer event.
                  "displayName": "A String", # Output only. Display name of the agent.
                  "targetAgent": "A String", # Required. The agent to which the conversation is being transferred. The agent will handle the conversation from this point forward. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
                },
                "defaultVariables": { # A struct represents default variables at the start of the conversation, keyed by variable names.
                  "a_key": "", # Properties of the object.
                },
                "image": { # Represents an image input or output in the conversation. # Optional. Image data.
                  "data": "A String", # Required. Raw bytes of the image.
                  "mimeType": "A String", # Required. The IANA standard MIME type of the source data. Supported image types includes: * image/png * image/jpeg * image/webp
                },
                "payload": { # Optional. Custom payload data.
                  "a_key": "", # Properties of the object.
                },
                "text": "A String", # Optional. Text data.
                "toolCall": { # Request for the client or the agent to execute the specified tool. # Optional. Tool execution request.
                  "args": { # Optional. The input parameters and values for the tool in JSON object format.
                    "a_key": "", # Properties of the object.
                  },
                  "displayName": "A String", # Output only. Display name of the tool.
                  "id": "A String", # Optional. The unique identifier of the tool call. If populated, the client should return the execution result with the matching ID in ToolResponse.
                  "tool": "A String", # Optional. The name of the tool to execute. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
                  "toolsetTool": { # A tool that is created from a toolset. # Optional. The toolset tool to execute.
                    "toolId": "A String", # Optional. The tool ID to filter the tools to retrieve the schema for.
                    "toolset": "A String", # Required. The resource name of the Toolset from which this tool is derived. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
                  },
                },
                "toolResponse": { # The execution result of a specific tool from the client or the agent. # Optional. Tool execution response.
                  "displayName": "A String", # Output only. Display name of the tool.
                  "id": "A String", # Optional. The matching ID of the tool call the response is for.
                  "response": { # Required. The tool execution result in JSON object format. Use "output" key to specify tool response and "error" key to specify error details (if any). If "output" and "error" keys are not specified, then whole "response" is treated as tool execution result.
                    "a_key": "", # Properties of the object.
                  },
                  "tool": "A String", # Optional. The name of the tool to execute. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
                  "toolsetTool": { # A tool that is created from a toolset. # Optional. The toolset tool that got executed.
                    "toolId": "A String", # Optional. The tool ID to filter the tools to retrieve the schema for.
                    "toolset": "A String", # Required. The resource name of the Toolset from which this tool is derived. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
                  },
                },
                "transcript": "A String", # Optional. Transcript associated with the audio.
                "updatedVariables": { # A struct represents variables that were updated in the conversation, keyed by variable names.
                  "a_key": "", # Properties of the object.
                },
              },
            ],
            "eventTime": "A String", # Optional. Timestamp when the message was sent or received. Should not be used if the message is part of an example.
            "role": "A String", # Optional. The role within the conversation, e.g., user, agent.
          },
        ],
        "name": "A String", # Identifier. The unique identifier of the example. Format: `projects/{project}/locations/{location}/apps/{app}/examples/{example}`
        "updateTime": "A String", # Output only. Timestamp when the example was last updated.
      },
    ],
    "guardrails": [ # Optional. List of guardrails in the app.
      { # Guardrail contains a list of checks and balances to keep the agents safe and secure.
        "action": { # Action that is taken when a certain precondition is met. # Optional. Action to take when the guardrail is triggered.
          "generativeAnswer": { # The agent will immediately respond with a generative answer. # Optional. Respond with a generative answer.
            "prompt": "A String", # Required. The prompt to use for the generative answer.
          },
          "respondImmediately": { # The agent will immediately respond with a preconfigured response. # Optional. Immediately respond with a preconfigured response.
            "responses": [ # Required. The canned responses for the agent to choose from. The response is chosen randomly.
              { # Represents a response from the agent.
                "disabled": True or False, # Optional. Whether the response is disabled. Disabled responses are not used by the agent.
                "text": "A String", # Required. Text for the agent to respond with.
              },
            ],
          },
          "transferAgent": { # The agent will transfer the conversation to a different agent. # Optional. Transfer the conversation to a different agent.
            "agent": "A String", # Required. The name of the agent to transfer the conversation to. The agent must be in the same app as the current agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
          },
        },
        "codeCallback": { # Guardrail that blocks the conversation based on the code callbacks provided. # Optional. Guardrail that potentially blocks the conversation based on the result of the callback execution.
          "afterAgentCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute after the agent is called. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "afterModelCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute after the model is called. If there are multiple calls to the model, the callback will be executed multiple times. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "beforeAgentCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute before the agent is called. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "beforeModelCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute before the model is called. If there are multiple calls to the model, the callback will be executed multiple times. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        },
        "contentFilter": { # Guardrail that bans certain content from being used in the conversation. # Optional. Guardrail that bans certain content from being used in the conversation.
          "bannedContents": [ # Optional. List of banned phrases. Applies to both user inputs and agent responses.
            "A String",
          ],
          "bannedContentsInAgentResponse": [ # Optional. List of banned phrases. Applies only to agent responses.
            "A String",
          ],
          "bannedContentsInUserInput": [ # Optional. List of banned phrases. Applies only to user inputs.
            "A String",
          ],
          "disregardDiacritics": True or False, # Optional. If true, diacritics are ignored during matching.
          "matchType": "A String", # Required. Match type for the content filter.
        },
        "createTime": "A String", # Output only. Timestamp when the guardrail was created.
        "description": "A String", # Optional. Description of the guardrail.
        "displayName": "A String", # Required. Display name of the guardrail.
        "enabled": True or False, # Optional. Whether the guardrail is enabled.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "llmPolicy": { # Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification. # Optional. Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification.
          "allowShortUtterance": True or False, # Optional. By default, the LLM policy check is bypassed for short utterances. Enabling this setting applies the policy check to all utterances, including those that would normally be skipped.
          "failOpen": True or False, # Optional. If an error occurs during the policy check, fail open and do not trigger the guardrail.
          "maxConversationMessages": 42, # Optional. When checking this policy, consider the last 'n' messages in the conversation. When not set a default value of 10 will be used.
          "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Model settings.
            "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
            "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
          },
          "policyScope": "A String", # Required. Defines when to apply the policy check during the conversation. If set to `POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input. When applying the policy to the agent response, additional latency will be introduced before the agent can respond.
          "prompt": "A String", # Required. Policy prompt.
        },
        "llmPromptSecurity": { # Guardrail that blocks the conversation if the input is considered unsafe based on the LLM classification. # Optional. Guardrail that blocks the conversation if the prompt is considered unsafe based on the LLM classification.
          "customPolicy": { # Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification. # Optional. Use a user-defined LlmPolicy to configure the security guardrail.
            "allowShortUtterance": True or False, # Optional. By default, the LLM policy check is bypassed for short utterances. Enabling this setting applies the policy check to all utterances, including those that would normally be skipped.
            "failOpen": True or False, # Optional. If an error occurs during the policy check, fail open and do not trigger the guardrail.
            "maxConversationMessages": 42, # Optional. When checking this policy, consider the last 'n' messages in the conversation. When not set a default value of 10 will be used.
            "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Model settings.
              "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
              "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
            },
            "policyScope": "A String", # Required. Defines when to apply the policy check during the conversation. If set to `POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input. When applying the policy to the agent response, additional latency will be introduced before the agent can respond.
            "prompt": "A String", # Required. Policy prompt.
          },
          "defaultSettings": { # Configuration for default system security settings. # Optional. Use the system's predefined default security settings. To select this mode, include an empty 'default_settings' message in the request. The 'default_prompt_template' field within will be populated by the server in the response.
            "defaultPromptTemplate": "A String", # Output only. The default prompt template used by the system. This field is for display purposes to show the user what prompt the system uses by default. It is OUTPUT_ONLY.
          },
          "failOpen": True or False, # Optional. Determines the behavior when the guardrail encounters an LLM error. - If true: the guardrail is bypassed. - If false (default): the guardrail triggers/blocks. Note: If a custom policy is provided, this field is ignored in favor of the policy's 'fail_open' configuration.
        },
        "modelSafety": { # Model safety settings overrides. When this is set, it will override the default settings and trigger the guardrail if the response is considered unsafe. # Optional. Guardrail that blocks the conversation if the LLM response is considered unsafe based on the model safety settings.
          "safetySettings": [ # Required. List of safety settings.
            { # Safety setting.
              "category": "A String", # Required. The harm category.
              "threshold": "A String", # Required. The harm block threshold.
            },
          ],
        },
        "name": "A String", # Identifier. The unique identifier of the guardrail. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
        "updateTime": "A String", # Output only. Timestamp when the guardrail was last updated.
      },
    ],
    "tools": [ # Optional. List of tools in the app.
      { # A tool represents an action that the CES agent can take to achieve certain goals.
        "clientFunction": { # Represents a client-side function that the agent can invoke. When the tool is chosen by the agent, control is handed off to the client. The client is responsible for executing the function and returning the result as a ToolResponse to continue the interaction with the agent. # Optional. The client function.
          "description": "A String", # Optional. The function description.
          "name": "A String", # Required. The function name.
          "parameters": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the function parameters.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "response": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the function response.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
        "connectorTool": { # A ConnectorTool allows connections to different integrations. See: https://cloud.google.com/integration-connectors/docs/overview. # Optional. The Integration Connector tool.
          "action": { # Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details. # Required. Action for the tool to use.
            "connectionActionId": "A String", # ID of a Connection action for the tool to use.
            "entityOperation": { # Entity CRUD operation specification. # Entity operation configuration for the tool to use.
              "entityId": "A String", # Required. ID of the entity.
              "operation": "A String", # Required. Operation to perform on the entity.
            },
            "inputFields": [ # Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
              "A String",
            ],
            "outputFields": [ # Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
              "A String",
            ],
          },
          "authConfig": { # End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`. # Optional. Configures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. **Note**: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the ConnectorTool creation will fail. See https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override for details.
            "oauth2AuthCodeConfig": { # Oauth 2.0 Authorization Code authentication configuration. # Oauth 2.0 Authorization Code authentication.
              "oauthToken": "A String", # Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
            },
            "oauth2JwtBearerConfig": { # JWT Profile Oauth 2.0 Authorization Grant authentication configuration. # JWT Profile Oauth 2.0 Authorization Grant authentication.
              "clientKey": "A String", # Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
              "issuer": "A String", # Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
              "subject": "A String", # Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
            },
          },
          "connection": "A String", # Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
          "description": "A String", # Optional. The description of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
          "name": "A String", # Optional. The name of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
        },
        "createTime": "A String", # Output only. Timestamp when the tool was created.
        "dataStoreTool": { # Tool to retrieve from Vertex AI Search datastore or engine for grounding. Accepts either a datastore or an engine, but not both. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction. # Optional. The data store tool.
          "boostSpecs": [ # Optional. Boost specification to boost certain documents.
            { # Boost specifications to boost certain documents. For more information, please refer to https://cloud.google.com/generative-ai-app-builder/docs/boosting.
              "dataStores": [ # Required. The Data Store where the boosting configuration is applied. Full resource name of DataStore, such as projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}.
                "A String",
              ],
              "spec": [ # Required. A list of boosting specifications.
                { # Boost specification to boost certain documents.
                  "conditionBoostSpecs": [ # Required. A list of boosting specifications.
                    { # Boost specification for a condition.
                      "boost": 3.14, # Optional. Strength of the boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the suggestions a big promotion. However, it does not necessarily mean that the top result will be a boosted suggestion. Setting to -1.0 gives the suggestions a big demotion. However, other suggestions that are relevant might still be shown. Setting to 0.0 means no boost applied. The boosting condition is ignored.
                      "boostControlSpec": { # Specification for custom ranking based on customer specified attribute value. It provides more controls for customized ranking than the simple (condition, boost) combination above. # Optional. Complex specification for custom ranking based on customer defined attribute value.
                        "attributeType": "A String", # Optional. The attribute type to be used to determine the boost amount. The attribute value can be derived from the field value of the specified field_name. In the case of numerical it is straightforward i.e. attribute_value = numerical_field_value. In the case of freshness however, attribute_value = (time.now() - datetime_field_value).
                        "controlPoints": [ # Optional. The control points used to define the curve. The monotonic function (defined through the interpolation_type above) passes through the control points listed here.
                          { # The control points used to define the curve. The curve defined through these control points can only be monotonically increasing or decreasing(constant values are acceptable).
                            "attributeValue": "A String", # Optional. Can be one of: 1. The numerical field value. 2. The duration spec for freshness: The value must be formatted as an XSD `dayTimeDuration` value (a restricted subset of an ISO 8601 duration value). The pattern for this is: `nDnM]`.
                            "boostAmount": 3.14, # Optional. The value between -1 to 1 by which to boost the score if the attribute_value evaluates to the value specified above.
                          },
                        ],
                        "fieldName": "A String", # Optional. The name of the field whose value will be used to determine the boost amount.
                        "interpolationType": "A String", # Optional. The interpolation type to be applied to connect the control points listed below.
                      },
                      "condition": "A String", # Required. An expression which specifies a boost condition. The syntax is the same as filter expression syntax. Currently, the only supported condition is a list of BCP-47 lang codes. Example: To boost suggestions in languages en or fr: (lang_code: ANY("en", "fr"))
                    },
                  ],
                },
              ],
            },
          ],
          "dataStoreSource": { # Configuration for searching within a specific DataStore. # Optional. Search within a single specific DataStore.
            "dataStore": { # A DataStore resource in Vertex AI Search. # Optional. The data store.
              "connectorConfig": { # The connector config for the data store connection. # Output only. The connector config for the data store connection.
                "collection": "A String", # Resource name of the collection the data store belongs to.
                "collectionDisplayName": "A String", # Display name of the collection the data store belongs to.
                "dataSource": "A String", # The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
              },
              "createTime": "A String", # Output only. Timestamp when the data store was created.
              "displayName": "A String", # Output only. The display name of the data store.
              "documentProcessingMode": "A String", # Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
              "name": "A String", # Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
              "type": "A String", # Output only. The type of the data store. This field is readonly and populated by the server.
            },
            "filter": "A String", # Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
          },
          "description": "A String", # Optional. The tool description.
          "engineSource": { # Configuration for searching within an Engine, potentially targeting specific DataStores. # Optional. Search within an Engine (potentially across multiple DataStores).
            "dataStoreSources": [ # Optional. Use to target specific DataStores within the Engine. If empty, the search applies to all DataStores associated with the Engine.
              { # Configuration for searching within a specific DataStore.
                "dataStore": { # A DataStore resource in Vertex AI Search. # Optional. The data store.
                  "connectorConfig": { # The connector config for the data store connection. # Output only. The connector config for the data store connection.
                    "collection": "A String", # Resource name of the collection the data store belongs to.
                    "collectionDisplayName": "A String", # Display name of the collection the data store belongs to.
                    "dataSource": "A String", # The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
                  },
                  "createTime": "A String", # Output only. Timestamp when the data store was created.
                  "displayName": "A String", # Output only. The display name of the data store.
                  "documentProcessingMode": "A String", # Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
                  "name": "A String", # Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                  "type": "A String", # Output only. The type of the data store. This field is readonly and populated by the server.
                },
                "filter": "A String", # Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
              },
            ],
            "engine": "A String", # Required. Full resource name of the Engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
            "filter": "A String", # Optional. A filter applied to the search across the Engine. Not relevant and not used if 'data_store_sources' is provided. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
          },
          "filterParameterBehavior": "A String", # Optional. The filter parameter behavior.
          "modalityConfigs": [ # Optional. The modality configs for the data store.
            { # If specified, will apply the given configuration for the specified modality.
              "groundingConfig": { # Grounding configuration. # Optional. The grounding configuration.
                "disabled": True or False, # Optional. Whether grounding is disabled.
                "groundingLevel": 3.14, # Optional. The groundedness threshold of the answer based on the retrieved sources. The value has a configurable range of [1, 5]. The level is used to threshold the groundedness of the answer, meaning that all responses with a groundedness score below the threshold will fall back to returning relevant snippets only. For example, a level of 3 means that the groundedness score must be 3 or higher for the response to be returned.
              },
              "modalityType": "A String", # Required. The modality type.
              "rewriterConfig": { # Rewriter configuration. # Optional. The rewriter config.
                "disabled": True or False, # Optional. Whether the rewriter is disabled.
                "modelSettings": { # Model settings contains various configurations for the LLM model. # Required. Configurations for the LLM model.
                  "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                  "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                },
                "prompt": "A String", # Optional. The prompt definition. If not set, default prompt will be used.
              },
              "summarizationConfig": { # Summarization configuration. # Optional. The summarization config.
                "disabled": True or False, # Optional. Whether summarization is disabled.
                "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Configurations for the LLM model.
                  "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                  "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                },
                "prompt": "A String", # Optional. The prompt definition. If not set, default prompt will be used.
              },
            },
          ],
          "name": "A String", # Required. The data store tool name.
        },
        "displayName": "A String", # Output only. The display name of the tool, derived based on the tool's type. For example, display name of a ClientFunction is derived from its `name` property.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "executionType": "A String", # Optional. The execution type of the tool.
        "fileSearchTool": { # The file search tool allows the agent to search across the files uploaded by the app/agent developer. It has presets to give relatively good quality search over the uploaded files and summarization of the retrieved results. # Optional. The file search tool.
          "corpusType": "A String", # Optional. The type of the corpus. Default is FULLY_MANAGED.
          "description": "A String", # Optional. The tool description.
          "fileCorpus": "A String", # Optional. The corpus where files are stored. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
          "name": "A String", # Required. The tool name.
        },
        "generatedSummary": "A String", # Output only. If the tool is generated by the LLM assistant, this field contains a descriptive summary of the generation.
        "googleSearchTool": { # Represents a tool to perform Google web searches for grounding. See https://cloud.google.com/customer-engagement-ai/conversational-agents/ps/tool#google-search. # Optional. The google search tool.
          "contextUrls": [ # Optional. Content will be fetched directly from these URLs for context and grounding. Example: "https://example.com/path.html". A maximum of 20 URLs are allowed.
            "A String",
          ],
          "description": "A String", # Optional. Description of the tool's purpose.
          "excludeDomains": [ # Optional. List of domains to be excluded from the search results. Example: "example.com". A maximum of 2000 domains can be excluded.
            "A String",
          ],
          "name": "A String", # Required. The name of the tool.
          "preferredDomains": [ # Optional. Specifies domains to restrict search results to. Example: "example.com", "another.site". A maximum of 20 domains can be specified.
            "A String",
          ],
          "promptConfig": { # Prompt settings used by the model when processing or summarizing the google search results. # Optional. Prompt instructions passed to planner on how the search results should be processed for text and voice.
            "textPrompt": "A String", # Optional. Defines the prompt used for the system instructions when interacting with the agent in chat conversations. If not set, default prompt will be used.
            "voicePrompt": "A String", # Optional. Defines the prompt used for the system instructions when interacting with the agent in voice conversations. If not set, default prompt will be used.
          },
        },
        "mcpTool": { # An MCP tool. See https://modelcontextprotocol.io/specification/2025-06-18/server/tools for more details. # Optional. The MCP tool. An MCP tool cannot be created or updated directly and is managed by the MCP toolset.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required to execute the tool against the MCP server. For bearer token authentication, the token applies only to tool execution, not to listing tools. This requires that tools can be listed without authentication.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "description": "A String", # Optional. The description of the MCP tool.
          "inputSchema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the input arguments of the MCP tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "name": "A String", # Required. The name of the MCP tool.
          "outputSchema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the output arguments of the MCP tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "serverAddress": "A String", # Required. The server address of the MCP server, e.g., "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. This is the same as the server_address in the McpToolset. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration for VPC-SC, used to resolve service names within a perimeter.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client should trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
        },
        "name": "A String", # Identifier. The unique identifier of the tool. Format: - `projects/{project}/locations/{location}/apps/{app}/tools/{tool}` for ## standalone tools. `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}/tools/{tool}` for tools retrieved from a toolset. These tools are dynamic and output-only, they cannot be referenced directly where a tool is expected.
        "openApiTool": { # A remote API tool defined by an OpenAPI schema. # Optional. The open API tool.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required by the API.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "description": "A String", # Optional. The description of the tool. If not provided, the description of the tool will be derived from the OpenAPI schema, from `operation.description` or `operation.summary`.
          "ignoreUnknownFields": True or False, # Optional. If true, the agent will ignore unknown fields in the API response.
          "name": "A String", # Optional. The name of the tool. If not provided, the name of the tool will be derived from the OpenAPI schema, from `operation.operationId`.
          "openApiSchema": "A String", # Required. The OpenAPI schema in JSON or YAML format.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client will trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
          "url": "A String", # Optional. The server URL of the Open API schema. This field is only set in tools in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
        },
        "pythonFunction": { # A Python function tool. # Optional. The python function tool.
          "description": "A String", # Output only. The description of the Python function, parsed from the python code's docstring.
          "name": "A String", # Optional. The name of the Python function to execute. Must match a Python function name defined in the python code. Case sensitive. If the name is not provided, the first function defined in the python code will be used.
          "pythonCode": "A String", # Optional. The Python code to execute for the tool.
        },
        "systemTool": { # Pre-defined system tool. # Optional. The system tool.
          "description": "A String", # Output only. The description of the system tool.
          "name": "A String", # Required. The name of the system tool.
        },
        "toolFakeConfig": { # Configuration for tool behavior in fake mode. # Optional. Configuration for tool behavior in fake mode.
          "codeBlock": { # A code block to be executed instead of a real tool call. # Optional. Code block which will be executed instead of a real tool call.
            "pythonCode": "A String", # Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
          },
          "enableFakeMode": True or False, # Optional. Whether the tool is using fake mode.
        },
        "updateTime": "A String", # Output only. Timestamp when the tool was last updated.
        "widgetTool": { # Represents a widget tool that the agent can invoke. When the tool is chosen by the agent, agent will return the widget to the client. The client is responsible for processing the widget and generating the next user query to continue the interaction with the agent. # Optional. The widget tool.
          "description": "A String", # Optional. The description of the widget tool.
          "name": "A String", # Required. The display name of the widget tool.
          "parameters": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The input parameters of the widget tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "widgetType": "A String", # Optional. The type of the widget tool. If not specified, the default type will be CUSTOMIZED.
        },
      },
    ],
    "toolsets": [ # Optional. List of toolsets in the app.
      { # A toolset represents a group of dynamically managed tools that can be used by the agent.
        "connectorToolset": { # A toolset that generates tools from an Integration Connectors Connection. # Optional. A toolset that generates tools from an Integration Connectors Connection.
          "authConfig": { # End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`. # Optional. Configures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. **Note**: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the Toolset creation will fail. See: https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override
            "oauth2AuthCodeConfig": { # Oauth 2.0 Authorization Code authentication configuration. # Oauth 2.0 Authorization Code authentication.
              "oauthToken": "A String", # Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
            },
            "oauth2JwtBearerConfig": { # JWT Profile Oauth 2.0 Authorization Grant authentication configuration. # JWT Profile Oauth 2.0 Authorization Grant authentication.
              "clientKey": "A String", # Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
              "issuer": "A String", # Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
              "subject": "A String", # Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
            },
          },
          "connection": "A String", # Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
          "connectorActions": [ # Required. The list of connector actions/entity operations to generate tools for.
            { # Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details.
              "connectionActionId": "A String", # ID of a Connection action for the tool to use.
              "entityOperation": { # Entity CRUD operation specification. # Entity operation configuration for the tool to use.
                "entityId": "A String", # Required. ID of the entity.
                "operation": "A String", # Required. Operation to perform on the entity.
              },
              "inputFields": [ # Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
                "A String",
              ],
              "outputFields": [ # Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
                "A String",
              ],
            },
          ],
        },
        "createTime": "A String", # Output only. Timestamp when the toolset was created.
        "description": "A String", # Optional. The description of the toolset.
        "displayName": "A String", # Optional. The display name of the toolset. Must be unique within the same app.
        "etag": "A String", # ETag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "executionType": "A String", # Optional. The execution type of the tools in the toolset.
        "mcpToolset": { # A toolset that contains a list of tools that are offered by the MCP server. # Optional. A toolset that contains a list of tools that are offered by the MCP server.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required to access tools and execute a tool against the MCP server. For bearer token authentication, the token applies only to tool execution, not to listing tools. This requires that tools can be listed without authentication.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "serverAddress": "A String", # Required. The address of the MCP server, for example, "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration for VPC-SC, used to resolve service names within a perimeter.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client should trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
        },
        "name": "A String", # Identifier. The unique identifier of the toolset. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
        "openApiToolset": { # A toolset that contains a list of tools that are defined by an OpenAPI schema. # Optional. A toolset that contains a list of tools that are defined by an OpenAPI schema.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required by the API.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "ignoreUnknownFields": True or False, # Optional. If true, the agent will ignore unknown fields in the API response for all operations defined in the OpenAPI schema.
          "openApiSchema": "A String", # Required. The OpenAPI schema of the toolset.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
          "url": "A String", # Optional. The server URL of the Open API schema. This field is only set in toolsets in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
        },
        "toolFakeConfig": { # Configuration for tool behavior in fake mode. # Optional. Configuration for tools behavior in fake mode.
          "codeBlock": { # A code block to be executed instead of a real tool call. # Optional. Code block which will be executed instead of a real tool call.
            "pythonCode": "A String", # Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
          },
          "enableFakeMode": True or False, # Optional. Whether the tool is using fake mode.
        },
        "updateTime": "A String", # Output only. Timestamp when the toolset was last updated.
      },
    ],
  },
}

  appVersionId: string, Optional. The ID to use for the app version, which will become the final component of the app version's resource name. If not provided, a unique ID will be automatically assigned for the app version.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # In Customer Engagement Suite (CES), an app version is a snapshot of the app at a specific point in time. It is immutable and cannot be modified once created.
  "createTime": "A String", # Output only. Timestamp when the app version was created.
  "creator": "A String", # Output only. Email of the user who created the app version.
  "description": "A String", # Optional. The description of the app version.
  "displayName": "A String", # Optional. The display name of the app version.
  "etag": "A String", # Output only. Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
  "name": "A String", # Identifier. The unique identifier of the app version. Format: `projects/{project}/locations/{location}/apps/{app}/versions/{version}`
  "snapshot": { # A snapshot of the app. # Output only. The snapshot of the app when the version is created.
    "agents": [ # Optional. List of agents in the app.
      { # An agent acts as the fundamental building block that provides instructions to the Large Language Model (LLM) for executing specific tasks.
        "afterAgentCallbacks": [ # Optional. The callbacks to execute after the agent is called. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "afterModelCallbacks": [ # Optional. The callbacks to execute after the model is called. If there are multiple calls to the model, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "afterToolCallbacks": [ # Optional. The callbacks to execute after the tool is invoked. If there are multiple tool invocations, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeAgentCallbacks": [ # Optional. The callbacks to execute before the agent is called. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeModelCallbacks": [ # Optional. The callbacks to execute before the model is called. If there are multiple calls to the model, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeToolCallbacks": [ # Optional. The callbacks to execute before the tool is invoked. If there are multiple tool invocations, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "childAgents": [ # Optional. List of child agents in the agent tree. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
          "A String",
        ],
        "createTime": "A String", # Output only. Timestamp when the agent was created.
        "description": "A String", # Optional. Human-readable description of the agent.
        "displayName": "A String", # Required. Display name of the agent.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "generatedSummary": "A String", # Output only. If the agent is generated by the LLM assistant, this field contains a descriptive summary of the generation.
        "guardrails": [ # Optional. List of guardrails for the agent. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
          "A String",
        ],
        "instruction": "A String", # Optional. Instructions for the LLM model to guide the agent's behavior.
        "llmAgent": { # Default agent type. The agent uses instructions and callbacks specified in the agent to perform the task using a large language model. # Optional. The default agent type.
        },
        "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Configurations for the LLM model.
          "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
          "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
        },
        "name": "A String", # Identifier. The unique identifier of the agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
        "remoteDialogflowAgent": { # The agent which will transfer execution to a remote [Dialogflow CX](https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent) agent. The Dialogflow agent will process subsequent user queries until the session ends or flow ends, and the control is transferred back to the parent CES agent. # Optional. The remote [Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents) agent to be used for the agent execution. If this field is set, all other agent level properties will be ignored. Note: If the Dialogflow agent is in a different project from the app, you should grant `roles/dialogflow.client` to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "agent": "A String", # Required. The [Dialogflow](https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent) agent resource name. Format: `projects/{project}/locations/{location}/agents/{agent}`
          "environmentId": "A String", # Optional. The environment ID of the Dialogflow agent to be used for the agent execution. If not specified, the draft environment will be used.
          "flowId": "A String", # Optional. The flow ID of the flow in the Dialogflow agent.
          "inputVariableMapping": { # Optional. The mapping of the app variables names to the Dialogflow session parameters names to be sent to the Dialogflow agent as input.
            "a_key": "A String",
          },
          "outputVariableMapping": { # Optional. The mapping of the Dialogflow session parameters names to the app variables names to be sent back to the CES agent after the Dialogflow agent execution ends.
            "a_key": "A String",
          },
          "respectResponseInterruptionSettings": True or False, # Optional. Indicates whether to respect the message-level interruption settings configured in the Dialogflow agent. * If false: all response messages from the Dialogflow agent follow the app-level barge-in settings. * If true: only response messages with [`allow_playback_interruption`](https://docs.cloud.google.com/dialogflow/cx/docs/reference/rpc/google.cloud.dialogflow.cx.v3#text) set to true will be interruptable, all other messages follow the app-level barge-in settings.
        },
        "tools": [ # Optional. List of available tools for the agent. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
          "A String",
        ],
        "toolsets": [ # Optional. List of toolsets for the agent.
          { # A toolset with a selection of its tools.
            "toolIds": [ # Optional. The tools IDs to filter the toolset.
              "A String",
            ],
            "toolset": "A String", # Required. The resource name of the toolset. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
          },
        ],
        "transferRules": [ # Optional. Agent transfer rules. If multiple rules match, the first one in the list will be used.
          { # Rule for transferring to a specific agent.
            "childAgent": "A String", # Required. The resource name of the child agent the rule applies to. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
            "deterministicTransfer": { # Deterministic transfer rule. When the condition evaluates to true, the transfer occurs. # Optional. A rule that immediately transfers to the target agent when the condition is met.
              "expressionCondition": { # Expression condition based on session state. # Optional. A rule that evaluates a session state condition. If the condition evaluates to true, the transfer occurs.
                "expression": "A String", # Required. The string representation of cloud.api.Expression condition.
              },
              "pythonCodeCondition": { # Python code block to evaluate the condition. # Optional. A rule that uses Python code block to evaluate the conditions. If the condition evaluates to true, the transfer occurs.
                "pythonCode": "A String", # Required. The python code to execute.
              },
            },
            "direction": "A String", # Required. The direction of the transfer.
            "disablePlannerTransfer": { # A rule that prevents the planner from transferring to the target agent. # Optional. Rule that prevents the planner from transferring to the target agent.
              "expressionCondition": { # Expression condition based on session state. # Required. If the condition evaluates to true, planner will not be allowed to transfer to the target agent.
                "expression": "A String", # Required. The string representation of cloud.api.Expression condition.
              },
            },
          },
        ],
        "updateTime": "A String", # Output only. Timestamp when the agent was last updated.
      },
    ],
    "app": { # An app serves as a top-level container for a group of agents, including the root agent and its sub-agents, along with their associated configurations. These agents work together to achieve specific goals within the app's context. # Optional. The basic settings for the app.
      "audioProcessingConfig": { # Configuration for how the input and output audio should be processed and delivered. # Optional. Audio processing configuration of the app.
        "ambientSoundConfig": { # Configuration for the ambient sound to be played with the synthesized agent response, to enhance the naturalness of the conversation. # Optional. Configuration for the ambient sound to be played with the synthesized agent response, to enhance the naturalness of the conversation.
          "gcsUri": "A String", # Optional. Ambient noise as a mono-channel, 16kHz WAV file stored in [Cloud Storage](https://cloud.google.com/storage). Note: Please make sure the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com` has `storage.objects.get` permission to the Cloud Storage object.
          "prebuiltAmbientNoise": "A String", # Optional. Deprecated: `prebuilt_ambient_noise` is deprecated in favor of `prebuilt_ambient_sound`.
          "prebuiltAmbientSound": "A String", # Optional. Name of the prebuilt ambient sound. Valid values are: - "coffee_shop" - "keyboard" - "keypad" - "hum" - "office_1" - "office_2" - "office_3" - "room_1" - "room_2" - "room_3" - "room_4" - "room_5" - "air_conditioner"
          "volumeGainDb": 3.14, # Optional. Volume gain (in dB) of the normal native volume supported by ambient noise, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that.
        },
        "bargeInConfig": { # Configuration for how the user barge-in activities should be handled. # Optional. Configures the agent behavior for the user barge-in activities.
          "bargeInAwareness": True or False, # Optional. If enabled, the agent will adapt its next response based on the assumption that the user hasn't heard the full preceding agent message. This should not be used in scenarios where agent responses are displayed visually.
          "disableBargeIn": True or False, # Optional. Disables user barge-in while the agent is speaking. If true, user input during agent response playback will be ignored. Deprecated: `disable_barge_in` is deprecated in favor of `disable_barge_in_control` in ChannelProfile.
        },
        "inactivityTimeout": "A String", # Optional. The duration of user inactivity (no speech or interaction) before the agent prompts the user for reengagement. If not set, the agent will not prompt the user for reengagement.
        "synthesizeSpeechConfigs": { # Optional. Configuration of how the agent response should be synthesized, mapping from the language code to SynthesizeSpeechConfig. If the configuration for the specified language code is not found, the configuration for the root language code will be used. For example, if the map contains "en-us" and "en", and the specified language code is "en-gb", then "en" configuration will be used. Note: Language code is case-insensitive.
          "a_key": { # Configuration for how the agent response should be synthesized.
            "speakingRate": 3.14, # Optional. The speaking rate/speed in the range [0.25, 2.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. Values outside of the range [0.25, 2.0] will return an error.
            "voice": "A String", # Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices) from Cloud Text-to-Speech.
          },
        },
      },
      "clientCertificateSettings": { # Settings for custom client certificates. # Optional. The default client certificate settings for the app.
        "passphrase": "A String", # Optional. The name of the SecretManager secret version resource storing the passphrase to decrypt the private key. Should be left unset if the private key is not encrypted. Format: `projects/{project}/secrets/{secret}/versions/{version}`
        "privateKey": "A String", # Required. The name of the SecretManager secret version resource storing the private key encoded in PEM format. Format: `projects/{project}/secrets/{secret}/versions/{version}`
        "tlsCertificate": "A String", # Required. The TLS certificate encoded in PEM format. This string must include the begin header and end footer lines.
      },
      "createTime": "A String", # Output only. Timestamp when the app was created.
      "dataStoreSettings": { # Data store related settings for the app. # Optional. The data store settings for the app.
        "engines": [ # Output only. The engines for the app.
          { # An engine to which the data stores are connected. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction.
            "name": "A String", # Output only. The resource name of the engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
            "type": "A String", # Output only. The type of the engine.
          },
        ],
      },
      "defaultChannelProfile": { # A ChannelProfile configures the agent's behavior for a specific communication channel, such as web UI or telephony. # Optional. The default channel profile used by the app.
        "channelType": "A String", # Optional. The type of the channel profile.
        "disableBargeInControl": True or False, # Optional. Whether to disable user barge-in control in the conversation. - **true**: User interruptions are disabled while the agent is speaking. - **false**: The agent retains automatic control over when the user can interrupt.
        "disableDtmf": True or False, # Optional. Whether to disable DTMF (dual-tone multi-frequency).
        "noiseSuppressionLevel": "A String", # Optional. The noise suppression level of the channel profile. Available values are "low", "moderate", "high", "very_high".
        "personaProperty": { # Represents the persona property of a channel. # Optional. The persona property of the channel profile.
          "persona": "A String", # Optional. The persona of the channel.
        },
        "profileId": "A String", # Optional. The unique identifier of the channel profile.
        "webWidgetConfig": { # Message for configuration for the web widget. # Optional. The configuration for the web widget.
          "modality": "A String", # Optional. The modality of the web widget.
          "securitySettings": { # Security settings for the web widget. # Optional. The security settings of the web widget.
            "allowedOrigins": [ # Optional. The origins that are allowed to host the web widget. An origin is defined by RFC 6454. If empty, all origins are allowed. A maximum of 100 origins is allowed. Example: "https://example.com"
              "A String",
            ],
            "enableOriginCheck": True or False, # Optional. Indicates whether origin check for the web widget is enabled. If `true`, the web widget will check the origin of the website that loads the web widget and only allow it to be loaded in the same origin or any of the allowed origins.
            "enablePublicAccess": True or False, # Optional. Indicates whether public access to the web widget is enabled. If `true`, the web widget will be publicly accessible. If `false`, the web widget must be integrated with your own authentication and authorization system to return valid credentials for accessing the CES agent.
            "enableRecaptcha": True or False, # Optional. Indicates whether reCAPTCHA verification for the web widget is enabled.
          },
          "theme": "A String", # Optional. The theme of the web widget.
          "webWidgetTitle": "A String", # Optional. The title of the web widget.
        },
      },
      "deploymentCount": 42, # Output only. Number of deployments in the app.
      "description": "A String", # Optional. Human-readable description of the app.
      "displayName": "A String", # Required. Display name of the app.
      "etag": "A String", # Output only. Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
      "evaluationMetricsThresholds": { # Threshold settings for metrics in an Evaluation. # Optional. The evaluation thresholds for the app.
        "goldenEvaluationMetricsThresholds": { # Settings for golden evaluations. # Optional. The golden evaluation metrics thresholds.
          "expectationLevelMetricsThresholds": { # Expectation level metrics thresholds. # Optional. The expectation level metrics thresholds.
            "toolInvocationParameterCorrectnessThreshold": 3.14, # Optional. The success threshold for individual tool invocation parameter correctness. Must be a float between 0 and 1. Default is 1.0.
          },
          "turnLevelMetricsThresholds": { # Turn level metrics thresholds. # Optional. The turn level metrics thresholds.
            "overallToolInvocationCorrectnessThreshold": 3.14, # Optional. The success threshold for overall tool invocation correctness. Must be a float between 0 and 1. Default is 1.0.
            "semanticSimilarityChannel": "A String", # Optional. The semantic similarity channel to use for evaluation.
            "semanticSimilaritySuccessThreshold": 42, # Optional. The success threshold for semantic similarity. Must be an integer between 0 and 4. Default is >= 3.
          },
        },
        "goldenHallucinationMetricBehavior": "A String", # Optional. The hallucination metric behavior for golden evaluations.
        "hallucinationMetricBehavior": "A String", # Optional. Deprecated: Use `golden_hallucination_metric_behavior` instead. The hallucination metric behavior is currently used for golden evaluations.
        "scenarioHallucinationMetricBehavior": "A String", # Optional. The hallucination metric behavior for scenario evaluations.
      },
      "globalInstruction": "A String", # Optional. Instructions for all the agents in the app. You can use this instruction to set up a stable identity or personality across all the agents.
      "guardrails": [ # Optional. List of guardrails for the app. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
        "A String",
      ],
      "languageSettings": { # Language settings of the app. # Optional. Language settings of the app.
        "defaultLanguageCode": "A String", # Optional. The default language code of the app.
        "enableMultilingualSupport": True or False, # Optional. Enables multilingual support. If true, agents in the app will use pre-built instructions to improve handling of multilingual input.
        "fallbackAction": "A String", # Optional. The action to perform when an agent receives input in an unsupported language. This can be a predefined action or a custom tool call. Valid values are: - A tool's full resource name, which triggers a specific tool execution. - A predefined system action, such as "escalate" or "exit", which triggers an EndSession signal with corresponding metadata to terminate the conversation.
        "supportedLanguageCodes": [ # Optional. List of languages codes supported by the app, in addition to the `default_language_code`.
          "A String",
        ],
      },
      "locked": True or False, # Optional. Indicates whether the app is locked for changes. If the app is locked, modifications to the app resources will be rejected.
      "loggingSettings": { # Settings to describe the logging behaviors for the app. # Optional. Logging settings of the app.
        "audioRecordingConfig": { # Configuration for how the audio interactions should be recorded. # Optional. Configuration for how audio interactions should be recorded.
          "gcsBucket": "A String", # Optional. The [Cloud Storage](https://cloud.google.com/storage) bucket to store the session audio recordings. The URI must start with "gs://". Please choose a bucket location that meets your data residency requirements. Note: If the Cloud Storage bucket is in a different project from the app, you should grant `storage.objects.create` permission to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "gcsPathPrefix": "A String", # Optional. The Cloud Storage path prefix for audio recordings. This prefix can include the following placeholders, which will be dynamically substituted at serving time: - $project: project ID - $location: app location - $app: app ID - $date: session date in YYYY-MM-DD format - $session: session ID If the path prefix is not specified, the default prefix `$project/$location/$app/$date/$session/` will be used.
        },
        "bigqueryExportSettings": { # Settings to describe the BigQuery export behaviors for the app. # Optional. Settings to describe the BigQuery export behaviors for the app. The conversation data will be exported to BigQuery tables if it is enabled.
          "dataset": "A String", # Optional. The BigQuery dataset to export the data to.
          "enabled": True or False, # Optional. Indicates whether the BigQuery export is enabled.
          "project": "A String", # Optional. The project ID of the BigQuery dataset to export the data to. Note: If the BigQuery dataset is in a different project from the app, you should grant `roles/bigquery.admin` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
        },
        "cloudLoggingSettings": { # Settings to describe the Cloud Logging behaviors for the app. # Optional. Settings to describe the Cloud Logging behaviors for the app.
          "enableCloudLogging": True or False, # Optional. Whether to enable Cloud Logging for the sessions.
        },
        "conversationLoggingSettings": { # Settings to describe the conversation logging behaviors for the app. # Optional. Settings to describe the conversation logging behaviors for the app.
          "disableConversationLogging": True or False, # Optional. Whether to disable conversation logging for the sessions.
        },
        "evaluationAudioRecordingConfig": { # Configuration for how the audio interactions should be recorded. # Optional. Configuration for how audio interactions should be recorded for the evaluation. By default, audio recording is not enabled for evaluation sessions.
          "gcsBucket": "A String", # Optional. The [Cloud Storage](https://cloud.google.com/storage) bucket to store the session audio recordings. The URI must start with "gs://". Please choose a bucket location that meets your data residency requirements. Note: If the Cloud Storage bucket is in a different project from the app, you should grant `storage.objects.create` permission to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "gcsPathPrefix": "A String", # Optional. The Cloud Storage path prefix for audio recordings. This prefix can include the following placeholders, which will be dynamically substituted at serving time: - $project: project ID - $location: app location - $app: app ID - $date: session date in YYYY-MM-DD format - $session: session ID If the path prefix is not specified, the default prefix `$project/$location/$app/$date/$session/` will be used.
        },
        "metricAnalysisSettings": { # Settings to describe the conversation data collection behaviors for LLM analysis metrics pipeline. # Optional. Settings to describe the conversation data collection behaviors for the LLM analysis pipeline for the app.
          "llmMetricsOptedOut": True or False, # Optional. Whether to collect conversation data for llm analysis metrics. If true, conversation data will not be collected for llm analysis metrics; otherwise, conversation data will be collected.
        },
        "redactionConfig": { # Configuration to instruct how sensitive data should be handled. # Optional. Configuration for how sensitive data should be redacted.
          "deidentifyTemplate": "A String", # Optional. [DLP](https://cloud.google.com/dlp/docs) deidentify template name to instruct on how to de-identify content. Format: `projects/{project}/locations/{location}/deidentifyTemplates/{deidentify_template}`
          "enableRedaction": True or False, # Optional. If true, redaction will be applied in various logging scenarios, including conversation history, Cloud Logging and audio recording.
          "inspectTemplate": "A String", # Optional. [DLP](https://cloud.google.com/dlp/docs) inspect template name to configure detection of sensitive data types. Format: `projects/{project}/locations/{location}/inspectTemplates/{inspect_template}`
        },
      },
      "metadata": { # Optional. Metadata about the app. This field can be used to store additional information relevant to the app's details or intended usages.
        "a_key": "A String",
      },
      "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. The default LLM model settings for the app. Individual resources (e.g. agents, guardrails) can override these configurations as needed.
        "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
        "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
      },
      "name": "A String", # Identifier. The unique identifier of the app. Format: `projects/{project}/locations/{location}/apps/{app}`
      "pinned": True or False, # Optional. Whether the app is pinned in the app list.
      "predefinedVariableDeclarations": [ # Output only. The declarations of predefined variables for the app.
        { # Defines the structure and metadata for a variable.
          "description": "A String", # Required. The description of the variable.
          "name": "A String", # Required. The name of the variable. The name must start with a letter or underscore and contain only letters, numbers, or underscores.
          "schema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Required. The schema of the variable.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
      ],
      "rootAgent": "A String", # Optional. The root agent is the entry point of the app. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
      "timeZoneSettings": { # TimeZone settings of the app. # Optional. TimeZone settings of the app.
        "timeZone": "A String", # Optional. The time zone of the app from the [time zone database](https://www.iana.org/time-zones), e.g., America/Los_Angeles, Europe/Paris.
      },
      "toolExecutionMode": "A String", # Optional. The tool execution mode for the app. If not provided, will default to PARALLEL.
      "updateTime": "A String", # Output only. Timestamp when the app was last updated.
      "variableDeclarations": [ # Optional. The declarations of the variables.
        { # Defines the structure and metadata for a variable.
          "description": "A String", # Required. The description of the variable.
          "name": "A String", # Required. The name of the variable. The name must start with a letter or underscore and contain only letters, numbers, or underscores.
          "schema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Required. The schema of the variable.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
      ],
    },
    "examples": [ # Optional. List of examples in the app.
      { # An example represents a sample conversation between the user and the agent(s).
        "createTime": "A String", # Output only. Timestamp when the example was created.
        "description": "A String", # Optional. Human-readable description of the example.
        "displayName": "A String", # Required. Display name of the example.
        "entryAgent": "A String", # Optional. The agent that initially handles the conversation. If not specified, the example represents a conversation that is handled by the root agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "invalid": True or False, # Output only. The example may become invalid if referencing resources are deleted. Invalid examples will not be used as few-shot examples.
        "messages": [ # Optional. The collection of messages that make up the conversation.
          { # A message within a conversation.
            "chunks": [ # Optional. Content of the message as a series of chunks.
              { # A chunk of content within a message.
                "agentTransfer": { # Represents an event indicating the transfer of a conversation to a different agent. # Optional. Agent transfer event.
                  "displayName": "A String", # Output only. Display name of the agent.
                  "targetAgent": "A String", # Required. The agent to which the conversation is being transferred. The agent will handle the conversation from this point forward. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
                },
                "defaultVariables": { # A struct represents default variables at the start of the conversation, keyed by variable names.
                  "a_key": "", # Properties of the object.
                },
                "image": { # Represents an image input or output in the conversation. # Optional. Image data.
                  "data": "A String", # Required. Raw bytes of the image.
                  "mimeType": "A String", # Required. The IANA standard MIME type of the source data. Supported image types includes: * image/png * image/jpeg * image/webp
                },
                "payload": { # Optional. Custom payload data.
                  "a_key": "", # Properties of the object.
                },
                "text": "A String", # Optional. Text data.
                "toolCall": { # Request for the client or the agent to execute the specified tool. # Optional. Tool execution request.
                  "args": { # Optional. The input parameters and values for the tool in JSON object format.
                    "a_key": "", # Properties of the object.
                  },
                  "displayName": "A String", # Output only. Display name of the tool.
                  "id": "A String", # Optional. The unique identifier of the tool call. If populated, the client should return the execution result with the matching ID in ToolResponse.
                  "tool": "A String", # Optional. The name of the tool to execute. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
                  "toolsetTool": { # A tool that is created from a toolset. # Optional. The toolset tool to execute.
                    "toolId": "A String", # Optional. The tool ID to filter the tools to retrieve the schema for.
                    "toolset": "A String", # Required. The resource name of the Toolset from which this tool is derived. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
                  },
                },
                "toolResponse": { # The execution result of a specific tool from the client or the agent. # Optional. Tool execution response.
                  "displayName": "A String", # Output only. Display name of the tool.
                  "id": "A String", # Optional. The matching ID of the tool call the response is for.
                  "response": { # Required. The tool execution result in JSON object format. Use "output" key to specify tool response and "error" key to specify error details (if any). If "output" and "error" keys are not specified, then whole "response" is treated as tool execution result.
                    "a_key": "", # Properties of the object.
                  },
                  "tool": "A String", # Optional. The name of the tool to execute. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
                  "toolsetTool": { # A tool that is created from a toolset. # Optional. The toolset tool that got executed.
                    "toolId": "A String", # Optional. The tool ID to filter the tools to retrieve the schema for.
                    "toolset": "A String", # Required. The resource name of the Toolset from which this tool is derived. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
                  },
                },
                "transcript": "A String", # Optional. Transcript associated with the audio.
                "updatedVariables": { # A struct represents variables that were updated in the conversation, keyed by variable names.
                  "a_key": "", # Properties of the object.
                },
              },
            ],
            "eventTime": "A String", # Optional. Timestamp when the message was sent or received. Should not be used if the message is part of an example.
            "role": "A String", # Optional. The role within the conversation, e.g., user, agent.
          },
        ],
        "name": "A String", # Identifier. The unique identifier of the example. Format: `projects/{project}/locations/{location}/apps/{app}/examples/{example}`
        "updateTime": "A String", # Output only. Timestamp when the example was last updated.
      },
    ],
    "guardrails": [ # Optional. List of guardrails in the app.
      { # Guardrail contains a list of checks and balances to keep the agents safe and secure.
        "action": { # Action that is taken when a certain precondition is met. # Optional. Action to take when the guardrail is triggered.
          "generativeAnswer": { # The agent will immediately respond with a generative answer. # Optional. Respond with a generative answer.
            "prompt": "A String", # Required. The prompt to use for the generative answer.
          },
          "respondImmediately": { # The agent will immediately respond with a preconfigured response. # Optional. Immediately respond with a preconfigured response.
            "responses": [ # Required. The canned responses for the agent to choose from. The response is chosen randomly.
              { # Represents a response from the agent.
                "disabled": True or False, # Optional. Whether the response is disabled. Disabled responses are not used by the agent.
                "text": "A String", # Required. Text for the agent to respond with.
              },
            ],
          },
          "transferAgent": { # The agent will transfer the conversation to a different agent. # Optional. Transfer the conversation to a different agent.
            "agent": "A String", # Required. The name of the agent to transfer the conversation to. The agent must be in the same app as the current agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
          },
        },
        "codeCallback": { # Guardrail that blocks the conversation based on the code callbacks provided. # Optional. Guardrail that potentially blocks the conversation based on the result of the callback execution.
          "afterAgentCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute after the agent is called. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "afterModelCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute after the model is called. If there are multiple calls to the model, the callback will be executed multiple times. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "beforeAgentCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute before the agent is called. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "beforeModelCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute before the model is called. If there are multiple calls to the model, the callback will be executed multiple times. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        },
        "contentFilter": { # Guardrail that bans certain content from being used in the conversation. # Optional. Guardrail that bans certain content from being used in the conversation.
          "bannedContents": [ # Optional. List of banned phrases. Applies to both user inputs and agent responses.
            "A String",
          ],
          "bannedContentsInAgentResponse": [ # Optional. List of banned phrases. Applies only to agent responses.
            "A String",
          ],
          "bannedContentsInUserInput": [ # Optional. List of banned phrases. Applies only to user inputs.
            "A String",
          ],
          "disregardDiacritics": True or False, # Optional. If true, diacritics are ignored during matching.
          "matchType": "A String", # Required. Match type for the content filter.
        },
        "createTime": "A String", # Output only. Timestamp when the guardrail was created.
        "description": "A String", # Optional. Description of the guardrail.
        "displayName": "A String", # Required. Display name of the guardrail.
        "enabled": True or False, # Optional. Whether the guardrail is enabled.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "llmPolicy": { # Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification. # Optional. Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification.
          "allowShortUtterance": True or False, # Optional. By default, the LLM policy check is bypassed for short utterances. Enabling this setting applies the policy check to all utterances, including those that would normally be skipped.
          "failOpen": True or False, # Optional. If an error occurs during the policy check, fail open and do not trigger the guardrail.
          "maxConversationMessages": 42, # Optional. When checking this policy, consider the last 'n' messages in the conversation. When not set a default value of 10 will be used.
          "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Model settings.
            "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
            "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
          },
          "policyScope": "A String", # Required. Defines when to apply the policy check during the conversation. If set to `POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input. When applying the policy to the agent response, additional latency will be introduced before the agent can respond.
          "prompt": "A String", # Required. Policy prompt.
        },
        "llmPromptSecurity": { # Guardrail that blocks the conversation if the input is considered unsafe based on the LLM classification. # Optional. Guardrail that blocks the conversation if the prompt is considered unsafe based on the LLM classification.
          "customPolicy": { # Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification. # Optional. Use a user-defined LlmPolicy to configure the security guardrail.
            "allowShortUtterance": True or False, # Optional. By default, the LLM policy check is bypassed for short utterances. Enabling this setting applies the policy check to all utterances, including those that would normally be skipped.
            "failOpen": True or False, # Optional. If an error occurs during the policy check, fail open and do not trigger the guardrail.
            "maxConversationMessages": 42, # Optional. When checking this policy, consider the last 'n' messages in the conversation. When not set a default value of 10 will be used.
            "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Model settings.
              "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
              "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
            },
            "policyScope": "A String", # Required. Defines when to apply the policy check during the conversation. If set to `POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input. When applying the policy to the agent response, additional latency will be introduced before the agent can respond.
            "prompt": "A String", # Required. Policy prompt.
          },
          "defaultSettings": { # Configuration for default system security settings. # Optional. Use the system's predefined default security settings. To select this mode, include an empty 'default_settings' message in the request. The 'default_prompt_template' field within will be populated by the server in the response.
            "defaultPromptTemplate": "A String", # Output only. The default prompt template used by the system. This field is for display purposes to show the user what prompt the system uses by default. It is OUTPUT_ONLY.
          },
          "failOpen": True or False, # Optional. Determines the behavior when the guardrail encounters an LLM error. - If true: the guardrail is bypassed. - If false (default): the guardrail triggers/blocks. Note: If a custom policy is provided, this field is ignored in favor of the policy's 'fail_open' configuration.
        },
        "modelSafety": { # Model safety settings overrides. When this is set, it will override the default settings and trigger the guardrail if the response is considered unsafe. # Optional. Guardrail that blocks the conversation if the LLM response is considered unsafe based on the model safety settings.
          "safetySettings": [ # Required. List of safety settings.
            { # Safety setting.
              "category": "A String", # Required. The harm category.
              "threshold": "A String", # Required. The harm block threshold.
            },
          ],
        },
        "name": "A String", # Identifier. The unique identifier of the guardrail. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
        "updateTime": "A String", # Output only. Timestamp when the guardrail was last updated.
      },
    ],
    "tools": [ # Optional. List of tools in the app.
      { # A tool represents an action that the CES agent can take to achieve certain goals.
        "clientFunction": { # Represents a client-side function that the agent can invoke. When the tool is chosen by the agent, control is handed off to the client. The client is responsible for executing the function and returning the result as a ToolResponse to continue the interaction with the agent. # Optional. The client function.
          "description": "A String", # Optional. The function description.
          "name": "A String", # Required. The function name.
          "parameters": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the function parameters.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "response": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the function response.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
        "connectorTool": { # A ConnectorTool allows connections to different integrations. See: https://cloud.google.com/integration-connectors/docs/overview. # Optional. The Integration Connector tool.
          "action": { # Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details. # Required. Action for the tool to use.
            "connectionActionId": "A String", # ID of a Connection action for the tool to use.
            "entityOperation": { # Entity CRUD operation specification. # Entity operation configuration for the tool to use.
              "entityId": "A String", # Required. ID of the entity.
              "operation": "A String", # Required. Operation to perform on the entity.
            },
            "inputFields": [ # Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
              "A String",
            ],
            "outputFields": [ # Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
              "A String",
            ],
          },
          "authConfig": { # End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`. # Optional. Configures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. **Note**: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the ConnectorTool creation will fail. See https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override for details.
            "oauth2AuthCodeConfig": { # Oauth 2.0 Authorization Code authentication configuration. # Oauth 2.0 Authorization Code authentication.
              "oauthToken": "A String", # Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
            },
            "oauth2JwtBearerConfig": { # JWT Profile Oauth 2.0 Authorization Grant authentication configuration. # JWT Profile Oauth 2.0 Authorization Grant authentication.
              "clientKey": "A String", # Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
              "issuer": "A String", # Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
              "subject": "A String", # Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
            },
          },
          "connection": "A String", # Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
          "description": "A String", # Optional. The description of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
          "name": "A String", # Optional. The name of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
        },
        "createTime": "A String", # Output only. Timestamp when the tool was created.
        "dataStoreTool": { # Tool to retrieve from Vertex AI Search datastore or engine for grounding. Accepts either a datastore or an engine, but not both. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction. # Optional. The data store tool.
          "boostSpecs": [ # Optional. Boost specification to boost certain documents.
            { # Boost specifications to boost certain documents. For more information, please refer to https://cloud.google.com/generative-ai-app-builder/docs/boosting.
              "dataStores": [ # Required. The Data Store where the boosting configuration is applied. Full resource name of DataStore, such as projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}.
                "A String",
              ],
              "spec": [ # Required. A list of boosting specifications.
                { # Boost specification to boost certain documents.
                  "conditionBoostSpecs": [ # Required. A list of boosting specifications.
                    { # Boost specification for a condition.
                      "boost": 3.14, # Optional. Strength of the boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the suggestions a big promotion. However, it does not necessarily mean that the top result will be a boosted suggestion. Setting to -1.0 gives the suggestions a big demotion. However, other suggestions that are relevant might still be shown. Setting to 0.0 means no boost applied. The boosting condition is ignored.
                      "boostControlSpec": { # Specification for custom ranking based on customer specified attribute value. It provides more controls for customized ranking than the simple (condition, boost) combination above. # Optional. Complex specification for custom ranking based on customer defined attribute value.
                        "attributeType": "A String", # Optional. The attribute type to be used to determine the boost amount. The attribute value can be derived from the field value of the specified field_name. In the case of numerical it is straightforward i.e. attribute_value = numerical_field_value. In the case of freshness however, attribute_value = (time.now() - datetime_field_value).
                        "controlPoints": [ # Optional. The control points used to define the curve. The monotonic function (defined through the interpolation_type above) passes through the control points listed here.
                          { # The control points used to define the curve. The curve defined through these control points can only be monotonically increasing or decreasing(constant values are acceptable).
                            "attributeValue": "A String", # Optional. Can be one of: 1. The numerical field value. 2. The duration spec for freshness: The value must be formatted as an XSD `dayTimeDuration` value (a restricted subset of an ISO 8601 duration value). The pattern for this is: `nDnM]`.
                            "boostAmount": 3.14, # Optional. The value between -1 to 1 by which to boost the score if the attribute_value evaluates to the value specified above.
                          },
                        ],
                        "fieldName": "A String", # Optional. The name of the field whose value will be used to determine the boost amount.
                        "interpolationType": "A String", # Optional. The interpolation type to be applied to connect the control points listed below.
                      },
                      "condition": "A String", # Required. An expression which specifies a boost condition. The syntax is the same as filter expression syntax. Currently, the only supported condition is a list of BCP-47 lang codes. Example: To boost suggestions in languages en or fr: (lang_code: ANY("en", "fr"))
                    },
                  ],
                },
              ],
            },
          ],
          "dataStoreSource": { # Configuration for searching within a specific DataStore. # Optional. Search within a single specific DataStore.
            "dataStore": { # A DataStore resource in Vertex AI Search. # Optional. The data store.
              "connectorConfig": { # The connector config for the data store connection. # Output only. The connector config for the data store connection.
                "collection": "A String", # Resource name of the collection the data store belongs to.
                "collectionDisplayName": "A String", # Display name of the collection the data store belongs to.
                "dataSource": "A String", # The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
              },
              "createTime": "A String", # Output only. Timestamp when the data store was created.
              "displayName": "A String", # Output only. The display name of the data store.
              "documentProcessingMode": "A String", # Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
              "name": "A String", # Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
              "type": "A String", # Output only. The type of the data store. This field is readonly and populated by the server.
            },
            "filter": "A String", # Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
          },
          "description": "A String", # Optional. The tool description.
          "engineSource": { # Configuration for searching within an Engine, potentially targeting specific DataStores. # Optional. Search within an Engine (potentially across multiple DataStores).
            "dataStoreSources": [ # Optional. Use to target specific DataStores within the Engine. If empty, the search applies to all DataStores associated with the Engine.
              { # Configuration for searching within a specific DataStore.
                "dataStore": { # A DataStore resource in Vertex AI Search. # Optional. The data store.
                  "connectorConfig": { # The connector config for the data store connection. # Output only. The connector config for the data store connection.
                    "collection": "A String", # Resource name of the collection the data store belongs to.
                    "collectionDisplayName": "A String", # Display name of the collection the data store belongs to.
                    "dataSource": "A String", # The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
                  },
                  "createTime": "A String", # Output only. Timestamp when the data store was created.
                  "displayName": "A String", # Output only. The display name of the data store.
                  "documentProcessingMode": "A String", # Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
                  "name": "A String", # Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                  "type": "A String", # Output only. The type of the data store. This field is readonly and populated by the server.
                },
                "filter": "A String", # Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
              },
            ],
            "engine": "A String", # Required. Full resource name of the Engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
            "filter": "A String", # Optional. A filter applied to the search across the Engine. Not relevant and not used if 'data_store_sources' is provided. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
          },
          "filterParameterBehavior": "A String", # Optional. The filter parameter behavior.
          "modalityConfigs": [ # Optional. The modality configs for the data store.
            { # If specified, will apply the given configuration for the specified modality.
              "groundingConfig": { # Grounding configuration. # Optional. The grounding configuration.
                "disabled": True or False, # Optional. Whether grounding is disabled.
                "groundingLevel": 3.14, # Optional. The groundedness threshold of the answer based on the retrieved sources. The value has a configurable range of [1, 5]. The level is used to threshold the groundedness of the answer, meaning that all responses with a groundedness score below the threshold will fall back to returning relevant snippets only. For example, a level of 3 means that the groundedness score must be 3 or higher for the response to be returned.
              },
              "modalityType": "A String", # Required. The modality type.
              "rewriterConfig": { # Rewriter configuration. # Optional. The rewriter config.
                "disabled": True or False, # Optional. Whether the rewriter is disabled.
                "modelSettings": { # Model settings contains various configurations for the LLM model. # Required. Configurations for the LLM model.
                  "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                  "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                },
                "prompt": "A String", # Optional. The prompt definition. If not set, default prompt will be used.
              },
              "summarizationConfig": { # Summarization configuration. # Optional. The summarization config.
                "disabled": True or False, # Optional. Whether summarization is disabled.
                "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Configurations for the LLM model.
                  "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                  "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                },
                "prompt": "A String", # Optional. The prompt definition. If not set, default prompt will be used.
              },
            },
          ],
          "name": "A String", # Required. The data store tool name.
        },
        "displayName": "A String", # Output only. The display name of the tool, derived based on the tool's type. For example, display name of a ClientFunction is derived from its `name` property.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "executionType": "A String", # Optional. The execution type of the tool.
        "fileSearchTool": { # The file search tool allows the agent to search across the files uploaded by the app/agent developer. It has presets to give relatively good quality search over the uploaded files and summarization of the retrieved results. # Optional. The file search tool.
          "corpusType": "A String", # Optional. The type of the corpus. Default is FULLY_MANAGED.
          "description": "A String", # Optional. The tool description.
          "fileCorpus": "A String", # Optional. The corpus where files are stored. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
          "name": "A String", # Required. The tool name.
        },
        "generatedSummary": "A String", # Output only. If the tool is generated by the LLM assistant, this field contains a descriptive summary of the generation.
        "googleSearchTool": { # Represents a tool to perform Google web searches for grounding. See https://cloud.google.com/customer-engagement-ai/conversational-agents/ps/tool#google-search. # Optional. The google search tool.
          "contextUrls": [ # Optional. Content will be fetched directly from these URLs for context and grounding. Example: "https://example.com/path.html". A maximum of 20 URLs are allowed.
            "A String",
          ],
          "description": "A String", # Optional. Description of the tool's purpose.
          "excludeDomains": [ # Optional. List of domains to be excluded from the search results. Example: "example.com". A maximum of 2000 domains can be excluded.
            "A String",
          ],
          "name": "A String", # Required. The name of the tool.
          "preferredDomains": [ # Optional. Specifies domains to restrict search results to. Example: "example.com", "another.site". A maximum of 20 domains can be specified.
            "A String",
          ],
          "promptConfig": { # Prompt settings used by the model when processing or summarizing the google search results. # Optional. Prompt instructions passed to planner on how the search results should be processed for text and voice.
            "textPrompt": "A String", # Optional. Defines the prompt used for the system instructions when interacting with the agent in chat conversations. If not set, default prompt will be used.
            "voicePrompt": "A String", # Optional. Defines the prompt used for the system instructions when interacting with the agent in voice conversations. If not set, default prompt will be used.
          },
        },
        "mcpTool": { # An MCP tool. See https://modelcontextprotocol.io/specification/2025-06-18/server/tools for more details. # Optional. The MCP tool. An MCP tool cannot be created or updated directly and is managed by the MCP toolset.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required to execute the tool against the MCP server. For bearer token authentication, the token applies only to tool execution, not to listing tools. This requires that tools can be listed without authentication.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "description": "A String", # Optional. The description of the MCP tool.
          "inputSchema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the input arguments of the MCP tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "name": "A String", # Required. The name of the MCP tool.
          "outputSchema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the output arguments of the MCP tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "serverAddress": "A String", # Required. The server address of the MCP server, e.g., "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. This is the same as the server_address in the McpToolset. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration for VPC-SC, used to resolve service names within a perimeter.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client should trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
        },
        "name": "A String", # Identifier. The unique identifier of the tool. Format: - `projects/{project}/locations/{location}/apps/{app}/tools/{tool}` for ## standalone tools. `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}/tools/{tool}` for tools retrieved from a toolset. These tools are dynamic and output-only, they cannot be referenced directly where a tool is expected.
        "openApiTool": { # A remote API tool defined by an OpenAPI schema. # Optional. The open API tool.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required by the API.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "description": "A String", # Optional. The description of the tool. If not provided, the description of the tool will be derived from the OpenAPI schema, from `operation.description` or `operation.summary`.
          "ignoreUnknownFields": True or False, # Optional. If true, the agent will ignore unknown fields in the API response.
          "name": "A String", # Optional. The name of the tool. If not provided, the name of the tool will be derived from the OpenAPI schema, from `operation.operationId`.
          "openApiSchema": "A String", # Required. The OpenAPI schema in JSON or YAML format.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client will trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
          "url": "A String", # Optional. The server URL of the Open API schema. This field is only set in tools in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
        },
        "pythonFunction": { # A Python function tool. # Optional. The python function tool.
          "description": "A String", # Output only. The description of the Python function, parsed from the python code's docstring.
          "name": "A String", # Optional. The name of the Python function to execute. Must match a Python function name defined in the python code. Case sensitive. If the name is not provided, the first function defined in the python code will be used.
          "pythonCode": "A String", # Optional. The Python code to execute for the tool.
        },
        "systemTool": { # Pre-defined system tool. # Optional. The system tool.
          "description": "A String", # Output only. The description of the system tool.
          "name": "A String", # Required. The name of the system tool.
        },
        "toolFakeConfig": { # Configuration for tool behavior in fake mode. # Optional. Configuration for tool behavior in fake mode.
          "codeBlock": { # A code block to be executed instead of a real tool call. # Optional. Code block which will be executed instead of a real tool call.
            "pythonCode": "A String", # Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
          },
          "enableFakeMode": True or False, # Optional. Whether the tool is using fake mode.
        },
        "updateTime": "A String", # Output only. Timestamp when the tool was last updated.
        "widgetTool": { # Represents a widget tool that the agent can invoke. When the tool is chosen by the agent, agent will return the widget to the client. The client is responsible for processing the widget and generating the next user query to continue the interaction with the agent. # Optional. The widget tool.
          "description": "A String", # Optional. The description of the widget tool.
          "name": "A String", # Required. The display name of the widget tool.
          "parameters": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The input parameters of the widget tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "widgetType": "A String", # Optional. The type of the widget tool. If not specified, the default type will be CUSTOMIZED.
        },
      },
    ],
    "toolsets": [ # Optional. List of toolsets in the app.
      { # A toolset represents a group of dynamically managed tools that can be used by the agent.
        "connectorToolset": { # A toolset that generates tools from an Integration Connectors Connection. # Optional. A toolset that generates tools from an Integration Connectors Connection.
          "authConfig": { # End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`. # Optional. Configures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. **Note**: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the Toolset creation will fail. See: https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override
            "oauth2AuthCodeConfig": { # Oauth 2.0 Authorization Code authentication configuration. # Oauth 2.0 Authorization Code authentication.
              "oauthToken": "A String", # Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
            },
            "oauth2JwtBearerConfig": { # JWT Profile Oauth 2.0 Authorization Grant authentication configuration. # JWT Profile Oauth 2.0 Authorization Grant authentication.
              "clientKey": "A String", # Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
              "issuer": "A String", # Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
              "subject": "A String", # Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
            },
          },
          "connection": "A String", # Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
          "connectorActions": [ # Required. The list of connector actions/entity operations to generate tools for.
            { # Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details.
              "connectionActionId": "A String", # ID of a Connection action for the tool to use.
              "entityOperation": { # Entity CRUD operation specification. # Entity operation configuration for the tool to use.
                "entityId": "A String", # Required. ID of the entity.
                "operation": "A String", # Required. Operation to perform on the entity.
              },
              "inputFields": [ # Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
                "A String",
              ],
              "outputFields": [ # Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
                "A String",
              ],
            },
          ],
        },
        "createTime": "A String", # Output only. Timestamp when the toolset was created.
        "description": "A String", # Optional. The description of the toolset.
        "displayName": "A String", # Optional. The display name of the toolset. Must be unique within the same app.
        "etag": "A String", # ETag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "executionType": "A String", # Optional. The execution type of the tools in the toolset.
        "mcpToolset": { # A toolset that contains a list of tools that are offered by the MCP server. # Optional. A toolset that contains a list of tools that are offered by the MCP server.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required to access tools and execute a tool against the MCP server. For bearer token authentication, the token applies only to tool execution, not to listing tools. This requires that tools can be listed without authentication.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "serverAddress": "A String", # Required. The address of the MCP server, for example, "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration for VPC-SC, used to resolve service names within a perimeter.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client should trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
        },
        "name": "A String", # Identifier. The unique identifier of the toolset. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
        "openApiToolset": { # A toolset that contains a list of tools that are defined by an OpenAPI schema. # Optional. A toolset that contains a list of tools that are defined by an OpenAPI schema.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required by the API.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "ignoreUnknownFields": True or False, # Optional. If true, the agent will ignore unknown fields in the API response for all operations defined in the OpenAPI schema.
          "openApiSchema": "A String", # Required. The OpenAPI schema of the toolset.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
          "url": "A String", # Optional. The server URL of the Open API schema. This field is only set in toolsets in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
        },
        "toolFakeConfig": { # Configuration for tool behavior in fake mode. # Optional. Configuration for tools behavior in fake mode.
          "codeBlock": { # A code block to be executed instead of a real tool call. # Optional. Code block which will be executed instead of a real tool call.
            "pythonCode": "A String", # Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
          },
          "enableFakeMode": True or False, # Optional. Whether the tool is using fake mode.
        },
        "updateTime": "A String", # Output only. Timestamp when the toolset was last updated.
      },
    ],
  },
}
delete(name, etag=None, x__xgafv=None)
Deletes the specified app version.

Args:
  name: string, Required. The resource name of the app version to delete. (required)
  etag: string, Optional. The current etag of the app version. If an etag is not provided, the deletion will overwrite any concurrent changes. If an etag is provided and does not match the current etag of the app version, deletion will be blocked and an ABORTED error will be returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
}
get(name, x__xgafv=None)
Gets details of the specified app version.

Args:
  name: string, Required. The resource name of the app version to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # In Customer Engagement Suite (CES), an app version is a snapshot of the app at a specific point in time. It is immutable and cannot be modified once created.
  "createTime": "A String", # Output only. Timestamp when the app version was created.
  "creator": "A String", # Output only. Email of the user who created the app version.
  "description": "A String", # Optional. The description of the app version.
  "displayName": "A String", # Optional. The display name of the app version.
  "etag": "A String", # Output only. Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
  "name": "A String", # Identifier. The unique identifier of the app version. Format: `projects/{project}/locations/{location}/apps/{app}/versions/{version}`
  "snapshot": { # A snapshot of the app. # Output only. The snapshot of the app when the version is created.
    "agents": [ # Optional. List of agents in the app.
      { # An agent acts as the fundamental building block that provides instructions to the Large Language Model (LLM) for executing specific tasks.
        "afterAgentCallbacks": [ # Optional. The callbacks to execute after the agent is called. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "afterModelCallbacks": [ # Optional. The callbacks to execute after the model is called. If there are multiple calls to the model, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "afterToolCallbacks": [ # Optional. The callbacks to execute after the tool is invoked. If there are multiple tool invocations, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeAgentCallbacks": [ # Optional. The callbacks to execute before the agent is called. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeModelCallbacks": [ # Optional. The callbacks to execute before the model is called. If there are multiple calls to the model, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "beforeToolCallbacks": [ # Optional. The callbacks to execute before the tool is invoked. If there are multiple tool invocations, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
          { # A callback defines the custom logic to be executed at various stages of agent interaction.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        ],
        "childAgents": [ # Optional. List of child agents in the agent tree. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
          "A String",
        ],
        "createTime": "A String", # Output only. Timestamp when the agent was created.
        "description": "A String", # Optional. Human-readable description of the agent.
        "displayName": "A String", # Required. Display name of the agent.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "generatedSummary": "A String", # Output only. If the agent is generated by the LLM assistant, this field contains a descriptive summary of the generation.
        "guardrails": [ # Optional. List of guardrails for the agent. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
          "A String",
        ],
        "instruction": "A String", # Optional. Instructions for the LLM model to guide the agent's behavior.
        "llmAgent": { # Default agent type. The agent uses instructions and callbacks specified in the agent to perform the task using a large language model. # Optional. The default agent type.
        },
        "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Configurations for the LLM model.
          "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
          "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
        },
        "name": "A String", # Identifier. The unique identifier of the agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
        "remoteDialogflowAgent": { # The agent which will transfer execution to a remote [Dialogflow CX](https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent) agent. The Dialogflow agent will process subsequent user queries until the session ends or flow ends, and the control is transferred back to the parent CES agent. # Optional. The remote [Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents) agent to be used for the agent execution. If this field is set, all other agent level properties will be ignored. Note: If the Dialogflow agent is in a different project from the app, you should grant `roles/dialogflow.client` to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "agent": "A String", # Required. The [Dialogflow](https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent) agent resource name. Format: `projects/{project}/locations/{location}/agents/{agent}`
          "environmentId": "A String", # Optional. The environment ID of the Dialogflow agent to be used for the agent execution. If not specified, the draft environment will be used.
          "flowId": "A String", # Optional. The flow ID of the flow in the Dialogflow agent.
          "inputVariableMapping": { # Optional. The mapping of the app variables names to the Dialogflow session parameters names to be sent to the Dialogflow agent as input.
            "a_key": "A String",
          },
          "outputVariableMapping": { # Optional. The mapping of the Dialogflow session parameters names to the app variables names to be sent back to the CES agent after the Dialogflow agent execution ends.
            "a_key": "A String",
          },
          "respectResponseInterruptionSettings": True or False, # Optional. Indicates whether to respect the message-level interruption settings configured in the Dialogflow agent. * If false: all response messages from the Dialogflow agent follow the app-level barge-in settings. * If true: only response messages with [`allow_playback_interruption`](https://docs.cloud.google.com/dialogflow/cx/docs/reference/rpc/google.cloud.dialogflow.cx.v3#text) set to true will be interruptable, all other messages follow the app-level barge-in settings.
        },
        "tools": [ # Optional. List of available tools for the agent. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
          "A String",
        ],
        "toolsets": [ # Optional. List of toolsets for the agent.
          { # A toolset with a selection of its tools.
            "toolIds": [ # Optional. The tools IDs to filter the toolset.
              "A String",
            ],
            "toolset": "A String", # Required. The resource name of the toolset. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
          },
        ],
        "transferRules": [ # Optional. Agent transfer rules. If multiple rules match, the first one in the list will be used.
          { # Rule for transferring to a specific agent.
            "childAgent": "A String", # Required. The resource name of the child agent the rule applies to. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
            "deterministicTransfer": { # Deterministic transfer rule. When the condition evaluates to true, the transfer occurs. # Optional. A rule that immediately transfers to the target agent when the condition is met.
              "expressionCondition": { # Expression condition based on session state. # Optional. A rule that evaluates a session state condition. If the condition evaluates to true, the transfer occurs.
                "expression": "A String", # Required. The string representation of cloud.api.Expression condition.
              },
              "pythonCodeCondition": { # Python code block to evaluate the condition. # Optional. A rule that uses Python code block to evaluate the conditions. If the condition evaluates to true, the transfer occurs.
                "pythonCode": "A String", # Required. The python code to execute.
              },
            },
            "direction": "A String", # Required. The direction of the transfer.
            "disablePlannerTransfer": { # A rule that prevents the planner from transferring to the target agent. # Optional. Rule that prevents the planner from transferring to the target agent.
              "expressionCondition": { # Expression condition based on session state. # Required. If the condition evaluates to true, planner will not be allowed to transfer to the target agent.
                "expression": "A String", # Required. The string representation of cloud.api.Expression condition.
              },
            },
          },
        ],
        "updateTime": "A String", # Output only. Timestamp when the agent was last updated.
      },
    ],
    "app": { # An app serves as a top-level container for a group of agents, including the root agent and its sub-agents, along with their associated configurations. These agents work together to achieve specific goals within the app's context. # Optional. The basic settings for the app.
      "audioProcessingConfig": { # Configuration for how the input and output audio should be processed and delivered. # Optional. Audio processing configuration of the app.
        "ambientSoundConfig": { # Configuration for the ambient sound to be played with the synthesized agent response, to enhance the naturalness of the conversation. # Optional. Configuration for the ambient sound to be played with the synthesized agent response, to enhance the naturalness of the conversation.
          "gcsUri": "A String", # Optional. Ambient noise as a mono-channel, 16kHz WAV file stored in [Cloud Storage](https://cloud.google.com/storage). Note: Please make sure the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com` has `storage.objects.get` permission to the Cloud Storage object.
          "prebuiltAmbientNoise": "A String", # Optional. Deprecated: `prebuilt_ambient_noise` is deprecated in favor of `prebuilt_ambient_sound`.
          "prebuiltAmbientSound": "A String", # Optional. Name of the prebuilt ambient sound. Valid values are: - "coffee_shop" - "keyboard" - "keypad" - "hum" - "office_1" - "office_2" - "office_3" - "room_1" - "room_2" - "room_3" - "room_4" - "room_5" - "air_conditioner"
          "volumeGainDb": 3.14, # Optional. Volume gain (in dB) of the normal native volume supported by ambient noise, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that.
        },
        "bargeInConfig": { # Configuration for how the user barge-in activities should be handled. # Optional. Configures the agent behavior for the user barge-in activities.
          "bargeInAwareness": True or False, # Optional. If enabled, the agent will adapt its next response based on the assumption that the user hasn't heard the full preceding agent message. This should not be used in scenarios where agent responses are displayed visually.
          "disableBargeIn": True or False, # Optional. Disables user barge-in while the agent is speaking. If true, user input during agent response playback will be ignored. Deprecated: `disable_barge_in` is deprecated in favor of `disable_barge_in_control` in ChannelProfile.
        },
        "inactivityTimeout": "A String", # Optional. The duration of user inactivity (no speech or interaction) before the agent prompts the user for reengagement. If not set, the agent will not prompt the user for reengagement.
        "synthesizeSpeechConfigs": { # Optional. Configuration of how the agent response should be synthesized, mapping from the language code to SynthesizeSpeechConfig. If the configuration for the specified language code is not found, the configuration for the root language code will be used. For example, if the map contains "en-us" and "en", and the specified language code is "en-gb", then "en" configuration will be used. Note: Language code is case-insensitive.
          "a_key": { # Configuration for how the agent response should be synthesized.
            "speakingRate": 3.14, # Optional. The speaking rate/speed in the range [0.25, 2.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. Values outside of the range [0.25, 2.0] will return an error.
            "voice": "A String", # Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices) from Cloud Text-to-Speech.
          },
        },
      },
      "clientCertificateSettings": { # Settings for custom client certificates. # Optional. The default client certificate settings for the app.
        "passphrase": "A String", # Optional. The name of the SecretManager secret version resource storing the passphrase to decrypt the private key. Should be left unset if the private key is not encrypted. Format: `projects/{project}/secrets/{secret}/versions/{version}`
        "privateKey": "A String", # Required. The name of the SecretManager secret version resource storing the private key encoded in PEM format. Format: `projects/{project}/secrets/{secret}/versions/{version}`
        "tlsCertificate": "A String", # Required. The TLS certificate encoded in PEM format. This string must include the begin header and end footer lines.
      },
      "createTime": "A String", # Output only. Timestamp when the app was created.
      "dataStoreSettings": { # Data store related settings for the app. # Optional. The data store settings for the app.
        "engines": [ # Output only. The engines for the app.
          { # An engine to which the data stores are connected. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction.
            "name": "A String", # Output only. The resource name of the engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
            "type": "A String", # Output only. The type of the engine.
          },
        ],
      },
      "defaultChannelProfile": { # A ChannelProfile configures the agent's behavior for a specific communication channel, such as web UI or telephony. # Optional. The default channel profile used by the app.
        "channelType": "A String", # Optional. The type of the channel profile.
        "disableBargeInControl": True or False, # Optional. Whether to disable user barge-in control in the conversation. - **true**: User interruptions are disabled while the agent is speaking. - **false**: The agent retains automatic control over when the user can interrupt.
        "disableDtmf": True or False, # Optional. Whether to disable DTMF (dual-tone multi-frequency).
        "noiseSuppressionLevel": "A String", # Optional. The noise suppression level of the channel profile. Available values are "low", "moderate", "high", "very_high".
        "personaProperty": { # Represents the persona property of a channel. # Optional. The persona property of the channel profile.
          "persona": "A String", # Optional. The persona of the channel.
        },
        "profileId": "A String", # Optional. The unique identifier of the channel profile.
        "webWidgetConfig": { # Message for configuration for the web widget. # Optional. The configuration for the web widget.
          "modality": "A String", # Optional. The modality of the web widget.
          "securitySettings": { # Security settings for the web widget. # Optional. The security settings of the web widget.
            "allowedOrigins": [ # Optional. The origins that are allowed to host the web widget. An origin is defined by RFC 6454. If empty, all origins are allowed. A maximum of 100 origins is allowed. Example: "https://example.com"
              "A String",
            ],
            "enableOriginCheck": True or False, # Optional. Indicates whether origin check for the web widget is enabled. If `true`, the web widget will check the origin of the website that loads the web widget and only allow it to be loaded in the same origin or any of the allowed origins.
            "enablePublicAccess": True or False, # Optional. Indicates whether public access to the web widget is enabled. If `true`, the web widget will be publicly accessible. If `false`, the web widget must be integrated with your own authentication and authorization system to return valid credentials for accessing the CES agent.
            "enableRecaptcha": True or False, # Optional. Indicates whether reCAPTCHA verification for the web widget is enabled.
          },
          "theme": "A String", # Optional. The theme of the web widget.
          "webWidgetTitle": "A String", # Optional. The title of the web widget.
        },
      },
      "deploymentCount": 42, # Output only. Number of deployments in the app.
      "description": "A String", # Optional. Human-readable description of the app.
      "displayName": "A String", # Required. Display name of the app.
      "etag": "A String", # Output only. Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
      "evaluationMetricsThresholds": { # Threshold settings for metrics in an Evaluation. # Optional. The evaluation thresholds for the app.
        "goldenEvaluationMetricsThresholds": { # Settings for golden evaluations. # Optional. The golden evaluation metrics thresholds.
          "expectationLevelMetricsThresholds": { # Expectation level metrics thresholds. # Optional. The expectation level metrics thresholds.
            "toolInvocationParameterCorrectnessThreshold": 3.14, # Optional. The success threshold for individual tool invocation parameter correctness. Must be a float between 0 and 1. Default is 1.0.
          },
          "turnLevelMetricsThresholds": { # Turn level metrics thresholds. # Optional. The turn level metrics thresholds.
            "overallToolInvocationCorrectnessThreshold": 3.14, # Optional. The success threshold for overall tool invocation correctness. Must be a float between 0 and 1. Default is 1.0.
            "semanticSimilarityChannel": "A String", # Optional. The semantic similarity channel to use for evaluation.
            "semanticSimilaritySuccessThreshold": 42, # Optional. The success threshold for semantic similarity. Must be an integer between 0 and 4. Default is >= 3.
          },
        },
        "goldenHallucinationMetricBehavior": "A String", # Optional. The hallucination metric behavior for golden evaluations.
        "hallucinationMetricBehavior": "A String", # Optional. Deprecated: Use `golden_hallucination_metric_behavior` instead. The hallucination metric behavior is currently used for golden evaluations.
        "scenarioHallucinationMetricBehavior": "A String", # Optional. The hallucination metric behavior for scenario evaluations.
      },
      "globalInstruction": "A String", # Optional. Instructions for all the agents in the app. You can use this instruction to set up a stable identity or personality across all the agents.
      "guardrails": [ # Optional. List of guardrails for the app. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
        "A String",
      ],
      "languageSettings": { # Language settings of the app. # Optional. Language settings of the app.
        "defaultLanguageCode": "A String", # Optional. The default language code of the app.
        "enableMultilingualSupport": True or False, # Optional. Enables multilingual support. If true, agents in the app will use pre-built instructions to improve handling of multilingual input.
        "fallbackAction": "A String", # Optional. The action to perform when an agent receives input in an unsupported language. This can be a predefined action or a custom tool call. Valid values are: - A tool's full resource name, which triggers a specific tool execution. - A predefined system action, such as "escalate" or "exit", which triggers an EndSession signal with corresponding metadata to terminate the conversation.
        "supportedLanguageCodes": [ # Optional. List of languages codes supported by the app, in addition to the `default_language_code`.
          "A String",
        ],
      },
      "locked": True or False, # Optional. Indicates whether the app is locked for changes. If the app is locked, modifications to the app resources will be rejected.
      "loggingSettings": { # Settings to describe the logging behaviors for the app. # Optional. Logging settings of the app.
        "audioRecordingConfig": { # Configuration for how the audio interactions should be recorded. # Optional. Configuration for how audio interactions should be recorded.
          "gcsBucket": "A String", # Optional. The [Cloud Storage](https://cloud.google.com/storage) bucket to store the session audio recordings. The URI must start with "gs://". Please choose a bucket location that meets your data residency requirements. Note: If the Cloud Storage bucket is in a different project from the app, you should grant `storage.objects.create` permission to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "gcsPathPrefix": "A String", # Optional. The Cloud Storage path prefix for audio recordings. This prefix can include the following placeholders, which will be dynamically substituted at serving time: - $project: project ID - $location: app location - $app: app ID - $date: session date in YYYY-MM-DD format - $session: session ID If the path prefix is not specified, the default prefix `$project/$location/$app/$date/$session/` will be used.
        },
        "bigqueryExportSettings": { # Settings to describe the BigQuery export behaviors for the app. # Optional. Settings to describe the BigQuery export behaviors for the app. The conversation data will be exported to BigQuery tables if it is enabled.
          "dataset": "A String", # Optional. The BigQuery dataset to export the data to.
          "enabled": True or False, # Optional. Indicates whether the BigQuery export is enabled.
          "project": "A String", # Optional. The project ID of the BigQuery dataset to export the data to. Note: If the BigQuery dataset is in a different project from the app, you should grant `roles/bigquery.admin` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
        },
        "cloudLoggingSettings": { # Settings to describe the Cloud Logging behaviors for the app. # Optional. Settings to describe the Cloud Logging behaviors for the app.
          "enableCloudLogging": True or False, # Optional. Whether to enable Cloud Logging for the sessions.
        },
        "conversationLoggingSettings": { # Settings to describe the conversation logging behaviors for the app. # Optional. Settings to describe the conversation logging behaviors for the app.
          "disableConversationLogging": True or False, # Optional. Whether to disable conversation logging for the sessions.
        },
        "evaluationAudioRecordingConfig": { # Configuration for how the audio interactions should be recorded. # Optional. Configuration for how audio interactions should be recorded for the evaluation. By default, audio recording is not enabled for evaluation sessions.
          "gcsBucket": "A String", # Optional. The [Cloud Storage](https://cloud.google.com/storage) bucket to store the session audio recordings. The URI must start with "gs://". Please choose a bucket location that meets your data residency requirements. Note: If the Cloud Storage bucket is in a different project from the app, you should grant `storage.objects.create` permission to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
          "gcsPathPrefix": "A String", # Optional. The Cloud Storage path prefix for audio recordings. This prefix can include the following placeholders, which will be dynamically substituted at serving time: - $project: project ID - $location: app location - $app: app ID - $date: session date in YYYY-MM-DD format - $session: session ID If the path prefix is not specified, the default prefix `$project/$location/$app/$date/$session/` will be used.
        },
        "metricAnalysisSettings": { # Settings to describe the conversation data collection behaviors for LLM analysis metrics pipeline. # Optional. Settings to describe the conversation data collection behaviors for the LLM analysis pipeline for the app.
          "llmMetricsOptedOut": True or False, # Optional. Whether to collect conversation data for llm analysis metrics. If true, conversation data will not be collected for llm analysis metrics; otherwise, conversation data will be collected.
        },
        "redactionConfig": { # Configuration to instruct how sensitive data should be handled. # Optional. Configuration for how sensitive data should be redacted.
          "deidentifyTemplate": "A String", # Optional. [DLP](https://cloud.google.com/dlp/docs) deidentify template name to instruct on how to de-identify content. Format: `projects/{project}/locations/{location}/deidentifyTemplates/{deidentify_template}`
          "enableRedaction": True or False, # Optional. If true, redaction will be applied in various logging scenarios, including conversation history, Cloud Logging and audio recording.
          "inspectTemplate": "A String", # Optional. [DLP](https://cloud.google.com/dlp/docs) inspect template name to configure detection of sensitive data types. Format: `projects/{project}/locations/{location}/inspectTemplates/{inspect_template}`
        },
      },
      "metadata": { # Optional. Metadata about the app. This field can be used to store additional information relevant to the app's details or intended usages.
        "a_key": "A String",
      },
      "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. The default LLM model settings for the app. Individual resources (e.g. agents, guardrails) can override these configurations as needed.
        "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
        "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
      },
      "name": "A String", # Identifier. The unique identifier of the app. Format: `projects/{project}/locations/{location}/apps/{app}`
      "pinned": True or False, # Optional. Whether the app is pinned in the app list.
      "predefinedVariableDeclarations": [ # Output only. The declarations of predefined variables for the app.
        { # Defines the structure and metadata for a variable.
          "description": "A String", # Required. The description of the variable.
          "name": "A String", # Required. The name of the variable. The name must start with a letter or underscore and contain only letters, numbers, or underscores.
          "schema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Required. The schema of the variable.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
      ],
      "rootAgent": "A String", # Optional. The root agent is the entry point of the app. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
      "timeZoneSettings": { # TimeZone settings of the app. # Optional. TimeZone settings of the app.
        "timeZone": "A String", # Optional. The time zone of the app from the [time zone database](https://www.iana.org/time-zones), e.g., America/Los_Angeles, Europe/Paris.
      },
      "toolExecutionMode": "A String", # Optional. The tool execution mode for the app. If not provided, will default to PARALLEL.
      "updateTime": "A String", # Output only. Timestamp when the app was last updated.
      "variableDeclarations": [ # Optional. The declarations of the variables.
        { # Defines the structure and metadata for a variable.
          "description": "A String", # Required. The description of the variable.
          "name": "A String", # Required. The name of the variable. The name must start with a letter or underscore and contain only letters, numbers, or underscores.
          "schema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Required. The schema of the variable.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
      ],
    },
    "examples": [ # Optional. List of examples in the app.
      { # An example represents a sample conversation between the user and the agent(s).
        "createTime": "A String", # Output only. Timestamp when the example was created.
        "description": "A String", # Optional. Human-readable description of the example.
        "displayName": "A String", # Required. Display name of the example.
        "entryAgent": "A String", # Optional. The agent that initially handles the conversation. If not specified, the example represents a conversation that is handled by the root agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "invalid": True or False, # Output only. The example may become invalid if referencing resources are deleted. Invalid examples will not be used as few-shot examples.
        "messages": [ # Optional. The collection of messages that make up the conversation.
          { # A message within a conversation.
            "chunks": [ # Optional. Content of the message as a series of chunks.
              { # A chunk of content within a message.
                "agentTransfer": { # Represents an event indicating the transfer of a conversation to a different agent. # Optional. Agent transfer event.
                  "displayName": "A String", # Output only. Display name of the agent.
                  "targetAgent": "A String", # Required. The agent to which the conversation is being transferred. The agent will handle the conversation from this point forward. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
                },
                "defaultVariables": { # A struct represents default variables at the start of the conversation, keyed by variable names.
                  "a_key": "", # Properties of the object.
                },
                "image": { # Represents an image input or output in the conversation. # Optional. Image data.
                  "data": "A String", # Required. Raw bytes of the image.
                  "mimeType": "A String", # Required. The IANA standard MIME type of the source data. Supported image types includes: * image/png * image/jpeg * image/webp
                },
                "payload": { # Optional. Custom payload data.
                  "a_key": "", # Properties of the object.
                },
                "text": "A String", # Optional. Text data.
                "toolCall": { # Request for the client or the agent to execute the specified tool. # Optional. Tool execution request.
                  "args": { # Optional. The input parameters and values for the tool in JSON object format.
                    "a_key": "", # Properties of the object.
                  },
                  "displayName": "A String", # Output only. Display name of the tool.
                  "id": "A String", # Optional. The unique identifier of the tool call. If populated, the client should return the execution result with the matching ID in ToolResponse.
                  "tool": "A String", # Optional. The name of the tool to execute. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
                  "toolsetTool": { # A tool that is created from a toolset. # Optional. The toolset tool to execute.
                    "toolId": "A String", # Optional. The tool ID to filter the tools to retrieve the schema for.
                    "toolset": "A String", # Required. The resource name of the Toolset from which this tool is derived. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
                  },
                },
                "toolResponse": { # The execution result of a specific tool from the client or the agent. # Optional. Tool execution response.
                  "displayName": "A String", # Output only. Display name of the tool.
                  "id": "A String", # Optional. The matching ID of the tool call the response is for.
                  "response": { # Required. The tool execution result in JSON object format. Use "output" key to specify tool response and "error" key to specify error details (if any). If "output" and "error" keys are not specified, then whole "response" is treated as tool execution result.
                    "a_key": "", # Properties of the object.
                  },
                  "tool": "A String", # Optional. The name of the tool to execute. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
                  "toolsetTool": { # A tool that is created from a toolset. # Optional. The toolset tool that got executed.
                    "toolId": "A String", # Optional. The tool ID to filter the tools to retrieve the schema for.
                    "toolset": "A String", # Required. The resource name of the Toolset from which this tool is derived. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
                  },
                },
                "transcript": "A String", # Optional. Transcript associated with the audio.
                "updatedVariables": { # A struct represents variables that were updated in the conversation, keyed by variable names.
                  "a_key": "", # Properties of the object.
                },
              },
            ],
            "eventTime": "A String", # Optional. Timestamp when the message was sent or received. Should not be used if the message is part of an example.
            "role": "A String", # Optional. The role within the conversation, e.g., user, agent.
          },
        ],
        "name": "A String", # Identifier. The unique identifier of the example. Format: `projects/{project}/locations/{location}/apps/{app}/examples/{example}`
        "updateTime": "A String", # Output only. Timestamp when the example was last updated.
      },
    ],
    "guardrails": [ # Optional. List of guardrails in the app.
      { # Guardrail contains a list of checks and balances to keep the agents safe and secure.
        "action": { # Action that is taken when a certain precondition is met. # Optional. Action to take when the guardrail is triggered.
          "generativeAnswer": { # The agent will immediately respond with a generative answer. # Optional. Respond with a generative answer.
            "prompt": "A String", # Required. The prompt to use for the generative answer.
          },
          "respondImmediately": { # The agent will immediately respond with a preconfigured response. # Optional. Immediately respond with a preconfigured response.
            "responses": [ # Required. The canned responses for the agent to choose from. The response is chosen randomly.
              { # Represents a response from the agent.
                "disabled": True or False, # Optional. Whether the response is disabled. Disabled responses are not used by the agent.
                "text": "A String", # Required. Text for the agent to respond with.
              },
            ],
          },
          "transferAgent": { # The agent will transfer the conversation to a different agent. # Optional. Transfer the conversation to a different agent.
            "agent": "A String", # Required. The name of the agent to transfer the conversation to. The agent must be in the same app as the current agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
          },
        },
        "codeCallback": { # Guardrail that blocks the conversation based on the code callbacks provided. # Optional. Guardrail that potentially blocks the conversation based on the result of the callback execution.
          "afterAgentCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute after the agent is called. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "afterModelCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute after the model is called. If there are multiple calls to the model, the callback will be executed multiple times. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "beforeAgentCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute before the agent is called. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
          "beforeModelCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute before the model is called. If there are multiple calls to the model, the callback will be executed multiple times. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
            "description": "A String", # Optional. Human-readable description of the callback.
            "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
            "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
            "pythonCode": "A String", # Required. The python code to execute for the callback.
          },
        },
        "contentFilter": { # Guardrail that bans certain content from being used in the conversation. # Optional. Guardrail that bans certain content from being used in the conversation.
          "bannedContents": [ # Optional. List of banned phrases. Applies to both user inputs and agent responses.
            "A String",
          ],
          "bannedContentsInAgentResponse": [ # Optional. List of banned phrases. Applies only to agent responses.
            "A String",
          ],
          "bannedContentsInUserInput": [ # Optional. List of banned phrases. Applies only to user inputs.
            "A String",
          ],
          "disregardDiacritics": True or False, # Optional. If true, diacritics are ignored during matching.
          "matchType": "A String", # Required. Match type for the content filter.
        },
        "createTime": "A String", # Output only. Timestamp when the guardrail was created.
        "description": "A String", # Optional. Description of the guardrail.
        "displayName": "A String", # Required. Display name of the guardrail.
        "enabled": True or False, # Optional. Whether the guardrail is enabled.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "llmPolicy": { # Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification. # Optional. Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification.
          "allowShortUtterance": True or False, # Optional. By default, the LLM policy check is bypassed for short utterances. Enabling this setting applies the policy check to all utterances, including those that would normally be skipped.
          "failOpen": True or False, # Optional. If an error occurs during the policy check, fail open and do not trigger the guardrail.
          "maxConversationMessages": 42, # Optional. When checking this policy, consider the last 'n' messages in the conversation. When not set a default value of 10 will be used.
          "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Model settings.
            "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
            "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
          },
          "policyScope": "A String", # Required. Defines when to apply the policy check during the conversation. If set to `POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input. When applying the policy to the agent response, additional latency will be introduced before the agent can respond.
          "prompt": "A String", # Required. Policy prompt.
        },
        "llmPromptSecurity": { # Guardrail that blocks the conversation if the input is considered unsafe based on the LLM classification. # Optional. Guardrail that blocks the conversation if the prompt is considered unsafe based on the LLM classification.
          "customPolicy": { # Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification. # Optional. Use a user-defined LlmPolicy to configure the security guardrail.
            "allowShortUtterance": True or False, # Optional. By default, the LLM policy check is bypassed for short utterances. Enabling this setting applies the policy check to all utterances, including those that would normally be skipped.
            "failOpen": True or False, # Optional. If an error occurs during the policy check, fail open and do not trigger the guardrail.
            "maxConversationMessages": 42, # Optional. When checking this policy, consider the last 'n' messages in the conversation. When not set a default value of 10 will be used.
            "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Model settings.
              "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
              "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
            },
            "policyScope": "A String", # Required. Defines when to apply the policy check during the conversation. If set to `POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input. When applying the policy to the agent response, additional latency will be introduced before the agent can respond.
            "prompt": "A String", # Required. Policy prompt.
          },
          "defaultSettings": { # Configuration for default system security settings. # Optional. Use the system's predefined default security settings. To select this mode, include an empty 'default_settings' message in the request. The 'default_prompt_template' field within will be populated by the server in the response.
            "defaultPromptTemplate": "A String", # Output only. The default prompt template used by the system. This field is for display purposes to show the user what prompt the system uses by default. It is OUTPUT_ONLY.
          },
          "failOpen": True or False, # Optional. Determines the behavior when the guardrail encounters an LLM error. - If true: the guardrail is bypassed. - If false (default): the guardrail triggers/blocks. Note: If a custom policy is provided, this field is ignored in favor of the policy's 'fail_open' configuration.
        },
        "modelSafety": { # Model safety settings overrides. When this is set, it will override the default settings and trigger the guardrail if the response is considered unsafe. # Optional. Guardrail that blocks the conversation if the LLM response is considered unsafe based on the model safety settings.
          "safetySettings": [ # Required. List of safety settings.
            { # Safety setting.
              "category": "A String", # Required. The harm category.
              "threshold": "A String", # Required. The harm block threshold.
            },
          ],
        },
        "name": "A String", # Identifier. The unique identifier of the guardrail. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
        "updateTime": "A String", # Output only. Timestamp when the guardrail was last updated.
      },
    ],
    "tools": [ # Optional. List of tools in the app.
      { # A tool represents an action that the CES agent can take to achieve certain goals.
        "clientFunction": { # Represents a client-side function that the agent can invoke. When the tool is chosen by the agent, control is handed off to the client. The client is responsible for executing the function and returning the result as a ToolResponse to continue the interaction with the agent. # Optional. The client function.
          "description": "A String", # Optional. The function description.
          "name": "A String", # Required. The function name.
          "parameters": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the function parameters.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "response": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the function response.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
        },
        "connectorTool": { # A ConnectorTool allows connections to different integrations. See: https://cloud.google.com/integration-connectors/docs/overview. # Optional. The Integration Connector tool.
          "action": { # Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details. # Required. Action for the tool to use.
            "connectionActionId": "A String", # ID of a Connection action for the tool to use.
            "entityOperation": { # Entity CRUD operation specification. # Entity operation configuration for the tool to use.
              "entityId": "A String", # Required. ID of the entity.
              "operation": "A String", # Required. Operation to perform on the entity.
            },
            "inputFields": [ # Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
              "A String",
            ],
            "outputFields": [ # Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
              "A String",
            ],
          },
          "authConfig": { # End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`. # Optional. Configures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. **Note**: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the ConnectorTool creation will fail. See https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override for details.
            "oauth2AuthCodeConfig": { # Oauth 2.0 Authorization Code authentication configuration. # Oauth 2.0 Authorization Code authentication.
              "oauthToken": "A String", # Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
            },
            "oauth2JwtBearerConfig": { # JWT Profile Oauth 2.0 Authorization Grant authentication configuration. # JWT Profile Oauth 2.0 Authorization Grant authentication.
              "clientKey": "A String", # Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
              "issuer": "A String", # Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
              "subject": "A String", # Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
            },
          },
          "connection": "A String", # Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
          "description": "A String", # Optional. The description of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
          "name": "A String", # Optional. The name of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
        },
        "createTime": "A String", # Output only. Timestamp when the tool was created.
        "dataStoreTool": { # Tool to retrieve from Vertex AI Search datastore or engine for grounding. Accepts either a datastore or an engine, but not both. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction. # Optional. The data store tool.
          "boostSpecs": [ # Optional. Boost specification to boost certain documents.
            { # Boost specifications to boost certain documents. For more information, please refer to https://cloud.google.com/generative-ai-app-builder/docs/boosting.
              "dataStores": [ # Required. The Data Store where the boosting configuration is applied. Full resource name of DataStore, such as projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}.
                "A String",
              ],
              "spec": [ # Required. A list of boosting specifications.
                { # Boost specification to boost certain documents.
                  "conditionBoostSpecs": [ # Required. A list of boosting specifications.
                    { # Boost specification for a condition.
                      "boost": 3.14, # Optional. Strength of the boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the suggestions a big promotion. However, it does not necessarily mean that the top result will be a boosted suggestion. Setting to -1.0 gives the suggestions a big demotion. However, other suggestions that are relevant might still be shown. Setting to 0.0 means no boost applied. The boosting condition is ignored.
                      "boostControlSpec": { # Specification for custom ranking based on customer specified attribute value. It provides more controls for customized ranking than the simple (condition, boost) combination above. # Optional. Complex specification for custom ranking based on customer defined attribute value.
                        "attributeType": "A String", # Optional. The attribute type to be used to determine the boost amount. The attribute value can be derived from the field value of the specified field_name. In the case of numerical it is straightforward i.e. attribute_value = numerical_field_value. In the case of freshness however, attribute_value = (time.now() - datetime_field_value).
                        "controlPoints": [ # Optional. The control points used to define the curve. The monotonic function (defined through the interpolation_type above) passes through the control points listed here.
                          { # The control points used to define the curve. The curve defined through these control points can only be monotonically increasing or decreasing(constant values are acceptable).
                            "attributeValue": "A String", # Optional. Can be one of: 1. The numerical field value. 2. The duration spec for freshness: The value must be formatted as an XSD `dayTimeDuration` value (a restricted subset of an ISO 8601 duration value). The pattern for this is: `nDnM]`.
                            "boostAmount": 3.14, # Optional. The value between -1 to 1 by which to boost the score if the attribute_value evaluates to the value specified above.
                          },
                        ],
                        "fieldName": "A String", # Optional. The name of the field whose value will be used to determine the boost amount.
                        "interpolationType": "A String", # Optional. The interpolation type to be applied to connect the control points listed below.
                      },
                      "condition": "A String", # Required. An expression which specifies a boost condition. The syntax is the same as filter expression syntax. Currently, the only supported condition is a list of BCP-47 lang codes. Example: To boost suggestions in languages en or fr: (lang_code: ANY("en", "fr"))
                    },
                  ],
                },
              ],
            },
          ],
          "dataStoreSource": { # Configuration for searching within a specific DataStore. # Optional. Search within a single specific DataStore.
            "dataStore": { # A DataStore resource in Vertex AI Search. # Optional. The data store.
              "connectorConfig": { # The connector config for the data store connection. # Output only. The connector config for the data store connection.
                "collection": "A String", # Resource name of the collection the data store belongs to.
                "collectionDisplayName": "A String", # Display name of the collection the data store belongs to.
                "dataSource": "A String", # The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
              },
              "createTime": "A String", # Output only. Timestamp when the data store was created.
              "displayName": "A String", # Output only. The display name of the data store.
              "documentProcessingMode": "A String", # Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
              "name": "A String", # Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
              "type": "A String", # Output only. The type of the data store. This field is readonly and populated by the server.
            },
            "filter": "A String", # Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
          },
          "description": "A String", # Optional. The tool description.
          "engineSource": { # Configuration for searching within an Engine, potentially targeting specific DataStores. # Optional. Search within an Engine (potentially across multiple DataStores).
            "dataStoreSources": [ # Optional. Use to target specific DataStores within the Engine. If empty, the search applies to all DataStores associated with the Engine.
              { # Configuration for searching within a specific DataStore.
                "dataStore": { # A DataStore resource in Vertex AI Search. # Optional. The data store.
                  "connectorConfig": { # The connector config for the data store connection. # Output only. The connector config for the data store connection.
                    "collection": "A String", # Resource name of the collection the data store belongs to.
                    "collectionDisplayName": "A String", # Display name of the collection the data store belongs to.
                    "dataSource": "A String", # The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
                  },
                  "createTime": "A String", # Output only. Timestamp when the data store was created.
                  "displayName": "A String", # Output only. The display name of the data store.
                  "documentProcessingMode": "A String", # Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
                  "name": "A String", # Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                  "type": "A String", # Output only. The type of the data store. This field is readonly and populated by the server.
                },
                "filter": "A String", # Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
              },
            ],
            "engine": "A String", # Required. Full resource name of the Engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
            "filter": "A String", # Optional. A filter applied to the search across the Engine. Not relevant and not used if 'data_store_sources' is provided. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
          },
          "filterParameterBehavior": "A String", # Optional. The filter parameter behavior.
          "modalityConfigs": [ # Optional. The modality configs for the data store.
            { # If specified, will apply the given configuration for the specified modality.
              "groundingConfig": { # Grounding configuration. # Optional. The grounding configuration.
                "disabled": True or False, # Optional. Whether grounding is disabled.
                "groundingLevel": 3.14, # Optional. The groundedness threshold of the answer based on the retrieved sources. The value has a configurable range of [1, 5]. The level is used to threshold the groundedness of the answer, meaning that all responses with a groundedness score below the threshold will fall back to returning relevant snippets only. For example, a level of 3 means that the groundedness score must be 3 or higher for the response to be returned.
              },
              "modalityType": "A String", # Required. The modality type.
              "rewriterConfig": { # Rewriter configuration. # Optional. The rewriter config.
                "disabled": True or False, # Optional. Whether the rewriter is disabled.
                "modelSettings": { # Model settings contains various configurations for the LLM model. # Required. Configurations for the LLM model.
                  "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                  "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                },
                "prompt": "A String", # Optional. The prompt definition. If not set, default prompt will be used.
              },
              "summarizationConfig": { # Summarization configuration. # Optional. The summarization config.
                "disabled": True or False, # Optional. Whether summarization is disabled.
                "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Configurations for the LLM model.
                  "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                  "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                },
                "prompt": "A String", # Optional. The prompt definition. If not set, default prompt will be used.
              },
            },
          ],
          "name": "A String", # Required. The data store tool name.
        },
        "displayName": "A String", # Output only. The display name of the tool, derived based on the tool's type. For example, display name of a ClientFunction is derived from its `name` property.
        "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "executionType": "A String", # Optional. The execution type of the tool.
        "fileSearchTool": { # The file search tool allows the agent to search across the files uploaded by the app/agent developer. It has presets to give relatively good quality search over the uploaded files and summarization of the retrieved results. # Optional. The file search tool.
          "corpusType": "A String", # Optional. The type of the corpus. Default is FULLY_MANAGED.
          "description": "A String", # Optional. The tool description.
          "fileCorpus": "A String", # Optional. The corpus where files are stored. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
          "name": "A String", # Required. The tool name.
        },
        "generatedSummary": "A String", # Output only. If the tool is generated by the LLM assistant, this field contains a descriptive summary of the generation.
        "googleSearchTool": { # Represents a tool to perform Google web searches for grounding. See https://cloud.google.com/customer-engagement-ai/conversational-agents/ps/tool#google-search. # Optional. The google search tool.
          "contextUrls": [ # Optional. Content will be fetched directly from these URLs for context and grounding. Example: "https://example.com/path.html". A maximum of 20 URLs are allowed.
            "A String",
          ],
          "description": "A String", # Optional. Description of the tool's purpose.
          "excludeDomains": [ # Optional. List of domains to be excluded from the search results. Example: "example.com". A maximum of 2000 domains can be excluded.
            "A String",
          ],
          "name": "A String", # Required. The name of the tool.
          "preferredDomains": [ # Optional. Specifies domains to restrict search results to. Example: "example.com", "another.site". A maximum of 20 domains can be specified.
            "A String",
          ],
          "promptConfig": { # Prompt settings used by the model when processing or summarizing the google search results. # Optional. Prompt instructions passed to planner on how the search results should be processed for text and voice.
            "textPrompt": "A String", # Optional. Defines the prompt used for the system instructions when interacting with the agent in chat conversations. If not set, default prompt will be used.
            "voicePrompt": "A String", # Optional. Defines the prompt used for the system instructions when interacting with the agent in voice conversations. If not set, default prompt will be used.
          },
        },
        "mcpTool": { # An MCP tool. See https://modelcontextprotocol.io/specification/2025-06-18/server/tools for more details. # Optional. The MCP tool. An MCP tool cannot be created or updated directly and is managed by the MCP toolset.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required to execute the tool against the MCP server. For bearer token authentication, the token applies only to tool execution, not to listing tools. This requires that tools can be listed without authentication.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "description": "A String", # Optional. The description of the MCP tool.
          "inputSchema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the input arguments of the MCP tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "name": "A String", # Required. The name of the MCP tool.
          "outputSchema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the output arguments of the MCP tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "serverAddress": "A String", # Required. The server address of the MCP server, e.g., "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. This is the same as the server_address in the McpToolset. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration for VPC-SC, used to resolve service names within a perimeter.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client should trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
        },
        "name": "A String", # Identifier. The unique identifier of the tool. Format: - `projects/{project}/locations/{location}/apps/{app}/tools/{tool}` for ## standalone tools. `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}/tools/{tool}` for tools retrieved from a toolset. These tools are dynamic and output-only, they cannot be referenced directly where a tool is expected.
        "openApiTool": { # A remote API tool defined by an OpenAPI schema. # Optional. The open API tool.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required by the API.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "description": "A String", # Optional. The description of the tool. If not provided, the description of the tool will be derived from the OpenAPI schema, from `operation.description` or `operation.summary`.
          "ignoreUnknownFields": True or False, # Optional. If true, the agent will ignore unknown fields in the API response.
          "name": "A String", # Optional. The name of the tool. If not provided, the name of the tool will be derived from the OpenAPI schema, from `operation.operationId`.
          "openApiSchema": "A String", # Required. The OpenAPI schema in JSON or YAML format.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client will trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
          "url": "A String", # Optional. The server URL of the Open API schema. This field is only set in tools in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
        },
        "pythonFunction": { # A Python function tool. # Optional. The python function tool.
          "description": "A String", # Output only. The description of the Python function, parsed from the python code's docstring.
          "name": "A String", # Optional. The name of the Python function to execute. Must match a Python function name defined in the python code. Case sensitive. If the name is not provided, the first function defined in the python code will be used.
          "pythonCode": "A String", # Optional. The Python code to execute for the tool.
        },
        "systemTool": { # Pre-defined system tool. # Optional. The system tool.
          "description": "A String", # Output only. The description of the system tool.
          "name": "A String", # Required. The name of the system tool.
        },
        "toolFakeConfig": { # Configuration for tool behavior in fake mode. # Optional. Configuration for tool behavior in fake mode.
          "codeBlock": { # A code block to be executed instead of a real tool call. # Optional. Code block which will be executed instead of a real tool call.
            "pythonCode": "A String", # Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
          },
          "enableFakeMode": True or False, # Optional. Whether the tool is using fake mode.
        },
        "updateTime": "A String", # Output only. Timestamp when the tool was last updated.
        "widgetTool": { # Represents a widget tool that the agent can invoke. When the tool is chosen by the agent, agent will return the widget to the client. The client is responsible for processing the widget and generating the next user query to continue the interaction with the agent. # Optional. The widget tool.
          "description": "A String", # Optional. The description of the widget tool.
          "name": "A String", # Required. The display name of the widget tool.
          "parameters": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The input parameters of the widget tool.
            "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
            "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
              # Object with schema name: Schema
            ],
            "default": "", # Optional. Default value of the data.
            "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
              "a_key": # Object with schema name: Schema
            },
            "description": "A String", # Optional. The description of the data.
            "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
              "A String",
            ],
            "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
            "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
            "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
            "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
            "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
            "nullable": True or False, # Optional. Indicates if the value may be null.
            "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
              # Object with schema name: Schema
            ],
            "properties": { # Optional. Properties of Type.OBJECT.
              "a_key": # Object with schema name: Schema
            },
            "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
            "required": [ # Optional. Required properties of Type.OBJECT.
              "A String",
            ],
            "title": "A String", # Optional. The title of the schema.
            "type": "A String", # Required. The type of the data.
            "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
          },
          "widgetType": "A String", # Optional. The type of the widget tool. If not specified, the default type will be CUSTOMIZED.
        },
      },
    ],
    "toolsets": [ # Optional. List of toolsets in the app.
      { # A toolset represents a group of dynamically managed tools that can be used by the agent.
        "connectorToolset": { # A toolset that generates tools from an Integration Connectors Connection. # Optional. A toolset that generates tools from an Integration Connectors Connection.
          "authConfig": { # End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`. # Optional. Configures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. **Note**: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the Toolset creation will fail. See: https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override
            "oauth2AuthCodeConfig": { # Oauth 2.0 Authorization Code authentication configuration. # Oauth 2.0 Authorization Code authentication.
              "oauthToken": "A String", # Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
            },
            "oauth2JwtBearerConfig": { # JWT Profile Oauth 2.0 Authorization Grant authentication configuration. # JWT Profile Oauth 2.0 Authorization Grant authentication.
              "clientKey": "A String", # Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
              "issuer": "A String", # Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
              "subject": "A String", # Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
            },
          },
          "connection": "A String", # Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
          "connectorActions": [ # Required. The list of connector actions/entity operations to generate tools for.
            { # Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details.
              "connectionActionId": "A String", # ID of a Connection action for the tool to use.
              "entityOperation": { # Entity CRUD operation specification. # Entity operation configuration for the tool to use.
                "entityId": "A String", # Required. ID of the entity.
                "operation": "A String", # Required. Operation to perform on the entity.
              },
              "inputFields": [ # Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
                "A String",
              ],
              "outputFields": [ # Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
                "A String",
              ],
            },
          ],
        },
        "createTime": "A String", # Output only. Timestamp when the toolset was created.
        "description": "A String", # Optional. The description of the toolset.
        "displayName": "A String", # Optional. The display name of the toolset. Must be unique within the same app.
        "etag": "A String", # ETag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
        "executionType": "A String", # Optional. The execution type of the tools in the toolset.
        "mcpToolset": { # A toolset that contains a list of tools that are offered by the MCP server. # Optional. A toolset that contains a list of tools that are offered by the MCP server.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required to access tools and execute a tool against the MCP server. For bearer token authentication, the token applies only to tool execution, not to listing tools. This requires that tools can be listed without authentication.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "serverAddress": "A String", # Required. The address of the MCP server, for example, "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration for VPC-SC, used to resolve service names within a perimeter.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client should trust.
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
        },
        "name": "A String", # Identifier. The unique identifier of the toolset. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
        "openApiToolset": { # A toolset that contains a list of tools that are defined by an OpenAPI schema. # Optional. A toolset that contains a list of tools that are defined by an OpenAPI schema.
          "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required by the API.
            "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
              "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
              "requestLocation": "A String", # Required. Key location in the request.
            },
            "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
              "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
            },
            "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
              "clientId": "A String", # Required. The client ID from the OAuth provider.
              "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "oauthGrantType": "A String", # Required. OAuth grant types.
              "scopes": [ # Optional. The OAuth scopes to grant.
                "A String",
              ],
              "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
            },
            "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
              "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                "A String",
              ],
              "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
            },
          },
          "ignoreUnknownFields": True or False, # Optional. If true, the agent will ignore unknown fields in the API response for all operations defined in the OpenAPI schema.
          "openApiSchema": "A String", # Required. The OpenAPI schema of the toolset.
          "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration.
            "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
          },
          "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates
            "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
              { # The CA certificate.
                "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
              },
            ],
          },
          "url": "A String", # Optional. The server URL of the Open API schema. This field is only set in toolsets in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
        },
        "toolFakeConfig": { # Configuration for tool behavior in fake mode. # Optional. Configuration for tools behavior in fake mode.
          "codeBlock": { # A code block to be executed instead of a real tool call. # Optional. Code block which will be executed instead of a real tool call.
            "pythonCode": "A String", # Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
          },
          "enableFakeMode": True or False, # Optional. Whether the tool is using fake mode.
        },
        "updateTime": "A String", # Output only. Timestamp when the toolset was last updated.
      },
    ],
  },
}
list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)
Lists all app versions in the given app.

Args:
  parent: string, Required. The resource name of the app to list app versions from. (required)
  filter: string, Optional. Filter to be applied when listing the app versions. See https://google.aip.dev/160 for more details.
  orderBy: string, Optional. Field to sort by. Only "name" and "create_time" is supported. See https://google.aip.dev/132#ordering for more details.
  pageSize: integer, Optional. Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.
  pageToken: string, Optional. The next_page_token value returned from a previous list AgentService.ListAppVersions call.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for AgentService.ListAppVersions.
  "appVersions": [ # The list of app versions.
    { # In Customer Engagement Suite (CES), an app version is a snapshot of the app at a specific point in time. It is immutable and cannot be modified once created.
      "createTime": "A String", # Output only. Timestamp when the app version was created.
      "creator": "A String", # Output only. Email of the user who created the app version.
      "description": "A String", # Optional. The description of the app version.
      "displayName": "A String", # Optional. The display name of the app version.
      "etag": "A String", # Output only. Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
      "name": "A String", # Identifier. The unique identifier of the app version. Format: `projects/{project}/locations/{location}/apps/{app}/versions/{version}`
      "snapshot": { # A snapshot of the app. # Output only. The snapshot of the app when the version is created.
        "agents": [ # Optional. List of agents in the app.
          { # An agent acts as the fundamental building block that provides instructions to the Large Language Model (LLM) for executing specific tasks.
            "afterAgentCallbacks": [ # Optional. The callbacks to execute after the agent is called. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
              { # A callback defines the custom logic to be executed at various stages of agent interaction.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
            ],
            "afterModelCallbacks": [ # Optional. The callbacks to execute after the model is called. If there are multiple calls to the model, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
              { # A callback defines the custom logic to be executed at various stages of agent interaction.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
            ],
            "afterToolCallbacks": [ # Optional. The callbacks to execute after the tool is invoked. If there are multiple tool invocations, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
              { # A callback defines the custom logic to be executed at various stages of agent interaction.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
            ],
            "beforeAgentCallbacks": [ # Optional. The callbacks to execute before the agent is called. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
              { # A callback defines the custom logic to be executed at various stages of agent interaction.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
            ],
            "beforeModelCallbacks": [ # Optional. The callbacks to execute before the model is called. If there are multiple calls to the model, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
              { # A callback defines the custom logic to be executed at various stages of agent interaction.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
            ],
            "beforeToolCallbacks": [ # Optional. The callbacks to execute before the tool is invoked. If there are multiple tool invocations, the callback will be executed multiple times. The provided callbacks are executed sequentially in the exact order they are given in the list. If a callback returns an overridden response, execution stops and any remaining callbacks are skipped.
              { # A callback defines the custom logic to be executed at various stages of agent interaction.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
            ],
            "childAgents": [ # Optional. List of child agents in the agent tree. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
              "A String",
            ],
            "createTime": "A String", # Output only. Timestamp when the agent was created.
            "description": "A String", # Optional. Human-readable description of the agent.
            "displayName": "A String", # Required. Display name of the agent.
            "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
            "generatedSummary": "A String", # Output only. If the agent is generated by the LLM assistant, this field contains a descriptive summary of the generation.
            "guardrails": [ # Optional. List of guardrails for the agent. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
              "A String",
            ],
            "instruction": "A String", # Optional. Instructions for the LLM model to guide the agent's behavior.
            "llmAgent": { # Default agent type. The agent uses instructions and callbacks specified in the agent to perform the task using a large language model. # Optional. The default agent type.
            },
            "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Configurations for the LLM model.
              "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
              "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
            },
            "name": "A String", # Identifier. The unique identifier of the agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
            "remoteDialogflowAgent": { # The agent which will transfer execution to a remote [Dialogflow CX](https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent) agent. The Dialogflow agent will process subsequent user queries until the session ends or flow ends, and the control is transferred back to the parent CES agent. # Optional. The remote [Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents) agent to be used for the agent execution. If this field is set, all other agent level properties will be ignored. Note: If the Dialogflow agent is in a different project from the app, you should grant `roles/dialogflow.client` to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "agent": "A String", # Required. The [Dialogflow](https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent) agent resource name. Format: `projects/{project}/locations/{location}/agents/{agent}`
              "environmentId": "A String", # Optional. The environment ID of the Dialogflow agent to be used for the agent execution. If not specified, the draft environment will be used.
              "flowId": "A String", # Optional. The flow ID of the flow in the Dialogflow agent.
              "inputVariableMapping": { # Optional. The mapping of the app variables names to the Dialogflow session parameters names to be sent to the Dialogflow agent as input.
                "a_key": "A String",
              },
              "outputVariableMapping": { # Optional. The mapping of the Dialogflow session parameters names to the app variables names to be sent back to the CES agent after the Dialogflow agent execution ends.
                "a_key": "A String",
              },
              "respectResponseInterruptionSettings": True or False, # Optional. Indicates whether to respect the message-level interruption settings configured in the Dialogflow agent. * If false: all response messages from the Dialogflow agent follow the app-level barge-in settings. * If true: only response messages with [`allow_playback_interruption`](https://docs.cloud.google.com/dialogflow/cx/docs/reference/rpc/google.cloud.dialogflow.cx.v3#text) set to true will be interruptable, all other messages follow the app-level barge-in settings.
            },
            "tools": [ # Optional. List of available tools for the agent. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
              "A String",
            ],
            "toolsets": [ # Optional. List of toolsets for the agent.
              { # A toolset with a selection of its tools.
                "toolIds": [ # Optional. The tools IDs to filter the toolset.
                  "A String",
                ],
                "toolset": "A String", # Required. The resource name of the toolset. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
              },
            ],
            "transferRules": [ # Optional. Agent transfer rules. If multiple rules match, the first one in the list will be used.
              { # Rule for transferring to a specific agent.
                "childAgent": "A String", # Required. The resource name of the child agent the rule applies to. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
                "deterministicTransfer": { # Deterministic transfer rule. When the condition evaluates to true, the transfer occurs. # Optional. A rule that immediately transfers to the target agent when the condition is met.
                  "expressionCondition": { # Expression condition based on session state. # Optional. A rule that evaluates a session state condition. If the condition evaluates to true, the transfer occurs.
                    "expression": "A String", # Required. The string representation of cloud.api.Expression condition.
                  },
                  "pythonCodeCondition": { # Python code block to evaluate the condition. # Optional. A rule that uses Python code block to evaluate the conditions. If the condition evaluates to true, the transfer occurs.
                    "pythonCode": "A String", # Required. The python code to execute.
                  },
                },
                "direction": "A String", # Required. The direction of the transfer.
                "disablePlannerTransfer": { # A rule that prevents the planner from transferring to the target agent. # Optional. Rule that prevents the planner from transferring to the target agent.
                  "expressionCondition": { # Expression condition based on session state. # Required. If the condition evaluates to true, planner will not be allowed to transfer to the target agent.
                    "expression": "A String", # Required. The string representation of cloud.api.Expression condition.
                  },
                },
              },
            ],
            "updateTime": "A String", # Output only. Timestamp when the agent was last updated.
          },
        ],
        "app": { # An app serves as a top-level container for a group of agents, including the root agent and its sub-agents, along with their associated configurations. These agents work together to achieve specific goals within the app's context. # Optional. The basic settings for the app.
          "audioProcessingConfig": { # Configuration for how the input and output audio should be processed and delivered. # Optional. Audio processing configuration of the app.
            "ambientSoundConfig": { # Configuration for the ambient sound to be played with the synthesized agent response, to enhance the naturalness of the conversation. # Optional. Configuration for the ambient sound to be played with the synthesized agent response, to enhance the naturalness of the conversation.
              "gcsUri": "A String", # Optional. Ambient noise as a mono-channel, 16kHz WAV file stored in [Cloud Storage](https://cloud.google.com/storage). Note: Please make sure the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com` has `storage.objects.get` permission to the Cloud Storage object.
              "prebuiltAmbientNoise": "A String", # Optional. Deprecated: `prebuilt_ambient_noise` is deprecated in favor of `prebuilt_ambient_sound`.
              "prebuiltAmbientSound": "A String", # Optional. Name of the prebuilt ambient sound. Valid values are: - "coffee_shop" - "keyboard" - "keypad" - "hum" - "office_1" - "office_2" - "office_3" - "room_1" - "room_2" - "room_3" - "room_4" - "room_5" - "air_conditioner"
              "volumeGainDb": 3.14, # Optional. Volume gain (in dB) of the normal native volume supported by ambient noise, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that.
            },
            "bargeInConfig": { # Configuration for how the user barge-in activities should be handled. # Optional. Configures the agent behavior for the user barge-in activities.
              "bargeInAwareness": True or False, # Optional. If enabled, the agent will adapt its next response based on the assumption that the user hasn't heard the full preceding agent message. This should not be used in scenarios where agent responses are displayed visually.
              "disableBargeIn": True or False, # Optional. Disables user barge-in while the agent is speaking. If true, user input during agent response playback will be ignored. Deprecated: `disable_barge_in` is deprecated in favor of `disable_barge_in_control` in ChannelProfile.
            },
            "inactivityTimeout": "A String", # Optional. The duration of user inactivity (no speech or interaction) before the agent prompts the user for reengagement. If not set, the agent will not prompt the user for reengagement.
            "synthesizeSpeechConfigs": { # Optional. Configuration of how the agent response should be synthesized, mapping from the language code to SynthesizeSpeechConfig. If the configuration for the specified language code is not found, the configuration for the root language code will be used. For example, if the map contains "en-us" and "en", and the specified language code is "en-gb", then "en" configuration will be used. Note: Language code is case-insensitive.
              "a_key": { # Configuration for how the agent response should be synthesized.
                "speakingRate": 3.14, # Optional. The speaking rate/speed in the range [0.25, 2.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. Values outside of the range [0.25, 2.0] will return an error.
                "voice": "A String", # Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices) from Cloud Text-to-Speech.
              },
            },
          },
          "clientCertificateSettings": { # Settings for custom client certificates. # Optional. The default client certificate settings for the app.
            "passphrase": "A String", # Optional. The name of the SecretManager secret version resource storing the passphrase to decrypt the private key. Should be left unset if the private key is not encrypted. Format: `projects/{project}/secrets/{secret}/versions/{version}`
            "privateKey": "A String", # Required. The name of the SecretManager secret version resource storing the private key encoded in PEM format. Format: `projects/{project}/secrets/{secret}/versions/{version}`
            "tlsCertificate": "A String", # Required. The TLS certificate encoded in PEM format. This string must include the begin header and end footer lines.
          },
          "createTime": "A String", # Output only. Timestamp when the app was created.
          "dataStoreSettings": { # Data store related settings for the app. # Optional. The data store settings for the app.
            "engines": [ # Output only. The engines for the app.
              { # An engine to which the data stores are connected. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction.
                "name": "A String", # Output only. The resource name of the engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
                "type": "A String", # Output only. The type of the engine.
              },
            ],
          },
          "defaultChannelProfile": { # A ChannelProfile configures the agent's behavior for a specific communication channel, such as web UI or telephony. # Optional. The default channel profile used by the app.
            "channelType": "A String", # Optional. The type of the channel profile.
            "disableBargeInControl": True or False, # Optional. Whether to disable user barge-in control in the conversation. - **true**: User interruptions are disabled while the agent is speaking. - **false**: The agent retains automatic control over when the user can interrupt.
            "disableDtmf": True or False, # Optional. Whether to disable DTMF (dual-tone multi-frequency).
            "noiseSuppressionLevel": "A String", # Optional. The noise suppression level of the channel profile. Available values are "low", "moderate", "high", "very_high".
            "personaProperty": { # Represents the persona property of a channel. # Optional. The persona property of the channel profile.
              "persona": "A String", # Optional. The persona of the channel.
            },
            "profileId": "A String", # Optional. The unique identifier of the channel profile.
            "webWidgetConfig": { # Message for configuration for the web widget. # Optional. The configuration for the web widget.
              "modality": "A String", # Optional. The modality of the web widget.
              "securitySettings": { # Security settings for the web widget. # Optional. The security settings of the web widget.
                "allowedOrigins": [ # Optional. The origins that are allowed to host the web widget. An origin is defined by RFC 6454. If empty, all origins are allowed. A maximum of 100 origins is allowed. Example: "https://example.com"
                  "A String",
                ],
                "enableOriginCheck": True or False, # Optional. Indicates whether origin check for the web widget is enabled. If `true`, the web widget will check the origin of the website that loads the web widget and only allow it to be loaded in the same origin or any of the allowed origins.
                "enablePublicAccess": True or False, # Optional. Indicates whether public access to the web widget is enabled. If `true`, the web widget will be publicly accessible. If `false`, the web widget must be integrated with your own authentication and authorization system to return valid credentials for accessing the CES agent.
                "enableRecaptcha": True or False, # Optional. Indicates whether reCAPTCHA verification for the web widget is enabled.
              },
              "theme": "A String", # Optional. The theme of the web widget.
              "webWidgetTitle": "A String", # Optional. The title of the web widget.
            },
          },
          "deploymentCount": 42, # Output only. Number of deployments in the app.
          "description": "A String", # Optional. Human-readable description of the app.
          "displayName": "A String", # Required. Display name of the app.
          "etag": "A String", # Output only. Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
          "evaluationMetricsThresholds": { # Threshold settings for metrics in an Evaluation. # Optional. The evaluation thresholds for the app.
            "goldenEvaluationMetricsThresholds": { # Settings for golden evaluations. # Optional. The golden evaluation metrics thresholds.
              "expectationLevelMetricsThresholds": { # Expectation level metrics thresholds. # Optional. The expectation level metrics thresholds.
                "toolInvocationParameterCorrectnessThreshold": 3.14, # Optional. The success threshold for individual tool invocation parameter correctness. Must be a float between 0 and 1. Default is 1.0.
              },
              "turnLevelMetricsThresholds": { # Turn level metrics thresholds. # Optional. The turn level metrics thresholds.
                "overallToolInvocationCorrectnessThreshold": 3.14, # Optional. The success threshold for overall tool invocation correctness. Must be a float between 0 and 1. Default is 1.0.
                "semanticSimilarityChannel": "A String", # Optional. The semantic similarity channel to use for evaluation.
                "semanticSimilaritySuccessThreshold": 42, # Optional. The success threshold for semantic similarity. Must be an integer between 0 and 4. Default is >= 3.
              },
            },
            "goldenHallucinationMetricBehavior": "A String", # Optional. The hallucination metric behavior for golden evaluations.
            "hallucinationMetricBehavior": "A String", # Optional. Deprecated: Use `golden_hallucination_metric_behavior` instead. The hallucination metric behavior is currently used for golden evaluations.
            "scenarioHallucinationMetricBehavior": "A String", # Optional. The hallucination metric behavior for scenario evaluations.
          },
          "globalInstruction": "A String", # Optional. Instructions for all the agents in the app. You can use this instruction to set up a stable identity or personality across all the agents.
          "guardrails": [ # Optional. List of guardrails for the app. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
            "A String",
          ],
          "languageSettings": { # Language settings of the app. # Optional. Language settings of the app.
            "defaultLanguageCode": "A String", # Optional. The default language code of the app.
            "enableMultilingualSupport": True or False, # Optional. Enables multilingual support. If true, agents in the app will use pre-built instructions to improve handling of multilingual input.
            "fallbackAction": "A String", # Optional. The action to perform when an agent receives input in an unsupported language. This can be a predefined action or a custom tool call. Valid values are: - A tool's full resource name, which triggers a specific tool execution. - A predefined system action, such as "escalate" or "exit", which triggers an EndSession signal with corresponding metadata to terminate the conversation.
            "supportedLanguageCodes": [ # Optional. List of languages codes supported by the app, in addition to the `default_language_code`.
              "A String",
            ],
          },
          "locked": True or False, # Optional. Indicates whether the app is locked for changes. If the app is locked, modifications to the app resources will be rejected.
          "loggingSettings": { # Settings to describe the logging behaviors for the app. # Optional. Logging settings of the app.
            "audioRecordingConfig": { # Configuration for how the audio interactions should be recorded. # Optional. Configuration for how audio interactions should be recorded.
              "gcsBucket": "A String", # Optional. The [Cloud Storage](https://cloud.google.com/storage) bucket to store the session audio recordings. The URI must start with "gs://". Please choose a bucket location that meets your data residency requirements. Note: If the Cloud Storage bucket is in a different project from the app, you should grant `storage.objects.create` permission to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "gcsPathPrefix": "A String", # Optional. The Cloud Storage path prefix for audio recordings. This prefix can include the following placeholders, which will be dynamically substituted at serving time: - $project: project ID - $location: app location - $app: app ID - $date: session date in YYYY-MM-DD format - $session: session ID If the path prefix is not specified, the default prefix `$project/$location/$app/$date/$session/` will be used.
            },
            "bigqueryExportSettings": { # Settings to describe the BigQuery export behaviors for the app. # Optional. Settings to describe the BigQuery export behaviors for the app. The conversation data will be exported to BigQuery tables if it is enabled.
              "dataset": "A String", # Optional. The BigQuery dataset to export the data to.
              "enabled": True or False, # Optional. Indicates whether the BigQuery export is enabled.
              "project": "A String", # Optional. The project ID of the BigQuery dataset to export the data to. Note: If the BigQuery dataset is in a different project from the app, you should grant `roles/bigquery.admin` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
            },
            "cloudLoggingSettings": { # Settings to describe the Cloud Logging behaviors for the app. # Optional. Settings to describe the Cloud Logging behaviors for the app.
              "enableCloudLogging": True or False, # Optional. Whether to enable Cloud Logging for the sessions.
            },
            "conversationLoggingSettings": { # Settings to describe the conversation logging behaviors for the app. # Optional. Settings to describe the conversation logging behaviors for the app.
              "disableConversationLogging": True or False, # Optional. Whether to disable conversation logging for the sessions.
            },
            "evaluationAudioRecordingConfig": { # Configuration for how the audio interactions should be recorded. # Optional. Configuration for how audio interactions should be recorded for the evaluation. By default, audio recording is not enabled for evaluation sessions.
              "gcsBucket": "A String", # Optional. The [Cloud Storage](https://cloud.google.com/storage) bucket to store the session audio recordings. The URI must start with "gs://". Please choose a bucket location that meets your data residency requirements. Note: If the Cloud Storage bucket is in a different project from the app, you should grant `storage.objects.create` permission to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
              "gcsPathPrefix": "A String", # Optional. The Cloud Storage path prefix for audio recordings. This prefix can include the following placeholders, which will be dynamically substituted at serving time: - $project: project ID - $location: app location - $app: app ID - $date: session date in YYYY-MM-DD format - $session: session ID If the path prefix is not specified, the default prefix `$project/$location/$app/$date/$session/` will be used.
            },
            "metricAnalysisSettings": { # Settings to describe the conversation data collection behaviors for LLM analysis metrics pipeline. # Optional. Settings to describe the conversation data collection behaviors for the LLM analysis pipeline for the app.
              "llmMetricsOptedOut": True or False, # Optional. Whether to collect conversation data for llm analysis metrics. If true, conversation data will not be collected for llm analysis metrics; otherwise, conversation data will be collected.
            },
            "redactionConfig": { # Configuration to instruct how sensitive data should be handled. # Optional. Configuration for how sensitive data should be redacted.
              "deidentifyTemplate": "A String", # Optional. [DLP](https://cloud.google.com/dlp/docs) deidentify template name to instruct on how to de-identify content. Format: `projects/{project}/locations/{location}/deidentifyTemplates/{deidentify_template}`
              "enableRedaction": True or False, # Optional. If true, redaction will be applied in various logging scenarios, including conversation history, Cloud Logging and audio recording.
              "inspectTemplate": "A String", # Optional. [DLP](https://cloud.google.com/dlp/docs) inspect template name to configure detection of sensitive data types. Format: `projects/{project}/locations/{location}/inspectTemplates/{inspect_template}`
            },
          },
          "metadata": { # Optional. Metadata about the app. This field can be used to store additional information relevant to the app's details or intended usages.
            "a_key": "A String",
          },
          "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. The default LLM model settings for the app. Individual resources (e.g. agents, guardrails) can override these configurations as needed.
            "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
            "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
          },
          "name": "A String", # Identifier. The unique identifier of the app. Format: `projects/{project}/locations/{location}/apps/{app}`
          "pinned": True or False, # Optional. Whether the app is pinned in the app list.
          "predefinedVariableDeclarations": [ # Output only. The declarations of predefined variables for the app.
            { # Defines the structure and metadata for a variable.
              "description": "A String", # Required. The description of the variable.
              "name": "A String", # Required. The name of the variable. The name must start with a letter or underscore and contain only letters, numbers, or underscores.
              "schema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Required. The schema of the variable.
                "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
                "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
                  # Object with schema name: Schema
                ],
                "default": "", # Optional. Default value of the data.
                "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
                  "a_key": # Object with schema name: Schema
                },
                "description": "A String", # Optional. The description of the data.
                "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
                  "A String",
                ],
                "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
                "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
                "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
                "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
                "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
                "nullable": True or False, # Optional. Indicates if the value may be null.
                "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
                  # Object with schema name: Schema
                ],
                "properties": { # Optional. Properties of Type.OBJECT.
                  "a_key": # Object with schema name: Schema
                },
                "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
                "required": [ # Optional. Required properties of Type.OBJECT.
                  "A String",
                ],
                "title": "A String", # Optional. The title of the schema.
                "type": "A String", # Required. The type of the data.
                "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
              },
            },
          ],
          "rootAgent": "A String", # Optional. The root agent is the entry point of the app. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
          "timeZoneSettings": { # TimeZone settings of the app. # Optional. TimeZone settings of the app.
            "timeZone": "A String", # Optional. The time zone of the app from the [time zone database](https://www.iana.org/time-zones), e.g., America/Los_Angeles, Europe/Paris.
          },
          "toolExecutionMode": "A String", # Optional. The tool execution mode for the app. If not provided, will default to PARALLEL.
          "updateTime": "A String", # Output only. Timestamp when the app was last updated.
          "variableDeclarations": [ # Optional. The declarations of the variables.
            { # Defines the structure and metadata for a variable.
              "description": "A String", # Required. The description of the variable.
              "name": "A String", # Required. The name of the variable. The name must start with a letter or underscore and contain only letters, numbers, or underscores.
              "schema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Required. The schema of the variable.
                "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
                "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
                  # Object with schema name: Schema
                ],
                "default": "", # Optional. Default value of the data.
                "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
                  "a_key": # Object with schema name: Schema
                },
                "description": "A String", # Optional. The description of the data.
                "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
                  "A String",
                ],
                "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
                "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
                "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
                "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
                "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
                "nullable": True or False, # Optional. Indicates if the value may be null.
                "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
                  # Object with schema name: Schema
                ],
                "properties": { # Optional. Properties of Type.OBJECT.
                  "a_key": # Object with schema name: Schema
                },
                "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
                "required": [ # Optional. Required properties of Type.OBJECT.
                  "A String",
                ],
                "title": "A String", # Optional. The title of the schema.
                "type": "A String", # Required. The type of the data.
                "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
              },
            },
          ],
        },
        "examples": [ # Optional. List of examples in the app.
          { # An example represents a sample conversation between the user and the agent(s).
            "createTime": "A String", # Output only. Timestamp when the example was created.
            "description": "A String", # Optional. Human-readable description of the example.
            "displayName": "A String", # Required. Display name of the example.
            "entryAgent": "A String", # Optional. The agent that initially handles the conversation. If not specified, the example represents a conversation that is handled by the root agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
            "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
            "invalid": True or False, # Output only. The example may become invalid if referencing resources are deleted. Invalid examples will not be used as few-shot examples.
            "messages": [ # Optional. The collection of messages that make up the conversation.
              { # A message within a conversation.
                "chunks": [ # Optional. Content of the message as a series of chunks.
                  { # A chunk of content within a message.
                    "agentTransfer": { # Represents an event indicating the transfer of a conversation to a different agent. # Optional. Agent transfer event.
                      "displayName": "A String", # Output only. Display name of the agent.
                      "targetAgent": "A String", # Required. The agent to which the conversation is being transferred. The agent will handle the conversation from this point forward. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
                    },
                    "defaultVariables": { # A struct represents default variables at the start of the conversation, keyed by variable names.
                      "a_key": "", # Properties of the object.
                    },
                    "image": { # Represents an image input or output in the conversation. # Optional. Image data.
                      "data": "A String", # Required. Raw bytes of the image.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data. Supported image types includes: * image/png * image/jpeg * image/webp
                    },
                    "payload": { # Optional. Custom payload data.
                      "a_key": "", # Properties of the object.
                    },
                    "text": "A String", # Optional. Text data.
                    "toolCall": { # Request for the client or the agent to execute the specified tool. # Optional. Tool execution request.
                      "args": { # Optional. The input parameters and values for the tool in JSON object format.
                        "a_key": "", # Properties of the object.
                      },
                      "displayName": "A String", # Output only. Display name of the tool.
                      "id": "A String", # Optional. The unique identifier of the tool call. If populated, the client should return the execution result with the matching ID in ToolResponse.
                      "tool": "A String", # Optional. The name of the tool to execute. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
                      "toolsetTool": { # A tool that is created from a toolset. # Optional. The toolset tool to execute.
                        "toolId": "A String", # Optional. The tool ID to filter the tools to retrieve the schema for.
                        "toolset": "A String", # Required. The resource name of the Toolset from which this tool is derived. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
                      },
                    },
                    "toolResponse": { # The execution result of a specific tool from the client or the agent. # Optional. Tool execution response.
                      "displayName": "A String", # Output only. Display name of the tool.
                      "id": "A String", # Optional. The matching ID of the tool call the response is for.
                      "response": { # Required. The tool execution result in JSON object format. Use "output" key to specify tool response and "error" key to specify error details (if any). If "output" and "error" keys are not specified, then whole "response" is treated as tool execution result.
                        "a_key": "", # Properties of the object.
                      },
                      "tool": "A String", # Optional. The name of the tool to execute. Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
                      "toolsetTool": { # A tool that is created from a toolset. # Optional. The toolset tool that got executed.
                        "toolId": "A String", # Optional. The tool ID to filter the tools to retrieve the schema for.
                        "toolset": "A String", # Required. The resource name of the Toolset from which this tool is derived. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
                      },
                    },
                    "transcript": "A String", # Optional. Transcript associated with the audio.
                    "updatedVariables": { # A struct represents variables that were updated in the conversation, keyed by variable names.
                      "a_key": "", # Properties of the object.
                    },
                  },
                ],
                "eventTime": "A String", # Optional. Timestamp when the message was sent or received. Should not be used if the message is part of an example.
                "role": "A String", # Optional. The role within the conversation, e.g., user, agent.
              },
            ],
            "name": "A String", # Identifier. The unique identifier of the example. Format: `projects/{project}/locations/{location}/apps/{app}/examples/{example}`
            "updateTime": "A String", # Output only. Timestamp when the example was last updated.
          },
        ],
        "guardrails": [ # Optional. List of guardrails in the app.
          { # Guardrail contains a list of checks and balances to keep the agents safe and secure.
            "action": { # Action that is taken when a certain precondition is met. # Optional. Action to take when the guardrail is triggered.
              "generativeAnswer": { # The agent will immediately respond with a generative answer. # Optional. Respond with a generative answer.
                "prompt": "A String", # Required. The prompt to use for the generative answer.
              },
              "respondImmediately": { # The agent will immediately respond with a preconfigured response. # Optional. Immediately respond with a preconfigured response.
                "responses": [ # Required. The canned responses for the agent to choose from. The response is chosen randomly.
                  { # Represents a response from the agent.
                    "disabled": True or False, # Optional. Whether the response is disabled. Disabled responses are not used by the agent.
                    "text": "A String", # Required. Text for the agent to respond with.
                  },
                ],
              },
              "transferAgent": { # The agent will transfer the conversation to a different agent. # Optional. Transfer the conversation to a different agent.
                "agent": "A String", # Required. The name of the agent to transfer the conversation to. The agent must be in the same app as the current agent. Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
              },
            },
            "codeCallback": { # Guardrail that blocks the conversation based on the code callbacks provided. # Optional. Guardrail that potentially blocks the conversation based on the result of the callback execution.
              "afterAgentCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute after the agent is called. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
              "afterModelCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute after the model is called. If there are multiple calls to the model, the callback will be executed multiple times. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
              "beforeAgentCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute before the agent is called. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
              "beforeModelCallback": { # A callback defines the custom logic to be executed at various stages of agent interaction. # Optional. The callback to execute before the model is called. If there are multiple calls to the model, the callback will be executed multiple times. Each callback function is expected to return a structure (e.g., a dict or object) containing at least: - 'decision': Either 'OK' or 'TRIGGER'. - 'reason': A string explaining the decision. A 'TRIGGER' decision may halt further processing.
                "description": "A String", # Optional. Human-readable description of the callback.
                "disabled": True or False, # Optional. Whether the callback is disabled. Disabled callbacks are ignored by the agent.
                "proactiveExecutionEnabled": True or False, # Optional. If enabled, the callback will also be executed on intermediate model outputs. This setting only affects after model callback. **ENABLE WITH CAUTION**. Typically after model callback only needs to be executed after receiving all model responses. Enabling proactive execution may have negative implication on the execution cost and latency, and should only be enabled in rare situations.
                "pythonCode": "A String", # Required. The python code to execute for the callback.
              },
            },
            "contentFilter": { # Guardrail that bans certain content from being used in the conversation. # Optional. Guardrail that bans certain content from being used in the conversation.
              "bannedContents": [ # Optional. List of banned phrases. Applies to both user inputs and agent responses.
                "A String",
              ],
              "bannedContentsInAgentResponse": [ # Optional. List of banned phrases. Applies only to agent responses.
                "A String",
              ],
              "bannedContentsInUserInput": [ # Optional. List of banned phrases. Applies only to user inputs.
                "A String",
              ],
              "disregardDiacritics": True or False, # Optional. If true, diacritics are ignored during matching.
              "matchType": "A String", # Required. Match type for the content filter.
            },
            "createTime": "A String", # Output only. Timestamp when the guardrail was created.
            "description": "A String", # Optional. Description of the guardrail.
            "displayName": "A String", # Required. Display name of the guardrail.
            "enabled": True or False, # Optional. Whether the guardrail is enabled.
            "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
            "llmPolicy": { # Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification. # Optional. Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification.
              "allowShortUtterance": True or False, # Optional. By default, the LLM policy check is bypassed for short utterances. Enabling this setting applies the policy check to all utterances, including those that would normally be skipped.
              "failOpen": True or False, # Optional. If an error occurs during the policy check, fail open and do not trigger the guardrail.
              "maxConversationMessages": 42, # Optional. When checking this policy, consider the last 'n' messages in the conversation. When not set a default value of 10 will be used.
              "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Model settings.
                "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
              },
              "policyScope": "A String", # Required. Defines when to apply the policy check during the conversation. If set to `POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input. When applying the policy to the agent response, additional latency will be introduced before the agent can respond.
              "prompt": "A String", # Required. Policy prompt.
            },
            "llmPromptSecurity": { # Guardrail that blocks the conversation if the input is considered unsafe based on the LLM classification. # Optional. Guardrail that blocks the conversation if the prompt is considered unsafe based on the LLM classification.
              "customPolicy": { # Guardrail that blocks the conversation if the LLM response is considered violating the policy based on the LLM classification. # Optional. Use a user-defined LlmPolicy to configure the security guardrail.
                "allowShortUtterance": True or False, # Optional. By default, the LLM policy check is bypassed for short utterances. Enabling this setting applies the policy check to all utterances, including those that would normally be skipped.
                "failOpen": True or False, # Optional. If an error occurs during the policy check, fail open and do not trigger the guardrail.
                "maxConversationMessages": 42, # Optional. When checking this policy, consider the last 'n' messages in the conversation. When not set a default value of 10 will be used.
                "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Model settings.
                  "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                  "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                },
                "policyScope": "A String", # Required. Defines when to apply the policy check during the conversation. If set to `POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input. When applying the policy to the agent response, additional latency will be introduced before the agent can respond.
                "prompt": "A String", # Required. Policy prompt.
              },
              "defaultSettings": { # Configuration for default system security settings. # Optional. Use the system's predefined default security settings. To select this mode, include an empty 'default_settings' message in the request. The 'default_prompt_template' field within will be populated by the server in the response.
                "defaultPromptTemplate": "A String", # Output only. The default prompt template used by the system. This field is for display purposes to show the user what prompt the system uses by default. It is OUTPUT_ONLY.
              },
              "failOpen": True or False, # Optional. Determines the behavior when the guardrail encounters an LLM error. - If true: the guardrail is bypassed. - If false (default): the guardrail triggers/blocks. Note: If a custom policy is provided, this field is ignored in favor of the policy's 'fail_open' configuration.
            },
            "modelSafety": { # Model safety settings overrides. When this is set, it will override the default settings and trigger the guardrail if the response is considered unsafe. # Optional. Guardrail that blocks the conversation if the LLM response is considered unsafe based on the model safety settings.
              "safetySettings": [ # Required. List of safety settings.
                { # Safety setting.
                  "category": "A String", # Required. The harm category.
                  "threshold": "A String", # Required. The harm block threshold.
                },
              ],
            },
            "name": "A String", # Identifier. The unique identifier of the guardrail. Format: `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
            "updateTime": "A String", # Output only. Timestamp when the guardrail was last updated.
          },
        ],
        "tools": [ # Optional. List of tools in the app.
          { # A tool represents an action that the CES agent can take to achieve certain goals.
            "clientFunction": { # Represents a client-side function that the agent can invoke. When the tool is chosen by the agent, control is handed off to the client. The client is responsible for executing the function and returning the result as a ToolResponse to continue the interaction with the agent. # Optional. The client function.
              "description": "A String", # Optional. The function description.
              "name": "A String", # Required. The function name.
              "parameters": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the function parameters.
                "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
                "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
                  # Object with schema name: Schema
                ],
                "default": "", # Optional. Default value of the data.
                "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
                  "a_key": # Object with schema name: Schema
                },
                "description": "A String", # Optional. The description of the data.
                "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
                  "A String",
                ],
                "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
                "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
                "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
                "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
                "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
                "nullable": True or False, # Optional. Indicates if the value may be null.
                "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
                  # Object with schema name: Schema
                ],
                "properties": { # Optional. Properties of Type.OBJECT.
                  "a_key": # Object with schema name: Schema
                },
                "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
                "required": [ # Optional. Required properties of Type.OBJECT.
                  "A String",
                ],
                "title": "A String", # Optional. The title of the schema.
                "type": "A String", # Required. The type of the data.
                "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
              },
              "response": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the function response.
                "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
                "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
                  # Object with schema name: Schema
                ],
                "default": "", # Optional. Default value of the data.
                "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
                  "a_key": # Object with schema name: Schema
                },
                "description": "A String", # Optional. The description of the data.
                "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
                  "A String",
                ],
                "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
                "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
                "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
                "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
                "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
                "nullable": True or False, # Optional. Indicates if the value may be null.
                "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
                  # Object with schema name: Schema
                ],
                "properties": { # Optional. Properties of Type.OBJECT.
                  "a_key": # Object with schema name: Schema
                },
                "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
                "required": [ # Optional. Required properties of Type.OBJECT.
                  "A String",
                ],
                "title": "A String", # Optional. The title of the schema.
                "type": "A String", # Required. The type of the data.
                "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
              },
            },
            "connectorTool": { # A ConnectorTool allows connections to different integrations. See: https://cloud.google.com/integration-connectors/docs/overview. # Optional. The Integration Connector tool.
              "action": { # Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details. # Required. Action for the tool to use.
                "connectionActionId": "A String", # ID of a Connection action for the tool to use.
                "entityOperation": { # Entity CRUD operation specification. # Entity operation configuration for the tool to use.
                  "entityId": "A String", # Required. ID of the entity.
                  "operation": "A String", # Required. Operation to perform on the entity.
                },
                "inputFields": [ # Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
                  "A String",
                ],
                "outputFields": [ # Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
                  "A String",
                ],
              },
              "authConfig": { # End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`. # Optional. Configures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. **Note**: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the ConnectorTool creation will fail. See https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override for details.
                "oauth2AuthCodeConfig": { # Oauth 2.0 Authorization Code authentication configuration. # Oauth 2.0 Authorization Code authentication.
                  "oauthToken": "A String", # Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
                },
                "oauth2JwtBearerConfig": { # JWT Profile Oauth 2.0 Authorization Grant authentication configuration. # JWT Profile Oauth 2.0 Authorization Grant authentication.
                  "clientKey": "A String", # Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
                  "issuer": "A String", # Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
                  "subject": "A String", # Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
                },
              },
              "connection": "A String", # Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
              "description": "A String", # Optional. The description of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
              "name": "A String", # Optional. The name of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
            },
            "createTime": "A String", # Output only. Timestamp when the tool was created.
            "dataStoreTool": { # Tool to retrieve from Vertex AI Search datastore or engine for grounding. Accepts either a datastore or an engine, but not both. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction. # Optional. The data store tool.
              "boostSpecs": [ # Optional. Boost specification to boost certain documents.
                { # Boost specifications to boost certain documents. For more information, please refer to https://cloud.google.com/generative-ai-app-builder/docs/boosting.
                  "dataStores": [ # Required. The Data Store where the boosting configuration is applied. Full resource name of DataStore, such as projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}.
                    "A String",
                  ],
                  "spec": [ # Required. A list of boosting specifications.
                    { # Boost specification to boost certain documents.
                      "conditionBoostSpecs": [ # Required. A list of boosting specifications.
                        { # Boost specification for a condition.
                          "boost": 3.14, # Optional. Strength of the boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the suggestions a big promotion. However, it does not necessarily mean that the top result will be a boosted suggestion. Setting to -1.0 gives the suggestions a big demotion. However, other suggestions that are relevant might still be shown. Setting to 0.0 means no boost applied. The boosting condition is ignored.
                          "boostControlSpec": { # Specification for custom ranking based on customer specified attribute value. It provides more controls for customized ranking than the simple (condition, boost) combination above. # Optional. Complex specification for custom ranking based on customer defined attribute value.
                            "attributeType": "A String", # Optional. The attribute type to be used to determine the boost amount. The attribute value can be derived from the field value of the specified field_name. In the case of numerical it is straightforward i.e. attribute_value = numerical_field_value. In the case of freshness however, attribute_value = (time.now() - datetime_field_value).
                            "controlPoints": [ # Optional. The control points used to define the curve. The monotonic function (defined through the interpolation_type above) passes through the control points listed here.
                              { # The control points used to define the curve. The curve defined through these control points can only be monotonically increasing or decreasing(constant values are acceptable).
                                "attributeValue": "A String", # Optional. Can be one of: 1. The numerical field value. 2. The duration spec for freshness: The value must be formatted as an XSD `dayTimeDuration` value (a restricted subset of an ISO 8601 duration value). The pattern for this is: `nDnM]`.
                                "boostAmount": 3.14, # Optional. The value between -1 to 1 by which to boost the score if the attribute_value evaluates to the value specified above.
                              },
                            ],
                            "fieldName": "A String", # Optional. The name of the field whose value will be used to determine the boost amount.
                            "interpolationType": "A String", # Optional. The interpolation type to be applied to connect the control points listed below.
                          },
                          "condition": "A String", # Required. An expression which specifies a boost condition. The syntax is the same as filter expression syntax. Currently, the only supported condition is a list of BCP-47 lang codes. Example: To boost suggestions in languages en or fr: (lang_code: ANY("en", "fr"))
                        },
                      ],
                    },
                  ],
                },
              ],
              "dataStoreSource": { # Configuration for searching within a specific DataStore. # Optional. Search within a single specific DataStore.
                "dataStore": { # A DataStore resource in Vertex AI Search. # Optional. The data store.
                  "connectorConfig": { # The connector config for the data store connection. # Output only. The connector config for the data store connection.
                    "collection": "A String", # Resource name of the collection the data store belongs to.
                    "collectionDisplayName": "A String", # Display name of the collection the data store belongs to.
                    "dataSource": "A String", # The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
                  },
                  "createTime": "A String", # Output only. Timestamp when the data store was created.
                  "displayName": "A String", # Output only. The display name of the data store.
                  "documentProcessingMode": "A String", # Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
                  "name": "A String", # Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                  "type": "A String", # Output only. The type of the data store. This field is readonly and populated by the server.
                },
                "filter": "A String", # Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
              },
              "description": "A String", # Optional. The tool description.
              "engineSource": { # Configuration for searching within an Engine, potentially targeting specific DataStores. # Optional. Search within an Engine (potentially across multiple DataStores).
                "dataStoreSources": [ # Optional. Use to target specific DataStores within the Engine. If empty, the search applies to all DataStores associated with the Engine.
                  { # Configuration for searching within a specific DataStore.
                    "dataStore": { # A DataStore resource in Vertex AI Search. # Optional. The data store.
                      "connectorConfig": { # The connector config for the data store connection. # Output only. The connector config for the data store connection.
                        "collection": "A String", # Resource name of the collection the data store belongs to.
                        "collectionDisplayName": "A String", # Display name of the collection the data store belongs to.
                        "dataSource": "A String", # The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
                      },
                      "createTime": "A String", # Output only. Timestamp when the data store was created.
                      "displayName": "A String", # Output only. The display name of the data store.
                      "documentProcessingMode": "A String", # Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
                      "name": "A String", # Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                      "type": "A String", # Output only. The type of the data store. This field is readonly and populated by the server.
                    },
                    "filter": "A String", # Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
                  },
                ],
                "engine": "A String", # Required. Full resource name of the Engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
                "filter": "A String", # Optional. A filter applied to the search across the Engine. Not relevant and not used if 'data_store_sources' is provided. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
              },
              "filterParameterBehavior": "A String", # Optional. The filter parameter behavior.
              "modalityConfigs": [ # Optional. The modality configs for the data store.
                { # If specified, will apply the given configuration for the specified modality.
                  "groundingConfig": { # Grounding configuration. # Optional. The grounding configuration.
                    "disabled": True or False, # Optional. Whether grounding is disabled.
                    "groundingLevel": 3.14, # Optional. The groundedness threshold of the answer based on the retrieved sources. The value has a configurable range of [1, 5]. The level is used to threshold the groundedness of the answer, meaning that all responses with a groundedness score below the threshold will fall back to returning relevant snippets only. For example, a level of 3 means that the groundedness score must be 3 or higher for the response to be returned.
                  },
                  "modalityType": "A String", # Required. The modality type.
                  "rewriterConfig": { # Rewriter configuration. # Optional. The rewriter config.
                    "disabled": True or False, # Optional. Whether the rewriter is disabled.
                    "modelSettings": { # Model settings contains various configurations for the LLM model. # Required. Configurations for the LLM model.
                      "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                      "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                    },
                    "prompt": "A String", # Optional. The prompt definition. If not set, default prompt will be used.
                  },
                  "summarizationConfig": { # Summarization configuration. # Optional. The summarization config.
                    "disabled": True or False, # Optional. Whether summarization is disabled.
                    "modelSettings": { # Model settings contains various configurations for the LLM model. # Optional. Configurations for the LLM model.
                      "model": "A String", # Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
                      "temperature": 3.14, # Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
                    },
                    "prompt": "A String", # Optional. The prompt definition. If not set, default prompt will be used.
                  },
                },
              ],
              "name": "A String", # Required. The data store tool name.
            },
            "displayName": "A String", # Output only. The display name of the tool, derived based on the tool's type. For example, display name of a ClientFunction is derived from its `name` property.
            "etag": "A String", # Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
            "executionType": "A String", # Optional. The execution type of the tool.
            "fileSearchTool": { # The file search tool allows the agent to search across the files uploaded by the app/agent developer. It has presets to give relatively good quality search over the uploaded files and summarization of the retrieved results. # Optional. The file search tool.
              "corpusType": "A String", # Optional. The type of the corpus. Default is FULLY_MANAGED.
              "description": "A String", # Optional. The tool description.
              "fileCorpus": "A String", # Optional. The corpus where files are stored. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
              "name": "A String", # Required. The tool name.
            },
            "generatedSummary": "A String", # Output only. If the tool is generated by the LLM assistant, this field contains a descriptive summary of the generation.
            "googleSearchTool": { # Represents a tool to perform Google web searches for grounding. See https://cloud.google.com/customer-engagement-ai/conversational-agents/ps/tool#google-search. # Optional. The google search tool.
              "contextUrls": [ # Optional. Content will be fetched directly from these URLs for context and grounding. Example: "https://example.com/path.html". A maximum of 20 URLs are allowed.
                "A String",
              ],
              "description": "A String", # Optional. Description of the tool's purpose.
              "excludeDomains": [ # Optional. List of domains to be excluded from the search results. Example: "example.com". A maximum of 2000 domains can be excluded.
                "A String",
              ],
              "name": "A String", # Required. The name of the tool.
              "preferredDomains": [ # Optional. Specifies domains to restrict search results to. Example: "example.com", "another.site". A maximum of 20 domains can be specified.
                "A String",
              ],
              "promptConfig": { # Prompt settings used by the model when processing or summarizing the google search results. # Optional. Prompt instructions passed to planner on how the search results should be processed for text and voice.
                "textPrompt": "A String", # Optional. Defines the prompt used for the system instructions when interacting with the agent in chat conversations. If not set, default prompt will be used.
                "voicePrompt": "A String", # Optional. Defines the prompt used for the system instructions when interacting with the agent in voice conversations. If not set, default prompt will be used.
              },
            },
            "mcpTool": { # An MCP tool. See https://modelcontextprotocol.io/specification/2025-06-18/server/tools for more details. # Optional. The MCP tool. An MCP tool cannot be created or updated directly and is managed by the MCP toolset.
              "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required to execute the tool against the MCP server. For bearer token authentication, the token applies only to tool execution, not to listing tools. This requires that tools can be listed without authentication.
                "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
                  "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                  "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
                  "requestLocation": "A String", # Required. Key location in the request.
                },
                "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
                  "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
                },
                "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
                  "clientId": "A String", # Required. The client ID from the OAuth provider.
                  "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                  "oauthGrantType": "A String", # Required. OAuth grant types.
                  "scopes": [ # Optional. The OAuth scopes to grant.
                    "A String",
                  ],
                  "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
                },
                "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
                  "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                    "A String",
                  ],
                  "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                },
                "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
                },
              },
              "description": "A String", # Optional. The description of the MCP tool.
              "inputSchema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the input arguments of the MCP tool.
                "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
                "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
                  # Object with schema name: Schema
                ],
                "default": "", # Optional. Default value of the data.
                "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
                  "a_key": # Object with schema name: Schema
                },
                "description": "A String", # Optional. The description of the data.
                "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
                  "A String",
                ],
                "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
                "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
                "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
                "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
                "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
                "nullable": True or False, # Optional. Indicates if the value may be null.
                "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
                  # Object with schema name: Schema
                ],
                "properties": { # Optional. Properties of Type.OBJECT.
                  "a_key": # Object with schema name: Schema
                },
                "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
                "required": [ # Optional. Required properties of Type.OBJECT.
                  "A String",
                ],
                "title": "A String", # Optional. The title of the schema.
                "type": "A String", # Required. The type of the data.
                "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
              },
              "name": "A String", # Required. The name of the MCP tool.
              "outputSchema": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The schema of the output arguments of the MCP tool.
                "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
                "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
                  # Object with schema name: Schema
                ],
                "default": "", # Optional. Default value of the data.
                "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
                  "a_key": # Object with schema name: Schema
                },
                "description": "A String", # Optional. The description of the data.
                "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
                  "A String",
                ],
                "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
                "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
                "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
                "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
                "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
                "nullable": True or False, # Optional. Indicates if the value may be null.
                "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
                  # Object with schema name: Schema
                ],
                "properties": { # Optional. Properties of Type.OBJECT.
                  "a_key": # Object with schema name: Schema
                },
                "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
                "required": [ # Optional. Required properties of Type.OBJECT.
                  "A String",
                ],
                "title": "A String", # Optional. The title of the schema.
                "type": "A String", # Required. The type of the data.
                "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
              },
              "serverAddress": "A String", # Required. The server address of the MCP server, e.g., "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. This is the same as the server_address in the McpToolset. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
              "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration for VPC-SC, used to resolve service names within a perimeter.
                "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
              },
              "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client should trust.
                "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
                  { # The CA certificate.
                    "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                    "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
                  },
                ],
              },
            },
            "name": "A String", # Identifier. The unique identifier of the tool. Format: - `projects/{project}/locations/{location}/apps/{app}/tools/{tool}` for ## standalone tools. `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}/tools/{tool}` for tools retrieved from a toolset. These tools are dynamic and output-only, they cannot be referenced directly where a tool is expected.
            "openApiTool": { # A remote API tool defined by an OpenAPI schema. # Optional. The open API tool.
              "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required by the API.
                "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
                  "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                  "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
                  "requestLocation": "A String", # Required. Key location in the request.
                },
                "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
                  "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
                },
                "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
                  "clientId": "A String", # Required. The client ID from the OAuth provider.
                  "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                  "oauthGrantType": "A String", # Required. OAuth grant types.
                  "scopes": [ # Optional. The OAuth scopes to grant.
                    "A String",
                  ],
                  "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
                },
                "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
                  "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                    "A String",
                  ],
                  "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                },
                "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
                },
              },
              "description": "A String", # Optional. The description of the tool. If not provided, the description of the tool will be derived from the OpenAPI schema, from `operation.description` or `operation.summary`.
              "ignoreUnknownFields": True or False, # Optional. If true, the agent will ignore unknown fields in the API response.
              "name": "A String", # Optional. The name of the tool. If not provided, the name of the tool will be derived from the OpenAPI schema, from `operation.operationId`.
              "openApiSchema": "A String", # Required. The OpenAPI schema in JSON or YAML format.
              "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration.
                "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
              },
              "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client will trust.
                "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
                  { # The CA certificate.
                    "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                    "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
                  },
                ],
              },
              "url": "A String", # Optional. The server URL of the Open API schema. This field is only set in tools in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
            },
            "pythonFunction": { # A Python function tool. # Optional. The python function tool.
              "description": "A String", # Output only. The description of the Python function, parsed from the python code's docstring.
              "name": "A String", # Optional. The name of the Python function to execute. Must match a Python function name defined in the python code. Case sensitive. If the name is not provided, the first function defined in the python code will be used.
              "pythonCode": "A String", # Optional. The Python code to execute for the tool.
            },
            "systemTool": { # Pre-defined system tool. # Optional. The system tool.
              "description": "A String", # Output only. The description of the system tool.
              "name": "A String", # Required. The name of the system tool.
            },
            "toolFakeConfig": { # Configuration for tool behavior in fake mode. # Optional. Configuration for tool behavior in fake mode.
              "codeBlock": { # A code block to be executed instead of a real tool call. # Optional. Code block which will be executed instead of a real tool call.
                "pythonCode": "A String", # Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
              },
              "enableFakeMode": True or False, # Optional. Whether the tool is using fake mode.
            },
            "updateTime": "A String", # Output only. Timestamp when the tool was last updated.
            "widgetTool": { # Represents a widget tool that the agent can invoke. When the tool is chosen by the agent, agent will return the widget to the client. The client is responsible for processing the widget and generating the next user query to continue the interaction with the agent. # Optional. The widget tool.
              "description": "A String", # Optional. The description of the widget tool.
              "name": "A String", # Required. The display name of the widget tool.
              "parameters": { # Represents a select subset of an OpenAPI 3.0 schema object. # Optional. The input parameters of the widget tool.
                "additionalProperties": # Object with schema name: Schema # Optional. Can either be a boolean or an object, controls the presence of additional properties.
                "anyOf": [ # Optional. The value should be validated against any (one or more) of the subschemas in the list.
                  # Object with schema name: Schema
                ],
                "default": "", # Optional. Default value of the data.
                "defs": { # Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
                  "a_key": # Object with schema name: Schema
                },
                "description": "A String", # Optional. The description of the data.
                "enum": [ # Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
                  "A String",
                ],
                "items": # Object with schema name: Schema # Optional. Schema of the elements of Type.ARRAY.
                "maxItems": "A String", # Optional. Maximum number of the elements for Type.ARRAY.
                "maximum": 3.14, # Optional. Maximum value for Type.INTEGER and Type.NUMBER.
                "minItems": "A String", # Optional. Minimum number of the elements for Type.ARRAY.
                "minimum": 3.14, # Optional. Minimum value for Type.INTEGER and Type.NUMBER.
                "nullable": True or False, # Optional. Indicates if the value may be null.
                "prefixItems": [ # Optional. Schemas of initial elements of Type.ARRAY.
                  # Object with schema name: Schema
                ],
                "properties": { # Optional. Properties of Type.OBJECT.
                  "a_key": # Object with schema name: Schema
                },
                "ref": "A String", # Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
                "required": [ # Optional. Required properties of Type.OBJECT.
                  "A String",
                ],
                "title": "A String", # Optional. The title of the schema.
                "type": "A String", # Required. The type of the data.
                "uniqueItems": True or False, # Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
              },
              "widgetType": "A String", # Optional. The type of the widget tool. If not specified, the default type will be CUSTOMIZED.
            },
          },
        ],
        "toolsets": [ # Optional. List of toolsets in the app.
          { # A toolset represents a group of dynamically managed tools that can be used by the agent.
            "connectorToolset": { # A toolset that generates tools from an Integration Connectors Connection. # Optional. A toolset that generates tools from an Integration Connectors Connection.
              "authConfig": { # End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`. # Optional. Configures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. **Note**: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the Toolset creation will fail. See: https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override
                "oauth2AuthCodeConfig": { # Oauth 2.0 Authorization Code authentication configuration. # Oauth 2.0 Authorization Code authentication.
                  "oauthToken": "A String", # Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
                },
                "oauth2JwtBearerConfig": { # JWT Profile Oauth 2.0 Authorization Grant authentication configuration. # JWT Profile Oauth 2.0 Authorization Grant authentication.
                  "clientKey": "A String", # Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
                  "issuer": "A String", # Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
                  "subject": "A String", # Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
                },
              },
              "connection": "A String", # Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
              "connectorActions": [ # Required. The list of connector actions/entity operations to generate tools for.
                { # Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details.
                  "connectionActionId": "A String", # ID of a Connection action for the tool to use.
                  "entityOperation": { # Entity CRUD operation specification. # Entity operation configuration for the tool to use.
                    "entityId": "A String", # Required. ID of the entity.
                    "operation": "A String", # Required. Operation to perform on the entity.
                  },
                  "inputFields": [ # Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
                    "A String",
                  ],
                  "outputFields": [ # Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
                    "A String",
                  ],
                },
              ],
            },
            "createTime": "A String", # Output only. Timestamp when the toolset was created.
            "description": "A String", # Optional. The description of the toolset.
            "displayName": "A String", # Optional. The display name of the toolset. Must be unique within the same app.
            "etag": "A String", # ETag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
            "executionType": "A String", # Optional. The execution type of the tools in the toolset.
            "mcpToolset": { # A toolset that contains a list of tools that are offered by the MCP server. # Optional. A toolset that contains a list of tools that are offered by the MCP server.
              "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required to access tools and execute a tool against the MCP server. For bearer token authentication, the token applies only to tool execution, not to listing tools. This requires that tools can be listed without authentication.
                "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
                  "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                  "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
                  "requestLocation": "A String", # Required. Key location in the request.
                },
                "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
                  "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
                },
                "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
                  "clientId": "A String", # Required. The client ID from the OAuth provider.
                  "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                  "oauthGrantType": "A String", # Required. OAuth grant types.
                  "scopes": [ # Optional. The OAuth scopes to grant.
                    "A String",
                  ],
                  "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
                },
                "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
                  "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                    "A String",
                  ],
                  "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                },
                "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
                },
              },
              "serverAddress": "A String", # Required. The address of the MCP server, for example, "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
              "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration for VPC-SC, used to resolve service names within a perimeter.
                "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
              },
              "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates that the client should trust.
                "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
                  { # The CA certificate.
                    "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                    "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
                  },
                ],
              },
            },
            "name": "A String", # Identifier. The unique identifier of the toolset. Format: `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`
            "openApiToolset": { # A toolset that contains a list of tools that are defined by an OpenAPI schema. # Optional. A toolset that contains a list of tools that are defined by an OpenAPI schema.
              "apiAuthentication": { # Authentication information required for API calls. # Optional. Authentication information required by the API.
                "apiKeyConfig": { # Configurations for authentication with API key. # Optional. Config for API key auth.
                  "apiKeySecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                  "keyName": "A String", # Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
                  "requestLocation": "A String", # Required. Key location in the request.
                },
                "bearerTokenConfig": { # Configurations for authentication with a bearer token. # Optional. Config for bearer token auth.
                  "token": "A String", # Required. The bearer token. Must be in the format `$context.variables.`.
                },
                "oauthConfig": { # Configurations for authentication with OAuth. # Optional. Config for OAuth.
                  "clientId": "A String", # Required. The client ID from the OAuth provider.
                  "clientSecretVersion": "A String", # Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                  "oauthGrantType": "A String", # Required. OAuth grant types.
                  "scopes": [ # Optional. The OAuth scopes to grant.
                    "A String",
                  ],
                  "tokenEndpoint": "A String", # Required. The token endpoint in the OAuth provider to exchange for an access token.
                },
                "serviceAccountAuthConfig": { # Configurations for authentication using a custom service account. # Optional. Config for service account authentication.
                  "scopes": [ # Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
                    "A String",
                  ],
                  "serviceAccount": "A String", # Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
                },
                "serviceAgentIdTokenAuthConfig": { # Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. # Optional. Config for ID token auth generated from CES service agent.
                },
              },
              "ignoreUnknownFields": True or False, # Optional. If true, the agent will ignore unknown fields in the API response for all operations defined in the OpenAPI schema.
              "openApiSchema": "A String", # Required. The OpenAPI schema of the toolset.
              "serviceDirectoryConfig": { # Configuration for tools using Service Directory. # Optional. Service Directory configuration.
                "service": "A String", # Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
              },
              "tlsConfig": { # The TLS configuration. # Optional. The TLS configuration. Includes the custom server certificates
                "caCerts": [ # Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
                  { # The CA certificate.
                    "cert": "A String", # Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify 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'")
                    "displayName": "A String", # Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
                  },
                ],
              },
              "url": "A String", # Optional. The server URL of the Open API schema. This field is only set in toolsets in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
            },
            "toolFakeConfig": { # Configuration for tool behavior in fake mode. # Optional. Configuration for tools behavior in fake mode.
              "codeBlock": { # A code block to be executed instead of a real tool call. # Optional. Code block which will be executed instead of a real tool call.
                "pythonCode": "A String", # Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
              },
              "enableFakeMode": True or False, # Optional. Whether the tool is using fake mode.
            },
            "updateTime": "A String", # Output only. Timestamp when the toolset was last updated.
          },
        ],
      },
    },
  ],
  "nextPageToken": "A String", # A token that can be sent as ListAppVersionsRequest.page_token to retrieve the next page. Absence of this field indicates there are no subsequent pages.
}
list_next()
Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call 'execute()' on to request the next
          page. Returns None if there are no more items in the collection.
        
restore(name, body=None, x__xgafv=None)
Restores the specified app version. This will create a new app version from the current draft app and overwrite the current draft with the specified app version.

Args:
  name: string, Required. The resource name of the app version to restore. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for AgentService.RestoreAppVersion
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  "done": True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    "code": 42, # The status code, which should be an enum value of google.rpc.Code.
    "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
    ],
    "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    "a_key": "", # Properties of the object. Contains field @type with type URL.
  },
  "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  "response": { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    "a_key": "", # Properties of the object. Contains field @type with type URL.
  },
}