{
  "$defs": {
    "AgentRefConfig": {
      "additionalProperties": false,
      "description": "The config for the reference to another agent.",
      "properties": {
        "config_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Config Path"
        },
        "code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Code"
        }
      },
      "title": "AgentRefConfig",
      "type": "object"
    },
    "ApiAuth": {
      "additionalProperties": false,
      "description": "The generic reusable api auth config.\n\nDeprecated. Please use AuthConfig (google/cloud/aiplatform/master/auth.proto)\ninstead.",
      "properties": {
        "apiKeyConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/ApiAuthApiKeyConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The API secret."
        }
      },
      "title": "ApiAuth",
      "type": "object"
    },
    "ApiAuthApiKeyConfig": {
      "additionalProperties": false,
      "description": "The API secret.",
      "properties": {
        "apiKeySecretVersion": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The SecretManager secret version resource name storing API key. e.g. projects/{project}/secrets/{secret}/versions/{version}",
          "title": "Apikeysecretversion"
        },
        "apiKeyString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The API key string. Either this or `api_key_secret_version` must be set.",
          "title": "Apikeystring"
        }
      },
      "title": "ApiAuthApiKeyConfig",
      "type": "object"
    },
    "ApiKeyConfig": {
      "additionalProperties": false,
      "description": "Config for authentication with API key.",
      "properties": {
        "apiKeyString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The API key to be used in the request directly.",
          "title": "Apikeystring"
        }
      },
      "title": "ApiKeyConfig",
      "type": "object"
    },
    "ApiSpec": {
      "description": "The API spec that the external API implements.",
      "enum": [
        "API_SPEC_UNSPECIFIED",
        "SIMPLE_SEARCH",
        "ELASTIC_SEARCH"
      ],
      "title": "ApiSpec",
      "type": "string"
    },
    "ArgumentConfig": {
      "additionalProperties": false,
      "description": "An argument passed to a function or a class's constructor.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "value": {
          "title": "Value"
        }
      },
      "required": [
        "value"
      ],
      "title": "ArgumentConfig",
      "type": "object"
    },
    "AuthConfig": {
      "additionalProperties": false,
      "description": "Auth configuration to run the extension.",
      "properties": {
        "apiKeyConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/ApiKeyConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Config for API key auth."
        },
        "authType": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuthType"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Type of auth scheme."
        },
        "googleServiceAccountConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuthConfigGoogleServiceAccountConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Config for Google Service Account auth."
        },
        "httpBasicAuthConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuthConfigHttpBasicAuthConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Config for HTTP Basic auth."
        },
        "oauthConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuthConfigOauthConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Config for user oauth."
        },
        "oidcConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuthConfigOidcConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Config for user OIDC auth."
        }
      },
      "title": "AuthConfig",
      "type": "object"
    },
    "AuthConfigGoogleServiceAccountConfig": {
      "additionalProperties": false,
      "description": "Config for Google Service Account Authentication.",
      "properties": {
        "serviceAccount": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The service account that the extension execution service runs as. - If the service account is specified, the `iam.serviceAccounts.getAccessToken` permission should be granted to Vertex AI Extension Service Agent (https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) on the specified service account. - If not specified, the Vertex AI Extension Service Agent will be used to execute the Extension.",
          "title": "Serviceaccount"
        }
      },
      "title": "AuthConfigGoogleServiceAccountConfig",
      "type": "object"
    },
    "AuthConfigHttpBasicAuthConfig": {
      "additionalProperties": false,
      "description": "Config for HTTP Basic Authentication.",
      "properties": {
        "credentialSecret": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The name of the SecretManager secret version resource storing the base64 encoded credentials. Format: `projects/{project}/secrets/{secrete}/versions/{version}` - If specified, the `secretmanager.versions.access` permission should be granted to Vertex AI Extension Service Agent (https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) on the specified resource.",
          "title": "Credentialsecret"
        }
      },
      "title": "AuthConfigHttpBasicAuthConfig",
      "type": "object"
    },
    "AuthConfigOauthConfig": {
      "additionalProperties": false,
      "description": "Config for user oauth.",
      "properties": {
        "accessToken": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Access token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.",
          "title": "Accesstoken"
        },
        "serviceAccount": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The service account used to generate access tokens for executing the Extension. - If the service account is specified, the `iam.serviceAccounts.getAccessToken` permission should be granted to Vertex AI Extension Service Agent (https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) on the provided service account.",
          "title": "Serviceaccount"
        }
      },
      "title": "AuthConfigOauthConfig",
      "type": "object"
    },
    "AuthConfigOidcConfig": {
      "additionalProperties": false,
      "description": "Config for user OIDC auth.",
      "properties": {
        "idToken": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "OpenID Connect formatted ID token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.",
          "title": "Idtoken"
        },
        "serviceAccount": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The service account used to generate an OpenID Connect (OIDC)-compatible JWT token signed by the Google OIDC Provider (accounts.google.com) for extension endpoint (https://cloud.google.com/iam/docs/create-short-lived-credentials-direct#sa-credentials-oidc). - The audience for the token will be set to the URL in the server url defined in the OpenApi spec. - If the service account is provided, the service account should grant `iam.serviceAccounts.getOpenIdToken` permission to Vertex AI Extension Service Agent (https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents).",
          "title": "Serviceaccount"
        }
      },
      "title": "AuthConfigOidcConfig",
      "type": "object"
    },
    "AuthType": {
      "description": "Type of auth scheme.",
      "enum": [
        "AUTH_TYPE_UNSPECIFIED",
        "NO_AUTH",
        "API_KEY_AUTH",
        "HTTP_BASIC_AUTH",
        "GOOGLE_SERVICE_ACCOUNT_AUTH",
        "OAUTH",
        "OIDC_AUTH"
      ],
      "title": "AuthType",
      "type": "string"
    },
    "AutomaticFunctionCallingConfig": {
      "additionalProperties": false,
      "description": "The configuration for automatic function calling.",
      "properties": {
        "disable": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether to disable automatic function calling.\n      If not set or set to False, will enable automatic function calling.\n      If set to True, will disable automatic function calling.\n      ",
          "title": "Disable"
        },
        "maximumRemoteCalls": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 10,
          "description": "If automatic function calling is enabled,\n      maximum number of remote calls for automatic function calling.\n      This number should be a positive integer.\n      If not set, SDK will set maximum number of remote calls to 10.\n      ",
          "title": "Maximumremotecalls"
        },
        "ignoreCallHistory": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "If automatic function calling is enabled,\n      whether to ignore call history to the response.\n      If not set, SDK will set ignore_call_history to false,\n      and will append the call history to\n      GenerateContentResponse.automatic_function_calling_history.\n      ",
          "title": "Ignorecallhistory"
        }
      },
      "title": "AutomaticFunctionCallingConfig",
      "type": "object"
    },
    "BaseAgentConfig": {
      "additionalProperties": true,
      "description": "The config for the YAML schema of a BaseAgent.\n\nDo not use this class directly. It's the base class for all agent configs.",
      "properties": {
        "agent_class": {
          "anyOf": [
            {
              "const": "BaseAgent",
              "type": "string"
            },
            {
              "type": "string"
            }
          ],
          "default": "BaseAgent",
          "description": "Required. The class of the agent. The value is used to differentiate among different agent classes.",
          "title": "Agent Class"
        },
        "name": {
          "description": "Required. The name of the agent.",
          "title": "Name",
          "type": "string"
        },
        "description": {
          "default": "",
          "description": "Optional. The description of the agent.",
          "title": "Description",
          "type": "string"
        },
        "sub_agents": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/AgentRefConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The sub-agents of the agent.",
          "title": "Sub Agents"
        },
        "before_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The before_agent_callbacks of the agent.\n\nExample:\n\n  ```\n  before_agent_callbacks:\n    - name: my_library.security_callbacks.before_agent_callback\n  ```",
          "title": "Before Agent Callbacks"
        },
        "after_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The after_agent_callbacks of the agent.",
          "title": "After Agent Callbacks"
        }
      },
      "required": [
        "name"
      ],
      "title": "BaseAgentConfig",
      "type": "object"
    },
    "Behavior": {
      "description": "Defines the function behavior. Defaults to `BLOCKING`.",
      "enum": [
        "UNSPECIFIED",
        "BLOCKING",
        "NON_BLOCKING"
      ],
      "title": "Behavior",
      "type": "string"
    },
    "Blob": {
      "additionalProperties": false,
      "description": "Content blob.",
      "properties": {
        "displayName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Display name of the blob. Used to provide a label or filename to distinguish blobs. This field is not currently used in the Gemini GenerateContent calls.",
          "title": "Displayname"
        },
        "data": {
          "anyOf": [
            {
              "format": "base64url",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. Raw bytes.",
          "title": "Data"
        },
        "mimeType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The IANA standard MIME type of the source data.",
          "title": "Mimetype"
        }
      },
      "title": "Blob",
      "type": "object"
    },
    "CodeConfig": {
      "additionalProperties": false,
      "description": "Code reference config for a variable, a function, or a class.\n\nThis config is used for configuring callbacks and tools.",
      "properties": {
        "name": {
          "title": "Name",
          "type": "string"
        },
        "args": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ArgumentConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Args"
        }
      },
      "required": [
        "name"
      ],
      "title": "CodeConfig",
      "type": "object"
    },
    "CodeExecutionResult": {
      "additionalProperties": false,
      "description": "Result of executing the [ExecutableCode].\n\nOnly generated when using the [CodeExecution] tool, and always follows a\n`part` containing the [ExecutableCode].",
      "properties": {
        "outcome": {
          "anyOf": [
            {
              "$ref": "#/$defs/Outcome"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. Outcome of the code execution."
        },
        "output": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Contains stdout when code execution is successful, stderr or other description otherwise.",
          "title": "Output"
        }
      },
      "title": "CodeExecutionResult",
      "type": "object"
    },
    "Content": {
      "additionalProperties": false,
      "description": "Contains the multi-part content of a message.",
      "properties": {
        "parts": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Part"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "List of parts that constitute a single message. Each part may have\n      a different IANA MIME type.",
          "title": "Parts"
        },
        "role": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The producer of the content. Must be either 'user' or\n      'model'. Useful to set for multi-turn conversations; otherwise, can be\n      empty. If role is not specified, SDK will determine the role.",
          "title": "Role"
        }
      },
      "title": "Content",
      "type": "object"
    },
    "DynamicRetrievalConfig": {
      "additionalProperties": false,
      "description": "Describes the options to customize dynamic retrieval.",
      "properties": {
        "mode": {
          "anyOf": [
            {
              "$ref": "#/$defs/DynamicRetrievalConfigMode"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The mode of the predictor to be used in dynamic retrieval."
        },
        "dynamicThreshold": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The threshold to be used in dynamic retrieval. If not set, a system default value is used.",
          "title": "Dynamicthreshold"
        }
      },
      "title": "DynamicRetrievalConfig",
      "type": "object"
    },
    "DynamicRetrievalConfigMode": {
      "description": "Config for the dynamic retrieval config mode.",
      "enum": [
        "MODE_UNSPECIFIED",
        "MODE_DYNAMIC"
      ],
      "title": "DynamicRetrievalConfigMode",
      "type": "string"
    },
    "EnterpriseWebSearch": {
      "additionalProperties": false,
      "description": "Tool to search public web data, powered by Vertex AI Search and Sec4 compliance.",
      "properties": {
        "excludeDomains": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. List of domains to be excluded from the search results. The default limit is 2000 domains.",
          "title": "Excludedomains"
        }
      },
      "title": "EnterpriseWebSearch",
      "type": "object"
    },
    "Environment": {
      "description": "The environment being operated.",
      "enum": [
        "ENVIRONMENT_UNSPECIFIED",
        "ENVIRONMENT_BROWSER"
      ],
      "title": "Environment",
      "type": "string"
    },
    "ExecutableCode": {
      "additionalProperties": false,
      "description": "Code generated by the model that is meant to be executed, and the result returned to the model.\n\nGenerated when using the [CodeExecution] tool, in which the code will be\nautomatically executed, and a corresponding [CodeExecutionResult] will also be\ngenerated.",
      "properties": {
        "code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The code to be executed.",
          "title": "Code"
        },
        "language": {
          "anyOf": [
            {
              "$ref": "#/$defs/Language"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. Programming language of the `code`."
        }
      },
      "title": "ExecutableCode",
      "type": "object"
    },
    "ExternalApi": {
      "additionalProperties": false,
      "description": "Retrieve from data source powered by external API for grounding.\n\nThe external API is not owned by Google, but need to follow the pre-defined\nAPI spec.",
      "properties": {
        "apiAuth": {
          "anyOf": [
            {
              "$ref": "#/$defs/ApiAuth"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The authentication config to access the API. Deprecated. Please use auth_config instead."
        },
        "apiSpec": {
          "anyOf": [
            {
              "$ref": "#/$defs/ApiSpec"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The API spec that the external API implements."
        },
        "authConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuthConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The authentication config to access the API."
        },
        "elasticSearchParams": {
          "anyOf": [
            {
              "$ref": "#/$defs/ExternalApiElasticSearchParams"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Parameters for the elastic search API."
        },
        "endpoint": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The endpoint of the external API. The system will call the API at this endpoint to retrieve the data for grounding. Example: https://acme.com:443/search",
          "title": "Endpoint"
        },
        "simpleSearchParams": {
          "anyOf": [
            {
              "$ref": "#/$defs/ExternalApiSimpleSearchParams"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Parameters for the simple search API."
        }
      },
      "title": "ExternalApi",
      "type": "object"
    },
    "ExternalApiElasticSearchParams": {
      "additionalProperties": false,
      "description": "The search parameters to use for the ELASTIC_SEARCH spec.",
      "properties": {
        "index": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ElasticSearch index to use.",
          "title": "Index"
        },
        "numHits": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Number of hits (chunks) to request. When specified, it is passed to Elasticsearch as the `num_hits` param.",
          "title": "Numhits"
        },
        "searchTemplate": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ElasticSearch search template to use.",
          "title": "Searchtemplate"
        }
      },
      "title": "ExternalApiElasticSearchParams",
      "type": "object"
    },
    "ExternalApiSimpleSearchParams": {
      "additionalProperties": false,
      "description": "The search parameters to use for SIMPLE_SEARCH spec.",
      "properties": {},
      "title": "ExternalApiSimpleSearchParams",
      "type": "object"
    },
    "FeatureSelectionPreference": {
      "description": "Options for feature selection preference.",
      "enum": [
        "FEATURE_SELECTION_PREFERENCE_UNSPECIFIED",
        "PRIORITIZE_QUALITY",
        "BALANCED",
        "PRIORITIZE_COST"
      ],
      "title": "FeatureSelectionPreference",
      "type": "string"
    },
    "File": {
      "additionalProperties": false,
      "description": "A file uploaded to the API.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The `File` resource name. The ID (name excluding the \"files/\" prefix) can contain up to 40 characters that are lowercase alphanumeric or dashes (-). The ID cannot start or end with a dash. If the name is empty on create, a unique name will be generated. Example: `files/123-456`",
          "title": "Name"
        },
        "displayName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The human-readable display name for the `File`. The display name must be no more than 512 characters in length, including spaces. Example: 'Welcome Image'",
          "title": "Displayname"
        },
        "mimeType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. MIME type of the file.",
          "title": "Mimetype"
        },
        "sizeBytes": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. Size of the file in bytes.",
          "title": "Sizebytes"
        },
        "createTime": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. The timestamp of when the `File` was created.",
          "title": "Createtime"
        },
        "expirationTime": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. The timestamp of when the `File` will be deleted. Only set if the `File` is scheduled to expire.",
          "title": "Expirationtime"
        },
        "updateTime": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. The timestamp of when the `File` was last updated.",
          "title": "Updatetime"
        },
        "sha256Hash": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. SHA-256 hash of the uploaded bytes. The hash value is encoded in base64 format.",
          "title": "Sha256Hash"
        },
        "uri": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. The URI of the `File`.",
          "title": "Uri"
        },
        "downloadUri": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. The URI of the `File`, only set for downloadable (generated) files.",
          "title": "Downloaduri"
        },
        "state": {
          "anyOf": [
            {
              "$ref": "#/$defs/FileState"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. Processing state of the File."
        },
        "source": {
          "anyOf": [
            {
              "$ref": "#/$defs/FileSource"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. The source of the `File`."
        },
        "videoMetadata": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. Metadata for a video.",
          "title": "Videometadata"
        },
        "error": {
          "anyOf": [
            {
              "$ref": "#/$defs/FileStatus"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output only. Error status if File processing failed."
        }
      },
      "title": "File",
      "type": "object"
    },
    "FileData": {
      "additionalProperties": false,
      "description": "URI based data.",
      "properties": {
        "displayName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Display name of the file data. Used to provide a label or filename to distinguish file data. It is not currently used in the Gemini GenerateContent calls.",
          "title": "Displayname"
        },
        "fileUri": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. URI.",
          "title": "Fileuri"
        },
        "mimeType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The IANA standard MIME type of the source data.",
          "title": "Mimetype"
        }
      },
      "title": "FileData",
      "type": "object"
    },
    "FileSource": {
      "description": "Source of the File.",
      "enum": [
        "SOURCE_UNSPECIFIED",
        "UPLOADED",
        "GENERATED"
      ],
      "title": "FileSource",
      "type": "string"
    },
    "FileState": {
      "description": "State for the lifecycle of a File.",
      "enum": [
        "STATE_UNSPECIFIED",
        "PROCESSING",
        "ACTIVE",
        "FAILED"
      ],
      "title": "FileState",
      "type": "string"
    },
    "FileStatus": {
      "additionalProperties": false,
      "description": "Status of a File that uses a common error model.",
      "properties": {
        "details": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "title": "Details"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "title": "Message"
        },
        "code": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status code. 0 for OK, 1 for CANCELLED",
          "title": "Code"
        }
      },
      "title": "FileStatus",
      "type": "object"
    },
    "FunctionCall": {
      "additionalProperties": false,
      "description": "A function call.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique ID of the function call. If populated, the client to execute the\n   `function_call` and return the response with the matching `id`.",
          "title": "Id"
        },
        "args": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The function parameters and values in JSON object format. See [FunctionDeclaration.parameters] for parameter details.",
          "title": "Args"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The name of the function to call. Matches [FunctionDeclaration.name].",
          "title": "Name"
        }
      },
      "title": "FunctionCall",
      "type": "object"
    },
    "FunctionCallingConfig": {
      "additionalProperties": false,
      "description": "Function calling config.",
      "properties": {
        "mode": {
          "anyOf": [
            {
              "$ref": "#/$defs/FunctionCallingConfigMode"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Function calling mode."
        },
        "allowedFunctionNames": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Function names to call. Only set when the Mode is ANY. Function names should match [FunctionDeclaration.name]. With mode set to ANY, model will predict a function call from the set of function names provided.",
          "title": "Allowedfunctionnames"
        }
      },
      "title": "FunctionCallingConfig",
      "type": "object"
    },
    "FunctionCallingConfigMode": {
      "description": "Config for the function calling config mode.",
      "enum": [
        "MODE_UNSPECIFIED",
        "AUTO",
        "ANY",
        "NONE"
      ],
      "title": "FunctionCallingConfigMode",
      "type": "string"
    },
    "FunctionDeclaration": {
      "additionalProperties": false,
      "description": "Defines a function that the model can generate JSON inputs for.\n\nThe inputs are based on `OpenAPI 3.0 specifications\n<https://spec.openapis.org/oas/v3.0.3>`_.",
      "properties": {
        "behavior": {
          "anyOf": [
            {
              "$ref": "#/$defs/Behavior"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Defines the function behavior."
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Description and purpose of the function. Model uses it to decide how and whether to call the function.",
          "title": "Description"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The name of the function to call. Must start with a letter or an underscore. Must be a-z, A-Z, 0-9, or contain underscores, dots and dashes, with a maximum length of 64.",
          "title": "Name"
        },
        "parameters": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Describes the parameters to this function in JSON Schema Object format. Reflects the Open API 3.03 Parameter Object. string Key: the name of the parameter. Parameter names are case-sensitive. Schema Value: the Schema defining the type used for the parameter. For function with no parameters, this can be left unset. Parameter names must start with a letter or an underscore and must only contain chars a-z, A-Z, 0-9, or underscores with a maximum length of 64. Example with 1 required and 1 optional parameter: type: OBJECT properties: param1: type: STRING param2: type: INTEGER required: - param1"
        },
        "parametersJsonSchema": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Describes the parameters to the function in JSON Schema format. The schema must describe an object where the properties are the parameters to the function. For example: ``` { \"type\": \"object\", \"properties\": { \"name\": { \"type\": \"string\" }, \"age\": { \"type\": \"integer\" } }, \"additionalProperties\": false, \"required\": [\"name\", \"age\"], \"propertyOrdering\": [\"name\", \"age\"] } ``` This field is mutually exclusive with `parameters`.",
          "title": "Parametersjsonschema"
        },
        "response": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Describes the output from this function in JSON Schema format. Reflects the Open API 3.03 Response Object. The Schema defines the type used for the response value of the function."
        },
        "responseJsonSchema": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Describes the output from this function in JSON Schema format. The value specified by the schema is the response value of the function. This field is mutually exclusive with `response`.",
          "title": "Responsejsonschema"
        }
      },
      "title": "FunctionDeclaration",
      "type": "object"
    },
    "FunctionResponse": {
      "additionalProperties": false,
      "description": "A function response.",
      "properties": {
        "willContinue": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Signals that function call continues, and more responses will be returned, turning the function call into a generator. Is only applicable to NON_BLOCKING function calls (see FunctionDeclaration.behavior for details), ignored otherwise. If false, the default, future responses will not be considered. Is only applicable to NON_BLOCKING function calls, is ignored otherwise. If set to false, future responses will not be considered. It is allowed to return empty `response` with `will_continue=False` to signal that the function call is finished.",
          "title": "Willcontinue"
        },
        "scheduling": {
          "anyOf": [
            {
              "$ref": "#/$defs/FunctionResponseScheduling"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The ID of the function call this response is for. Populated by the client to match the corresponding function call `id`.",
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The name of the function to call. Matches [FunctionDeclaration.name] and [FunctionCall.name].",
          "title": "Name"
        },
        "response": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The function response in JSON object format. Use \"output\" key to specify function output and \"error\" key to specify error details (if any). If \"output\" and \"error\" keys are not specified, then whole \"response\" is treated as function output.",
          "title": "Response"
        }
      },
      "title": "FunctionResponse",
      "type": "object"
    },
    "FunctionResponseScheduling": {
      "description": "Specifies how the response should be scheduled in the conversation.",
      "enum": [
        "SCHEDULING_UNSPECIFIED",
        "SILENT",
        "WHEN_IDLE",
        "INTERRUPT"
      ],
      "title": "FunctionResponseScheduling",
      "type": "string"
    },
    "GenerateContentConfig": {
      "additionalProperties": false,
      "description": "Optional model configuration parameters.\n\nFor more information, see `Content generation parameters\n<https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/content-generation-parameters>`_.",
      "properties": {
        "httpOptions": {
          "anyOf": [
            {
              "$ref": "#/$defs/HttpOptions"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Used to override HTTP request options."
        },
        "systemInstruction": {
          "anyOf": [
            {
              "$ref": "#/$defs/Content"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/File"
            },
            {
              "$ref": "#/$defs/Part"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/File"
                  },
                  {
                    "$ref": "#/$defs/Part"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Instructions for the model to steer it toward better performance.\n      For example, \"Answer as concisely as possible\" or \"Don't use technical\n      terms in your response\".\n      ",
          "title": "Systeminstruction"
        },
        "temperature": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Value that controls the degree of randomness in token selection.\n      Lower temperatures are good for prompts that require a less open-ended or\n      creative response, while higher temperatures can lead to more diverse or\n      creative results.\n      ",
          "title": "Temperature"
        },
        "topP": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Tokens are selected from the most to least probable until the sum\n      of their probabilities equals this value. Use a lower value for less\n      random responses and a higher value for more random responses.\n      ",
          "title": "Topp"
        },
        "topK": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "For each token selection step, the ``top_k`` tokens with the\n      highest probabilities are sampled. Then tokens are further filtered based\n      on ``top_p`` with the final token selected using temperature sampling. Use\n      a lower number for less random responses and a higher number for more\n      random responses.\n      ",
          "title": "Topk"
        },
        "candidateCount": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Number of response variations to return.\n      ",
          "title": "Candidatecount"
        },
        "maxOutputTokens": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Maximum number of tokens that can be generated in the response.\n      ",
          "title": "Maxoutputtokens"
        },
        "stopSequences": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "List of strings that tells the model to stop generating text if one\n      of the strings is encountered in the response.\n      ",
          "title": "Stopsequences"
        },
        "responseLogprobs": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether to return the log probabilities of the tokens that were\n      chosen by the model at each step.\n      ",
          "title": "Responselogprobs"
        },
        "logprobs": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Number of top candidate tokens to return the log probabilities for\n      at each generation step.\n      ",
          "title": "Logprobs"
        },
        "presencePenalty": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Positive values penalize tokens that already appear in the\n      generated text, increasing the probability of generating more diverse\n      content.\n      ",
          "title": "Presencepenalty"
        },
        "frequencyPenalty": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Positive values penalize tokens that repeatedly appear in the\n      generated text, increasing the probability of generating more diverse\n      content.\n      ",
          "title": "Frequencypenalty"
        },
        "seed": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "When ``seed`` is fixed to a specific number, the model makes a best\n      effort to provide the same response for repeated requests. By default, a\n      random number is used.\n      ",
          "title": "Seed"
        },
        "responseMimeType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Output response mimetype of the generated candidate text.\n      Supported mimetype:\n        - `text/plain`: (default) Text output.\n        - `application/json`: JSON response in the candidates.\n      The model needs to be prompted to output the appropriate response type,\n      otherwise the behavior is undefined.\n      This is a preview feature.\n      ",
          "title": "Responsemimetype"
        },
        "responseSchema": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "$ref": "#/$defs/Schema"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The `Schema` object allows the definition of input and output data types.\n      These types can be objects, but also primitives and arrays.\n      Represents a select subset of an [OpenAPI 3.0 schema\n      object](https://spec.openapis.org/oas/v3.0.3#schema).\n      If set, a compatible response_mime_type must also be set.\n      Compatible mimetypes: `application/json`: Schema for JSON response.\n      ",
          "title": "Responseschema"
        },
        "responseJsonSchema": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Output schema of the generated response.\n      This is an alternative to `response_schema` that accepts [JSON\n      Schema](https://json-schema.org/). If set, `response_schema` must be\n      omitted, but `response_mime_type` is required. While the full JSON Schema\n      may be sent, not all features are supported. Specifically, only the\n      following properties are supported: - `$id` - `$defs` - `$ref` - `$anchor`\n      - `type` - `format` - `title` - `description` - `enum` (for strings and\n      numbers) - `items` - `prefixItems` - `minItems` - `maxItems` - `minimum` -\n      `maximum` - `anyOf` - `oneOf` (interpreted the same as `anyOf`) -\n      `properties` - `additionalProperties` - `required` The non-standard\n      `propertyOrdering` property may also be set. Cyclic references are\n      unrolled to a limited degree and, as such, may only be used within\n      non-required properties. (Nullable properties are not sufficient.) If\n      `$ref` is set on a sub-schema, no other properties, except for than those\n      starting as a `$`, may be set.",
          "title": "Responsejsonschema"
        },
        "routingConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/GenerationConfigRoutingConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Configuration for model router requests.\n      "
        },
        "modelSelectionConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/ModelSelectionConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Configuration for model selection.\n      "
        },
        "safetySettings": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/SafetySetting"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Safety settings in the request to block unsafe content in the\n      response.\n      ",
          "title": "Safetysettings"
        },
        "tools": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/google__genai__types__Tool"
                  },
                  {
                    "$ref": "#/$defs/mcp__types__Tool"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Code that enables the system to interact with external systems to\n      perform an action outside of the knowledge and scope of the model.\n      ",
          "title": "Tools"
        },
        "toolConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/google__genai__types__ToolConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Associates model output to a specific function call.\n      "
        },
        "labels": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Labels with user-defined metadata to break down billed charges.",
          "title": "Labels"
        },
        "cachedContent": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Resource name of a context cache that can be used in subsequent\n      requests.\n      ",
          "title": "Cachedcontent"
        },
        "responseModalities": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The requested modalities of the response. Represents the set of\n      modalities that the model can return.\n      ",
          "title": "Responsemodalities"
        },
        "mediaResolution": {
          "anyOf": [
            {
              "$ref": "#/$defs/MediaResolution"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "If specified, the media resolution specified will be used.\n    "
        },
        "speechConfig": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/SpeechConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The speech generation configuration.\n      ",
          "title": "Speechconfig"
        },
        "audioTimestamp": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "If enabled, audio timestamp will be included in the request to the\n       model.\n      ",
          "title": "Audiotimestamp"
        },
        "automaticFunctionCalling": {
          "anyOf": [
            {
              "$ref": "#/$defs/AutomaticFunctionCallingConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The configuration for automatic function calling.\n      "
        },
        "thinkingConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/ThinkingConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The thinking features configuration.\n      "
        }
      },
      "title": "GenerateContentConfig",
      "type": "object"
    },
    "GenerationConfigRoutingConfig": {
      "additionalProperties": false,
      "description": "The configuration for routing the request to a specific model.",
      "properties": {
        "autoMode": {
          "anyOf": [
            {
              "$ref": "#/$defs/GenerationConfigRoutingConfigAutoRoutingMode"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Automated routing."
        },
        "manualMode": {
          "anyOf": [
            {
              "$ref": "#/$defs/GenerationConfigRoutingConfigManualRoutingMode"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Manual routing."
        }
      },
      "title": "GenerationConfigRoutingConfig",
      "type": "object"
    },
    "GenerationConfigRoutingConfigAutoRoutingMode": {
      "additionalProperties": false,
      "description": "When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference.",
      "properties": {
        "modelRoutingPreference": {
          "anyOf": [
            {
              "enum": [
                "UNKNOWN",
                "PRIORITIZE_QUALITY",
                "BALANCED",
                "PRIORITIZE_COST"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The model routing preference.",
          "title": "Modelroutingpreference"
        }
      },
      "title": "GenerationConfigRoutingConfigAutoRoutingMode",
      "type": "object"
    },
    "GenerationConfigRoutingConfigManualRoutingMode": {
      "additionalProperties": false,
      "description": "When manual routing is set, the specified model will be used directly.",
      "properties": {
        "modelName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The model name to use. Only the public LLM models are accepted. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).",
          "title": "Modelname"
        }
      },
      "title": "GenerationConfigRoutingConfigManualRoutingMode",
      "type": "object"
    },
    "GoogleMaps": {
      "additionalProperties": false,
      "description": "Tool to support Google Maps in Model.",
      "properties": {
        "authConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuthConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Auth config for the Google Maps tool."
        }
      },
      "title": "GoogleMaps",
      "type": "object"
    },
    "GoogleSearch": {
      "additionalProperties": false,
      "description": "Tool to support Google Search in Model. Powered by Google.",
      "properties": {
        "timeRangeFilter": {
          "anyOf": [
            {
              "$ref": "#/$defs/Interval"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Filter search results to a specific time range.\n      If customers set a start time, they must set an end time (and vice versa).\n      "
        },
        "excludeDomains": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. List of domains to be excluded from the search results.\n      The default limit is 2000 domains.",
          "title": "Excludedomains"
        }
      },
      "title": "GoogleSearch",
      "type": "object"
    },
    "GoogleSearchRetrieval": {
      "additionalProperties": false,
      "description": "Tool to retrieve public web data for grounding, powered by Google.",
      "properties": {
        "dynamicRetrievalConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/DynamicRetrievalConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Specifies the dynamic retrieval configuration for the given source."
        }
      },
      "title": "GoogleSearchRetrieval",
      "type": "object"
    },
    "HarmBlockMethod": {
      "description": "Optional.\n\nSpecify if the threshold is used for probability or severity score. If not\nspecified, the threshold is used for probability score.",
      "enum": [
        "HARM_BLOCK_METHOD_UNSPECIFIED",
        "SEVERITY",
        "PROBABILITY"
      ],
      "title": "HarmBlockMethod",
      "type": "string"
    },
    "HarmBlockThreshold": {
      "description": "Required. The harm block threshold.",
      "enum": [
        "HARM_BLOCK_THRESHOLD_UNSPECIFIED",
        "BLOCK_LOW_AND_ABOVE",
        "BLOCK_MEDIUM_AND_ABOVE",
        "BLOCK_ONLY_HIGH",
        "BLOCK_NONE",
        "OFF"
      ],
      "title": "HarmBlockThreshold",
      "type": "string"
    },
    "HarmCategory": {
      "description": "Required. Harm category.",
      "enum": [
        "HARM_CATEGORY_UNSPECIFIED",
        "HARM_CATEGORY_HATE_SPEECH",
        "HARM_CATEGORY_DANGEROUS_CONTENT",
        "HARM_CATEGORY_HARASSMENT",
        "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "HARM_CATEGORY_CIVIC_INTEGRITY",
        "HARM_CATEGORY_IMAGE_HATE",
        "HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT",
        "HARM_CATEGORY_IMAGE_HARASSMENT",
        "HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT"
      ],
      "title": "HarmCategory",
      "type": "string"
    },
    "HttpOptions": {
      "additionalProperties": false,
      "description": "HTTP options to be used in each of the requests.",
      "properties": {
        "baseUrl": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The base URL for the AI platform service endpoint.",
          "title": "Baseurl"
        },
        "apiVersion": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Specifies the version of the API to use.",
          "title": "Apiversion"
        },
        "headers": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Additional HTTP headers to be sent with the request.",
          "title": "Headers"
        },
        "timeout": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Timeout for the request in milliseconds.",
          "title": "Timeout"
        },
        "clientArgs": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Args passed to the HTTP client.",
          "title": "Clientargs"
        },
        "asyncClientArgs": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Args passed to the async HTTP client.",
          "title": "Asyncclientargs"
        },
        "extraBody": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Extra parameters to add to the request body.\n      The structure must match the backend API's request structure.\n      - VertexAI backend API docs: https://cloud.google.com/vertex-ai/docs/reference/rest\n      - GeminiAPI backend API docs: https://ai.google.dev/api/rest",
          "title": "Extrabody"
        },
        "retryOptions": {
          "anyOf": [
            {
              "$ref": "#/$defs/HttpRetryOptions"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "HTTP retry options for the request."
        }
      },
      "title": "HttpOptions",
      "type": "object"
    },
    "HttpRetryOptions": {
      "additionalProperties": false,
      "description": "HTTP retry options to be used in each of the requests.",
      "properties": {
        "attempts": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Maximum number of attempts, including the original request.\n      If 0 or 1, it means no retries.",
          "title": "Attempts"
        },
        "initialDelay": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Initial delay before the first retry, in fractions of a second.",
          "title": "Initialdelay"
        },
        "maxDelay": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Maximum delay between retries, in fractions of a second.",
          "title": "Maxdelay"
        },
        "expBase": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Multiplier by which the delay increases after each attempt.",
          "title": "Expbase"
        },
        "jitter": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Randomness factor for the delay.",
          "title": "Jitter"
        },
        "httpStatusCodes": {
          "anyOf": [
            {
              "items": {
                "type": "integer"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "List of HTTP status codes that should trigger a retry.\n      If not specified, a default set of retryable codes may be used.",
          "title": "Httpstatuscodes"
        }
      },
      "title": "HttpRetryOptions",
      "type": "object"
    },
    "Interval": {
      "additionalProperties": false,
      "description": "Represents a time interval, encoded as a start time (inclusive) and an end time (exclusive).\n\nThe start time must be less than or equal to the end time.\nWhen the start equals the end time, the interval is an empty interval.\n(matches no time)\nWhen both start and end are unspecified, the interval matches any time.",
      "properties": {
        "startTime": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The start time of the interval.",
          "title": "Starttime"
        },
        "endTime": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The end time of the interval.",
          "title": "Endtime"
        }
      },
      "title": "Interval",
      "type": "object"
    },
    "Language": {
      "description": "Required. Programming language of the `code`.",
      "enum": [
        "LANGUAGE_UNSPECIFIED",
        "PYTHON"
      ],
      "title": "Language",
      "type": "string"
    },
    "LatLng": {
      "additionalProperties": false,
      "description": "An object that represents a latitude/longitude pair.\n\nThis is expressed as a pair of doubles to represent degrees latitude and\ndegrees longitude. Unless specified otherwise, this object must conform to the\n<a href=\"https://en.wikipedia.org/wiki/World_Geodetic_System#1984_version\">\nWGS84 standard</a>. Values must be within normalized ranges.",
      "properties": {
        "latitude": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
          "title": "Latitude"
        },
        "longitude": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The longitude in degrees. It must be in the range [-180.0, +180.0]",
          "title": "Longitude"
        }
      },
      "title": "LatLng",
      "type": "object"
    },
    "LlmAgentConfig": {
      "additionalProperties": false,
      "description": "The config for the YAML schema of a LlmAgent.",
      "properties": {
        "agent_class": {
          "default": "LlmAgent",
          "description": "The value is used to uniquely identify the LlmAgent class. If it is empty, it is by default an LlmAgent.",
          "title": "Agent Class",
          "type": "string"
        },
        "name": {
          "description": "Required. The name of the agent.",
          "title": "Name",
          "type": "string"
        },
        "description": {
          "default": "",
          "description": "Optional. The description of the agent.",
          "title": "Description",
          "type": "string"
        },
        "sub_agents": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/AgentRefConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The sub-agents of the agent.",
          "title": "Sub Agents"
        },
        "before_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The before_agent_callbacks of the agent.\n\nExample:\n\n  ```\n  before_agent_callbacks:\n    - name: my_library.security_callbacks.before_agent_callback\n  ```",
          "title": "Before Agent Callbacks"
        },
        "after_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The after_agent_callbacks of the agent.",
          "title": "After Agent Callbacks"
        },
        "model": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.model. Provide a model name string (e.g. \"gemini-2.0-flash\"). If not set, the model will be inherited from the ancestor or fall back to the system default (gemini-2.5-flash unless overridden via LlmAgent.set_default_model). To construct a model instance from code, use model_code.",
          "title": "Model"
        },
        "instruction": {
          "description": "Required. LlmAgent.instruction.",
          "title": "Instruction",
          "type": "string"
        },
        "disallow_transfer_to_parent": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.disallow_transfer_to_parent.",
          "title": "Disallow Transfer To Parent"
        },
        "disallow_transfer_to_peers": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.disallow_transfer_to_peers.",
          "title": "Disallow Transfer To Peers"
        },
        "input_schema": {
          "anyOf": [
            {
              "$ref": "#/$defs/CodeConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.input_schema."
        },
        "output_schema": {
          "anyOf": [
            {
              "$ref": "#/$defs/CodeConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.output_schema."
        },
        "output_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.output_key.",
          "title": "Output Key"
        },
        "include_contents": {
          "default": "default",
          "description": "Optional. LlmAgent.include_contents.",
          "enum": [
            "default",
            "none"
          ],
          "title": "Include Contents",
          "type": "string"
        },
        "tools": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/google__adk__tools__tool_configs__ToolConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.tools.\n\nExamples:\n\n  For ADK built-in tools in `google.adk.tools` package, they can be referenced\n  directly with the name:\n\n    ```\n    tools:\n      - name: google_search\n      - name: load_memory\n    ```\n\n  For user-defined tools, they can be referenced with fully qualified name:\n\n    ```\n    tools:\n      - name: my_library.my_tools.my_tool\n    ```\n\n  For tools that needs to be created via functions:\n\n    ```\n    tools:\n      - name: my_library.my_tools.create_tool\n        args:\n          - name: param1\n            value: value1\n          - name: param2\n            value: value2\n    ```\n\n  For more advanced tools, instead of specifying arguments in config, it's\n  recommended to define them in Python files and reference them. E.g.,\n\n    ```\n    # tools.py\n    my_mcp_toolset = MCPToolset(\n        connection_params=StdioServerParameters(\n            command=\"npx\",\n            args=[\"-y\", \"@notionhq/notion-mcp-server\"],\n            env={\"OPENAPI_MCP_HEADERS\": NOTION_HEADERS},\n        )\n    )\n    ```\n\n  Then, reference the toolset in config:\n\n  ```\n  tools:\n    - name: tools.my_mcp_toolset\n  ```",
          "title": "Tools"
        },
        "before_model_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.before_model_callbacks.\n\nExample:\n\n  ```\n  before_model_callbacks:\n    - name: my_library.callbacks.before_model_callback\n  ```",
          "title": "Before Model Callbacks"
        },
        "after_model_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.after_model_callbacks.",
          "title": "After Model Callbacks"
        },
        "before_tool_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.before_tool_callbacks.",
          "title": "Before Tool Callbacks"
        },
        "after_tool_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.after_tool_callbacks.",
          "title": "After Tool Callbacks"
        },
        "generate_content_config": {
          "anyOf": [
            {
              "$ref": "#/$defs/GenerateContentConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LlmAgent.generate_content_config."
        }
      },
      "required": [
        "name",
        "instruction"
      ],
      "title": "LlmAgentConfig",
      "type": "object"
    },
    "LoopAgentConfig": {
      "additionalProperties": false,
      "description": "The config for the YAML schema of a LoopAgent.",
      "properties": {
        "agent_class": {
          "default": "LoopAgent",
          "description": "The value is used to uniquely identify the LoopAgent class.",
          "title": "Agent Class",
          "type": "string"
        },
        "name": {
          "description": "Required. The name of the agent.",
          "title": "Name",
          "type": "string"
        },
        "description": {
          "default": "",
          "description": "Optional. The description of the agent.",
          "title": "Description",
          "type": "string"
        },
        "sub_agents": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/AgentRefConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The sub-agents of the agent.",
          "title": "Sub Agents"
        },
        "before_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The before_agent_callbacks of the agent.\n\nExample:\n\n  ```\n  before_agent_callbacks:\n    - name: my_library.security_callbacks.before_agent_callback\n  ```",
          "title": "Before Agent Callbacks"
        },
        "after_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The after_agent_callbacks of the agent.",
          "title": "After Agent Callbacks"
        },
        "max_iterations": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. LoopAgent.max_iterations.",
          "title": "Max Iterations"
        }
      },
      "required": [
        "name"
      ],
      "title": "LoopAgentConfig",
      "type": "object"
    },
    "MediaResolution": {
      "description": "The media resolution to use.",
      "enum": [
        "MEDIA_RESOLUTION_UNSPECIFIED",
        "MEDIA_RESOLUTION_LOW",
        "MEDIA_RESOLUTION_MEDIUM",
        "MEDIA_RESOLUTION_HIGH"
      ],
      "title": "MediaResolution",
      "type": "string"
    },
    "ModelSelectionConfig": {
      "additionalProperties": false,
      "description": "Config for model selection.",
      "properties": {
        "featureSelectionPreference": {
          "anyOf": [
            {
              "$ref": "#/$defs/FeatureSelectionPreference"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Options for feature selection preference."
        }
      },
      "title": "ModelSelectionConfig",
      "type": "object"
    },
    "MultiSpeakerVoiceConfig": {
      "additionalProperties": false,
      "description": "The configuration for the multi-speaker setup.",
      "properties": {
        "speakerVoiceConfigs": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/SpeakerVoiceConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The configuration for the speaker to use.",
          "title": "Speakervoiceconfigs"
        }
      },
      "title": "MultiSpeakerVoiceConfig",
      "type": "object"
    },
    "Outcome": {
      "description": "Required. Outcome of the code execution.",
      "enum": [
        "OUTCOME_UNSPECIFIED",
        "OUTCOME_OK",
        "OUTCOME_FAILED",
        "OUTCOME_DEADLINE_EXCEEDED"
      ],
      "title": "Outcome",
      "type": "string"
    },
    "ParallelAgentConfig": {
      "additionalProperties": false,
      "description": "The config for the YAML schema of a ParallelAgent.",
      "properties": {
        "agent_class": {
          "default": "ParallelAgent",
          "description": "The value is used to uniquely identify the ParallelAgent class.",
          "title": "Agent Class",
          "type": "string"
        },
        "name": {
          "description": "Required. The name of the agent.",
          "title": "Name",
          "type": "string"
        },
        "description": {
          "default": "",
          "description": "Optional. The description of the agent.",
          "title": "Description",
          "type": "string"
        },
        "sub_agents": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/AgentRefConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The sub-agents of the agent.",
          "title": "Sub Agents"
        },
        "before_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The before_agent_callbacks of the agent.\n\nExample:\n\n  ```\n  before_agent_callbacks:\n    - name: my_library.security_callbacks.before_agent_callback\n  ```",
          "title": "Before Agent Callbacks"
        },
        "after_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The after_agent_callbacks of the agent.",
          "title": "After Agent Callbacks"
        }
      },
      "required": [
        "name"
      ],
      "title": "ParallelAgentConfig",
      "type": "object"
    },
    "Part": {
      "additionalProperties": false,
      "description": "A datatype containing media content.\n\nExactly one field within a Part should be set, representing the specific type\nof content being conveyed. Using multiple fields within the same `Part`\ninstance is considered invalid.",
      "properties": {
        "videoMetadata": {
          "anyOf": [
            {
              "$ref": "#/$defs/VideoMetadata"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Metadata for a given video."
        },
        "thought": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Indicates if the part is thought from the model.",
          "title": "Thought"
        },
        "inlineData": {
          "anyOf": [
            {
              "$ref": "#/$defs/Blob"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Inlined bytes data."
        },
        "fileData": {
          "anyOf": [
            {
              "$ref": "#/$defs/FileData"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. URI based data."
        },
        "thoughtSignature": {
          "anyOf": [
            {
              "format": "base64url",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "An opaque signature for the thought so it can be reused in subsequent requests.",
          "title": "Thoughtsignature"
        },
        "codeExecutionResult": {
          "anyOf": [
            {
              "$ref": "#/$defs/CodeExecutionResult"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Result of executing the [ExecutableCode]."
        },
        "executableCode": {
          "anyOf": [
            {
              "$ref": "#/$defs/ExecutableCode"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Code generated by the model that is meant to be executed."
        },
        "functionCall": {
          "anyOf": [
            {
              "$ref": "#/$defs/FunctionCall"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. A predicted [FunctionCall] returned from the model that contains a string representing the [FunctionDeclaration.name] with the parameters and their values."
        },
        "functionResponse": {
          "anyOf": [
            {
              "$ref": "#/$defs/FunctionResponse"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The result output of a [FunctionCall] that contains a string representing the [FunctionDeclaration.name] and a structured JSON object containing any output from the function call. It is used as context to the model."
        },
        "text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Text part (can be code).",
          "title": "Text"
        }
      },
      "title": "Part",
      "type": "object"
    },
    "PrebuiltVoiceConfig": {
      "additionalProperties": false,
      "description": "The configuration for the prebuilt speaker to use.",
      "properties": {
        "voiceName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of the prebuilt voice to use.",
          "title": "Voicename"
        }
      },
      "title": "PrebuiltVoiceConfig",
      "type": "object"
    },
    "RagRetrievalConfig": {
      "additionalProperties": false,
      "description": "Specifies the context retrieval config.",
      "properties": {
        "filter": {
          "anyOf": [
            {
              "$ref": "#/$defs/RagRetrievalConfigFilter"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Config for filters."
        },
        "hybridSearch": {
          "anyOf": [
            {
              "$ref": "#/$defs/RagRetrievalConfigHybridSearch"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Config for Hybrid Search."
        },
        "ranking": {
          "anyOf": [
            {
              "$ref": "#/$defs/RagRetrievalConfigRanking"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Config for ranking and reranking."
        },
        "topK": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The number of contexts to retrieve.",
          "title": "Topk"
        }
      },
      "title": "RagRetrievalConfig",
      "type": "object"
    },
    "RagRetrievalConfigFilter": {
      "additionalProperties": false,
      "description": "Config for filters.",
      "properties": {
        "metadataFilter": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. String for metadata filtering.",
          "title": "Metadatafilter"
        },
        "vectorDistanceThreshold": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Only returns contexts with vector distance smaller than the threshold.",
          "title": "Vectordistancethreshold"
        },
        "vectorSimilarityThreshold": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Only returns contexts with vector similarity larger than the threshold.",
          "title": "Vectorsimilaritythreshold"
        }
      },
      "title": "RagRetrievalConfigFilter",
      "type": "object"
    },
    "RagRetrievalConfigHybridSearch": {
      "additionalProperties": false,
      "description": "Config for Hybrid Search.",
      "properties": {
        "alpha": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Alpha value controls the weight between dense and sparse vector search results. The range is [0, 1], while 0 means sparse vector search only and 1 means dense vector search only. The default value is 0.5 which balances sparse and dense vector search equally.",
          "title": "Alpha"
        }
      },
      "title": "RagRetrievalConfigHybridSearch",
      "type": "object"
    },
    "RagRetrievalConfigRanking": {
      "additionalProperties": false,
      "description": "Config for ranking and reranking.",
      "properties": {
        "llmRanker": {
          "anyOf": [
            {
              "$ref": "#/$defs/RagRetrievalConfigRankingLlmRanker"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Config for LlmRanker."
        },
        "rankService": {
          "anyOf": [
            {
              "$ref": "#/$defs/RagRetrievalConfigRankingRankService"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Config for Rank Service."
        }
      },
      "title": "RagRetrievalConfigRanking",
      "type": "object"
    },
    "RagRetrievalConfigRankingLlmRanker": {
      "additionalProperties": false,
      "description": "Config for LlmRanker.",
      "properties": {
        "modelName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).",
          "title": "Modelname"
        }
      },
      "title": "RagRetrievalConfigRankingLlmRanker",
      "type": "object"
    },
    "RagRetrievalConfigRankingRankService": {
      "additionalProperties": false,
      "description": "Config for Rank Service.",
      "properties": {
        "modelName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`",
          "title": "Modelname"
        }
      },
      "title": "RagRetrievalConfigRankingRankService",
      "type": "object"
    },
    "Retrieval": {
      "additionalProperties": false,
      "description": "Defines a retrieval tool that model can call to access external knowledge.",
      "properties": {
        "disableAttribution": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Deprecated. This option is no longer supported.",
          "title": "Disableattribution"
        },
        "externalApi": {
          "anyOf": [
            {
              "$ref": "#/$defs/ExternalApi"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Use data source powered by external API for grounding."
        },
        "vertexAiSearch": {
          "anyOf": [
            {
              "$ref": "#/$defs/VertexAISearch"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Set to use data source powered by Vertex AI Search."
        },
        "vertexRagStore": {
          "anyOf": [
            {
              "$ref": "#/$defs/VertexRagStore"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Set to use data source powered by Vertex RAG store. User data is uploaded via the VertexRagDataService."
        }
      },
      "title": "Retrieval",
      "type": "object"
    },
    "RetrievalConfig": {
      "additionalProperties": false,
      "description": "Retrieval config.",
      "properties": {
        "latLng": {
          "anyOf": [
            {
              "$ref": "#/$defs/LatLng"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The location of the user."
        },
        "languageCode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The language code of the user.",
          "title": "Languagecode"
        }
      },
      "title": "RetrievalConfig",
      "type": "object"
    },
    "SafetySetting": {
      "additionalProperties": false,
      "description": "Safety settings.",
      "properties": {
        "method": {
          "anyOf": [
            {
              "$ref": "#/$defs/HarmBlockMethod"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Determines if the harm block method uses probability or probability\n      and severity scores."
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/HarmCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. Harm category."
        },
        "threshold": {
          "anyOf": [
            {
              "$ref": "#/$defs/HarmBlockThreshold"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The harm block threshold."
        }
      },
      "title": "SafetySetting",
      "type": "object"
    },
    "Schema": {
      "additionalProperties": false,
      "description": "Schema is used to define the format of input/output data.\n\nRepresents a select subset of an [OpenAPI 3.0 schema\nobject](https://spec.openapis.org/oas/v3.0.3#schema-object). More fields may\nbe added in the future as needed.",
      "properties": {
        "additionalProperties": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Can either be a boolean or an object; controls the presence of additional properties.",
          "title": "Additionalproperties"
        },
        "defs": {
          "anyOf": [
            {
              "additionalProperties": {
                "$ref": "#/$defs/Schema"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. A map of definitions for use by `ref` Only allowed at the root of the schema.",
          "title": "Defs"
        },
        "ref": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "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",
          "title": "Ref"
        },
        "anyOf": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Schema"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The value should be validated against any (one or more) of the subschemas in the list.",
          "title": "Anyof"
        },
        "default": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Default value of the data.",
          "title": "Default"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The description of the data.",
          "title": "Description"
        },
        "enum": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "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\"]}",
          "title": "Enum"
        },
        "example": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Example of the object. Will only populated when the object is the root.",
          "title": "Example"
        },
        "format": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The format of the data. Supported formats: for NUMBER type: \"float\", \"double\" for INTEGER type: \"int32\", \"int64\" for STRING type: \"email\", \"byte\", etc",
          "title": "Format"
        },
        "items": {
          "anyOf": [
            {
              "$ref": "#/$defs/Schema"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. SCHEMA FIELDS FOR TYPE ARRAY Schema of the elements of Type.ARRAY."
        },
        "maxItems": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Maximum number of the elements for Type.ARRAY.",
          "title": "Maxitems"
        },
        "maxLength": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Maximum length of the Type.STRING",
          "title": "Maxlength"
        },
        "maxProperties": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Maximum number of the properties for Type.OBJECT.",
          "title": "Maxproperties"
        },
        "maximum": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Maximum value of the Type.INTEGER and Type.NUMBER",
          "title": "Maximum"
        },
        "minItems": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Minimum number of the elements for Type.ARRAY.",
          "title": "Minitems"
        },
        "minLength": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. SCHEMA FIELDS FOR TYPE STRING Minimum length of the Type.STRING",
          "title": "Minlength"
        },
        "minProperties": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Minimum number of the properties for Type.OBJECT.",
          "title": "Minproperties"
        },
        "minimum": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. SCHEMA FIELDS FOR TYPE INTEGER and NUMBER Minimum value of the Type.INTEGER and Type.NUMBER",
          "title": "Minimum"
        },
        "nullable": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Indicates if the value may be null.",
          "title": "Nullable"
        },
        "pattern": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Pattern of the Type.STRING to restrict a string to a regular expression.",
          "title": "Pattern"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": {
                "$ref": "#/$defs/Schema"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. SCHEMA FIELDS FOR TYPE OBJECT Properties of Type.OBJECT.",
          "title": "Properties"
        },
        "propertyOrdering": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The order of the properties. Not a standard field in open api spec. Only used to support the order of the properties.",
          "title": "Propertyordering"
        },
        "required": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Required properties of Type.OBJECT.",
          "title": "Required"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The title of the Schema.",
          "title": "Title"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/Type"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The type of the data."
        }
      },
      "title": "Schema",
      "type": "object"
    },
    "SequentialAgentConfig": {
      "additionalProperties": false,
      "description": "The config for the YAML schema of a SequentialAgent.",
      "properties": {
        "agent_class": {
          "default": "SequentialAgent",
          "description": "The value is used to uniquely identify the SequentialAgent class.",
          "title": "Agent Class",
          "type": "string"
        },
        "name": {
          "description": "Required. The name of the agent.",
          "title": "Name",
          "type": "string"
        },
        "description": {
          "default": "",
          "description": "Optional. The description of the agent.",
          "title": "Description",
          "type": "string"
        },
        "sub_agents": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/AgentRefConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The sub-agents of the agent.",
          "title": "Sub Agents"
        },
        "before_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The before_agent_callbacks of the agent.\n\nExample:\n\n  ```\n  before_agent_callbacks:\n    - name: my_library.security_callbacks.before_agent_callback\n  ```",
          "title": "Before Agent Callbacks"
        },
        "after_agent_callbacks": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CodeConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The after_agent_callbacks of the agent.",
          "title": "After Agent Callbacks"
        }
      },
      "required": [
        "name"
      ],
      "title": "SequentialAgentConfig",
      "type": "object"
    },
    "SpeakerVoiceConfig": {
      "additionalProperties": false,
      "description": "The configuration for the speaker to use.",
      "properties": {
        "speaker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of the speaker to use. Should be the same as in the\n          prompt.",
          "title": "Speaker"
        },
        "voiceConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/VoiceConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The configuration for the voice to use."
        }
      },
      "title": "SpeakerVoiceConfig",
      "type": "object"
    },
    "SpeechConfig": {
      "additionalProperties": false,
      "description": "The speech generation configuration.",
      "properties": {
        "voiceConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/VoiceConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The configuration for the speaker to use.\n      "
        },
        "multiSpeakerVoiceConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/MultiSpeakerVoiceConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The configuration for the multi-speaker setup.\n          It is mutually exclusive with the voice_config field.\n          "
        },
        "languageCode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Language code (ISO 639. e.g. en-US) for the speech synthesization.\n      Only available for Live API.\n      ",
          "title": "Languagecode"
        }
      },
      "title": "SpeechConfig",
      "type": "object"
    },
    "ThinkingConfig": {
      "additionalProperties": false,
      "description": "The thinking features configuration.",
      "properties": {
        "includeThoughts": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Indicates whether to include thoughts in the response. If true, thoughts are returned only if the model supports thought and thoughts are available.\n      ",
          "title": "Includethoughts"
        },
        "thinkingBudget": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Indicates the thinking budget in tokens. 0 is DISABLED. -1 is AUTOMATIC. The default values and allowed ranges are model dependent.\n      ",
          "title": "Thinkingbudget"
        }
      },
      "title": "ThinkingConfig",
      "type": "object"
    },
    "ToolAnnotations": {
      "additionalProperties": true,
      "description": "Additional properties describing a Tool to clients.\n\nNOTE: all properties in ToolAnnotations are **hints**.\nThey are not guaranteed to provide a faithful description of\ntool behavior (including descriptive properties like `title`).\n\nClients should never make tool use decisions based on ToolAnnotations\nreceived from untrusted servers.",
      "properties": {
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "readOnlyHint": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Readonlyhint"
        },
        "destructiveHint": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Destructivehint"
        },
        "idempotentHint": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Idempotenthint"
        },
        "openWorldHint": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Openworldhint"
        }
      },
      "title": "ToolAnnotations",
      "type": "object"
    },
    "ToolArgsConfig": {
      "additionalProperties": true,
      "description": "Config to host free key-value pairs for the args in ToolConfig.",
      "properties": {},
      "title": "ToolArgsConfig",
      "type": "object"
    },
    "ToolCodeExecution": {
      "additionalProperties": false,
      "description": "Tool that executes code generated by the model, and automatically returns the result to the model.\n\nSee also [ExecutableCode]and [CodeExecutionResult] which are input and output\nto this tool.",
      "properties": {},
      "title": "ToolCodeExecution",
      "type": "object"
    },
    "ToolComputerUse": {
      "additionalProperties": false,
      "description": "Tool to support computer use.",
      "properties": {
        "environment": {
          "anyOf": [
            {
              "$ref": "#/$defs/Environment"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Required. The environment being operated."
        }
      },
      "title": "ToolComputerUse",
      "type": "object"
    },
    "Type": {
      "description": "Optional. The type of the data.",
      "enum": [
        "TYPE_UNSPECIFIED",
        "STRING",
        "NUMBER",
        "INTEGER",
        "BOOLEAN",
        "ARRAY",
        "OBJECT",
        "NULL"
      ],
      "title": "Type",
      "type": "string"
    },
    "UrlContext": {
      "additionalProperties": false,
      "description": "Tool to support URL context retrieval.",
      "properties": {},
      "title": "UrlContext",
      "type": "object"
    },
    "VertexAISearch": {
      "additionalProperties": false,
      "description": "Retrieve from Vertex AI Search datastore or engine for grounding.\n\ndatastore and engine are mutually exclusive. See\nhttps://cloud.google.com/products/agent-builder",
      "properties": {
        "dataStoreSpecs": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/VertexAISearchDataStoreSpec"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Specifications that define the specific DataStores to be searched, along with configurations for those data stores. This is only considered for Engines with multiple data stores. It should only be set if engine is used.",
          "title": "Datastorespecs"
        },
        "datastore": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`",
          "title": "Datastore"
        },
        "engine": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`",
          "title": "Engine"
        },
        "filter": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Filter strings to be passed to the search API.",
          "title": "Filter"
        },
        "maxResults": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Number of search results to return per query. The default value is 10. The maximum allowed value is 10.",
          "title": "Maxresults"
        }
      },
      "title": "VertexAISearch",
      "type": "object"
    },
    "VertexAISearchDataStoreSpec": {
      "additionalProperties": false,
      "description": "Define data stores within engine to filter on in a search call and configurations for those data stores.\n\nFor more information, see\nhttps://cloud.google.com/generative-ai-app-builder/docs/reference/rpc/google.cloud.discoveryengine.v1#datastorespec",
      "properties": {
        "dataStore": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Full resource name of DataStore, such as Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`",
          "title": "Datastore"
        },
        "filter": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Filter specification to filter documents in the data store specified by data_store field. For more information on filtering, see [Filtering](https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata)",
          "title": "Filter"
        }
      },
      "title": "VertexAISearchDataStoreSpec",
      "type": "object"
    },
    "VertexRagStore": {
      "additionalProperties": false,
      "description": "Retrieve from Vertex RAG Store for grounding.",
      "properties": {
        "ragCorpora": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Deprecated. Please use rag_resources instead.",
          "title": "Ragcorpora"
        },
        "ragResources": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/VertexRagStoreRagResource"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The representation of the rag source. It can be used to specify corpus only or ragfiles. Currently only support one corpus or multiple files from one corpus. In the future we may open up multiple corpora support.",
          "title": "Ragresources"
        },
        "ragRetrievalConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/RagRetrievalConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The retrieval config for the Rag query."
        },
        "similarityTopK": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Number of top k results to return from the selected corpora.",
          "title": "Similaritytopk"
        },
        "storeContext": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Currently only supported for Gemini Multimodal Live API. In Gemini Multimodal Live API, if `store_context` bool is specified, Gemini will leverage it to automatically memorize the interactions between the client and Gemini, and retrieve context when needed to augment the response generation for users' ongoing and future interactions.",
          "title": "Storecontext"
        },
        "vectorDistanceThreshold": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Only return results with vector distance smaller than the threshold.",
          "title": "Vectordistancethreshold"
        }
      },
      "title": "VertexRagStore",
      "type": "object"
    },
    "VertexRagStoreRagResource": {
      "additionalProperties": false,
      "description": "The definition of the Rag resource.",
      "properties": {
        "ragCorpus": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`",
          "title": "Ragcorpus"
        },
        "ragFileIds": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.",
          "title": "Ragfileids"
        }
      },
      "title": "VertexRagStoreRagResource",
      "type": "object"
    },
    "VideoMetadata": {
      "additionalProperties": false,
      "description": "Describes how the video in the Part should be used by the model.",
      "properties": {
        "fps": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The frame rate of the video sent to the model. If not specified, the\n        default value will be 1.0. The fps range is (0.0, 24.0].",
          "title": "Fps"
        },
        "endOffset": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The end offset of the video.",
          "title": "Endoffset"
        },
        "startOffset": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. The start offset of the video.",
          "title": "Startoffset"
        }
      },
      "title": "VideoMetadata",
      "type": "object"
    },
    "VoiceConfig": {
      "additionalProperties": false,
      "description": "The configuration for the voice to use.",
      "properties": {
        "prebuiltVoiceConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/PrebuiltVoiceConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The configuration for the speaker to use.\n      "
        }
      },
      "title": "VoiceConfig",
      "type": "object"
    },
    "google__adk__tools__tool_configs__ToolConfig": {
      "additionalProperties": false,
      "description": "The configuration for a tool.\n\nThe config supports these types of tools:\n1. ADK built-in tools\n2. User-defined tool instances\n3. User-defined tool classes\n4. User-defined functions that generate tool instances\n5. User-defined function tools\n\nFor examples:\n\n  1. For ADK built-in tool instances or classes in `google.adk.tools` package,\n  they can be referenced directly with the `name` and optionally with\n  `args`.\n\n  ```\n  tools:\n    - name: google_search\n    - name: AgentTool\n      args:\n        agent: ./another_agent.yaml\n        skip_summarization: true\n  ```\n\n  2. For user-defined tool instances, the `name` is the fully qualified path\n  to the tool instance.\n\n  ```\n  tools:\n    - name: my_package.my_module.my_tool\n  ```\n\n  3. For user-defined tool classes (custom tools), the `name` is the fully\n  qualified path to the tool class and `args` is the arguments for the tool.\n\n  ```\n  tools:\n    - name: my_package.my_module.my_tool_class\n      args:\n        my_tool_arg1: value1\n        my_tool_arg2: value2\n  ```\n\n  4. For user-defined functions that generate tool instances, the `name` is\n  the fully qualified path to the function and `args` is passed to the\n  function as arguments.\n\n  ```\n  tools:\n    - name: my_package.my_module.my_tool_function\n      args:\n        my_function_arg1: value1\n        my_function_arg2: value2\n  ```\n\n  The function must have the following signature:\n  ```\n  def my_function(args: ToolArgsConfig) -> BaseTool:\n    ...\n  ```\n\n  5. For user-defined function tools, the `name` is the fully qualified path\n  to the function.\n\n  ```\n  tools:\n    - name: my_package.my_module.my_function_tool\n  ```\n\n  If the above use cases don't suffice, users can define a custom tool config\n  by extending BaseToolConfig and override from_config() in the custom tool.",
      "properties": {
        "name": {
          "description": "The name of the tool.\n\nFor ADK built-in tools, `name` is the name of the tool, e.g. `google_search`\nor `AgentTool`.\n\nFor user-defined tools, the name is the fully qualified path to the tool, e.g.\n`my_package.my_module.my_tool`.",
          "title": "Name",
          "type": "string"
        },
        "args": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolArgsConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The args for the tool."
        }
      },
      "required": [
        "name"
      ],
      "title": "ToolConfig",
      "type": "object"
    },
    "google__genai__types__Tool": {
      "additionalProperties": false,
      "description": "Tool details of a tool that the model may use to generate a response.",
      "properties": {
        "functionDeclarations": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/FunctionDeclaration"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "List of function declarations that the tool supports.",
          "title": "Functiondeclarations"
        },
        "retrieval": {
          "anyOf": [
            {
              "$ref": "#/$defs/Retrieval"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Retrieval tool type. System will always execute the provided retrieval tool(s) to get external knowledge to answer the prompt. Retrieval results are presented to the model for generation."
        },
        "googleSearch": {
          "anyOf": [
            {
              "$ref": "#/$defs/GoogleSearch"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Google Search tool type. Specialized retrieval tool\n      that is powered by Google Search."
        },
        "googleSearchRetrieval": {
          "anyOf": [
            {
              "$ref": "#/$defs/GoogleSearchRetrieval"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. GoogleSearchRetrieval tool type. Specialized retrieval tool that is powered by Google search."
        },
        "enterpriseWebSearch": {
          "anyOf": [
            {
              "$ref": "#/$defs/EnterpriseWebSearch"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Enterprise web search tool type. Specialized retrieval\n      tool that is powered by Vertex AI Search and Sec4 compliance."
        },
        "googleMaps": {
          "anyOf": [
            {
              "$ref": "#/$defs/GoogleMaps"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Google Maps tool type. Specialized retrieval tool\n      that is powered by Google Maps."
        },
        "urlContext": {
          "anyOf": [
            {
              "$ref": "#/$defs/UrlContext"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Tool to support URL context retrieval."
        },
        "computerUse": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolComputerUse"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Tool to support the model interacting directly with the\n      computer. If enabled, it automatically populates computer-use specific\n      Function Declarations."
        },
        "codeExecution": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolCodeExecution"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. CodeExecution tool type. Enables the model to execute code as part of generation."
        }
      },
      "title": "Tool",
      "type": "object"
    },
    "google__genai__types__ToolConfig": {
      "additionalProperties": false,
      "description": "Tool config.\n\nThis config is shared for all tools provided in the request.",
      "properties": {
        "functionCallingConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/FunctionCallingConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Function calling config."
        },
        "retrievalConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/RetrievalConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional. Retrieval config."
        }
      },
      "title": "ToolConfig",
      "type": "object"
    },
    "mcp__types__Tool": {
      "additionalProperties": true,
      "description": "Definition for a tool that the client can call.",
      "properties": {
        "name": {
          "title": "Name",
          "type": "string"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Description"
        },
        "inputSchema": {
          "additionalProperties": true,
          "title": "Inputschema",
          "type": "object"
        },
        "outputSchema": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Outputschema"
        },
        "annotations": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolAnnotations"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "_meta": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Meta"
        }
      },
      "required": [
        "name",
        "inputSchema"
      ],
      "title": "Tool",
      "type": "object"
    }
  },
  "description": "The config for the YAML schema to create an agent.",
  "oneOf": [
    {
      "$ref": "#/$defs/LlmAgentConfig"
    },
    {
      "$ref": "#/$defs/LoopAgentConfig"
    },
    {
      "$ref": "#/$defs/ParallelAgentConfig"
    },
    {
      "$ref": "#/$defs/SequentialAgentConfig"
    },
    {
      "$ref": "#/$defs/BaseAgentConfig"
    }
  ],
  "title": "AgentConfig"
}
