{
  "openapi": "3.0.3",
  "info": {
    "title": "Gemini API",
    "description": "The Gemini Interactions API allows developers to build generative AI applications using Gemini models. Gemini is our most capable model, built from the ground up to be multimodal. It can generalize and seamlessly understand, operate across, and combine different types of information including language, images, audio, video, and code. You can use the Gemini API for use cases like reasoning across text and images, content generation, dialogue agents, summarization and classification systems, and more.",
    "version": "v1beta",
    "x-google-revision": "0"
  },
  "servers": [
    {
      "url": "https://generativelanguage.googleapis.com",
      "description": "Global Endpoint"
    }
  ],
  "paths": {
    "/upload/{api_version}/environments/{environment}/files/{path}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        },
        {
          "name": "environment",
          "in": "path",
          "description": "The ID of the environment that owns the destination file.",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "path",
          "in": "path",
          "description": "The relative destination path inside the environment workspace.",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "put": {
        "operationId": "StartEnvironmentFileUpload",
        "description": "Starts a resumable upload session for a file in an environment workspace.\nUpload the file bytes to the URL returned in the `X-Goog-Upload-URL`\nresponse header, using the resumable upload protocol.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/EnvironmentFileExtract"
          },
          {
            "$ref": "#/components/parameters/EnvironmentFileOverwrite"
          },
          {
            "$ref": "#/components/parameters/EnvironmentFileUploadCommand"
          },
          {
            "$ref": "#/components/parameters/EnvironmentFileUploadContentLength"
          },
          {
            "$ref": "#/components/parameters/EnvironmentFileUploadContentType"
          },
          {
            "$ref": "#/components/parameters/EnvironmentFileUploadProtocol"
          }
        ],
        "responses": {
          "200": {
            "description": "Upload session created successfully. Send the file bytes to the returned upload URL.",
            "headers": {
              "X-Goog-Upload-URL": {
                "$ref": "#/components/headers/EnvironmentFileUploadUrl"
              }
            }
          },
          "4XX": {
            "description": "The upload session request failed with a client error."
          },
          "5XX": {
            "description": "The upload session request failed with a server error."
          }
        },
        "summary": "Start an environment file upload",
        "x-codeSamples": [
          {
            "label": "start_upload",
            "lang": "sh",
            "source": "curl -i -X PUT \\\n  'https://generativelanguage.googleapis.com/upload/v1beta/environments/env_abc123/files/main.py?overwrite=true' \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H 'X-Goog-Upload-Protocol: resumable' \\\n  -H 'X-Goog-Upload-Command: start' \\\n  -H \"X-Goog-Upload-Header-Content-Length: $(wc -c < main.py)\" \\\n  -H 'X-Goog-Upload-Header-Content-Type: text/x-python'\n"
          }
        ]
      }
    },
    "/{api_version}/agents": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "get": {
        "operationId": "ListAgents",
        "description": "Lists all Agents.",
        "parameters": [
          {
            "name": "page_size",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parent",
            "in": "query",
            "description": "Required. The parent resource to list agents from.\nFormat: `projects/{project}/locations/{location}`",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "examples": {
                  "list": {
                    "summary": "List Agents",
                    "value": {
                      "agents": [
                        {
                          "description": "A helpful research assistant.",
                          "base_agent": "antigravity-preview-05-2026",
                          "id": "research-assistant-abc123",
                          "system_instruction": "You are a helpful research assistant.",
                          "tools": [
                            {
                              "type": "google_search"
                            }
                          ]
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ListAgentsResponse"
                }
              }
            }
          }
        },
        "tags": [
          "agents"
        ],
        "x-codeSamples": [
          {
            "label": "list",
            "lang": "sh",
            "source": "curl -X GET https://generativelanguage.googleapis.com/v1beta/agents \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "list",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.agents.list()\nfor agent in response.agents or []:\n  print(agent.id)\n"
          },
          {
            "label": "list",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst agents = await ai.agents.list();\nfor (const agent of agents.agents ?? []) {\n  console.log(agent.id);\n}\n"
          },
          {
            "label": "list",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.agents.Agent;\nimport com.google.genai.gaos.models.agents.AgentListResponse;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.ListAgentsResponse;\n\nClient client = new Client();\nListAgentsResponse response = client.agents.list().call();\nList<Agent> agents =\n    response.agentListResponse().flatMap(AgentListResponse::agents).orElse(List.of());\nfor (Agent agent : agents) {\n  agent.id().ifPresent(System.out::println);\n}\n"
          },
          {
            "label": "list",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    res, err := client.Agents.List(ctx, operations.ListAgentsRequest{})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.AgentListResponse != nil {\n        for _, agent := range res.AgentListResponse.Agents {\n            if agent.ID != nil {\n                fmt.Println(*agent.ID)\n            }\n        }\n    }\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "CreateAgent",
        "description": "Creates a new Agent (Typed version for SDK).",
        "parameters": [
          {
            "name": "parent",
            "in": "query",
            "description": "Required. The parent resource where this agent will be created.\nFormat: `projects/{project}/locations/{location}`",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Required. The request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Agent"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "examples": {
                  "create": {
                    "summary": "Create Agent",
                    "value": {
                      "description": "A helpful research assistant.",
                      "base_agent": "antigravity-preview-05-2026",
                      "base_environment": "remote",
                      "id": "research-assistant-abc123",
                      "system_instruction": "You are a helpful research assistant.",
                      "tools": [
                        {
                          "type": "google_search"
                        }
                      ]
                    }
                  },
                  "fork_from_env": {
                    "summary": "Agent Forked from Environment",
                    "value": {
                      "base_agent": "antigravity-preview-05-2026",
                      "base_environment": "env_abc123",
                      "id": "my-data-analyst-abc123",
                      "system_instruction": "You are a data analyst. Use the template at /workspace/template.py for all reports."
                    }
                  },
                  "with_sources": {
                    "summary": "Agent with Sources",
                    "value": {
                      "base_agent": "antigravity-preview-05-2026",
                      "base_environment": {
                        "type": "remote",
                        "sources": [
                          {
                            "type": "inline",
                            "content": "Always use matplotlib for charts. Include a summary table in every report.",
                            "target": ".agents/AGENTS.md"
                          },
                          {
                            "type": "repository",
                            "source": "https://github.com/my-org/analysis-templates",
                            "target": "/workspace/templates"
                          }
                        ]
                      },
                      "id": "data-analyst-abc123",
                      "system_instruction": "You are a data analyst. Always include visualizations and export results as PDF."
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Agent"
                }
              }
            }
          }
        },
        "tags": [
          "agents"
        ],
        "x-codeSamples": [
          {
            "label": "create",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/agents \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"id\": \"research-assistant-abc123\",\n    \"base_agent\": \"antigravity-preview-05-2026\",\n    \"description\": \"A helpful research assistant.\",\n    \"system_instruction\": \"You are a helpful research assistant.\",\n    \"base_environment\": \"remote\",\n    \"tools\": [{\"type\": \"google_search\"}]\n  }'\n"
          },
          {
            "label": "with_sources",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/agents \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"id\": \"data-analyst-abc123\",\n    \"base_agent\": \"antigravity-preview-05-2026\",\n    \"system_instruction\": \"You are a data analyst. Always include visualizations and export results as PDF.\",\n    \"base_environment\": {\n      \"type\": \"remote\",\n      \"sources\": [\n        {\n          \"type\": \"inline\",\n          \"target\": \".agents/AGENTS.md\",\n          \"content\": \"Always use matplotlib for charts. Include a summary table in every report.\"\n        },\n        {\n          \"type\": \"repository\",\n          \"source\": \"https://github.com/my-org/analysis-templates\",\n          \"target\": \"/workspace/templates\"\n        }\n      ]\n    }\n  }'\n"
          },
          {
            "label": "fork_from_env",
            "lang": "sh",
            "source": "# Step 1: Set up the environment interactively\nRESPONSE=$(curl -s -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"agent\": \"antigravity-preview-05-2026\",\n    \"input\": \"Write a basic Hello World template to /workspace/template.py.\",\n    \"environment\": \"remote\"\n  }')\nENV_ID=$(echo \"$RESPONSE\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['environment_id'])\")\n\n# Step 2: Fork that environment into a named agent\ncurl -X POST https://generativelanguage.googleapis.com/v1beta/agents \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"{\n    \\\"id\\\": \\\"my-data-analyst\\\",\n    \\\"base_agent\\\": \\\"antigravity-preview-05-2026\\\",\n    \\\"system_instruction\\\": \\\"You are a data analyst. Use the template at /workspace/template.py for all reports.\\\",\n    \\\"base_environment\\\": \\\"$ENV_ID\\\"\n  }\"\n"
          },
          {
            "label": "create",
            "lang": "python",
            "source": "import uuid\nfrom google import genai\n\nclient = genai.Client()\nagent = client.agents.create(\n    id=f\"research-assistant-{uuid.uuid4().hex[:8]}\",\n    base_agent=\"antigravity-preview-05-2026\",\n    description=\"A helpful research assistant.\",\n    system_instruction=\"You are a helpful research assistant.\",\n    base_environment=\"remote\",\n    tools=[{\"type\": \"google_search\"}],\n)\nprint(agent.id)\n"
          },
          {
            "label": "with_sources",
            "lang": "python",
            "source": "import uuid\nfrom google import genai\n\nclient = genai.Client()\nagent = client.agents.create(\n    id=f\"data-analyst-{uuid.uuid4().hex[:8]}\",\n    base_agent=\"antigravity-preview-05-2026\",\n    system_instruction=(\n        \"You are a data analyst. Always include visualizations and export\"\n        \" results as PDF.\"\n    ),\n    base_environment={\n        \"type\": \"remote\",\n        \"sources\": [\n            {\n                \"type\": \"inline\",\n                \"target\": \".agents/AGENTS.md\",\n                \"content\": (\n                    \"Always use matplotlib for charts. Include a summary\"\n                    \" table in every report.\"\n                ),\n            },\n            {\n                \"type\": \"repository\",\n                \"source\": \"https://github.com/my-org/analysis-templates\",\n                \"target\": \"/workspace/templates\",\n            },\n        ],\n    },\n)\nprint(f\"Created agent: {agent.id}\")\n"
          },
          {
            "label": "fork_from_env",
            "lang": "python",
            "source": "import uuid\nfrom google import genai\n\nclient = genai.Client()\n\n# Step 1: Set up the environment interactively.\ninteraction = client.interactions.create(\n    agent=\"antigravity-preview-05-2026\",\n    input=\"Write a basic Hello World template to /workspace/template.py.\",\n    environment=\"remote\",\n)\n\n# Step 2: Fork that environment into a named agent.\nagent_id = f\"my-data-analyst-{uuid.uuid4().hex[:8]}\"\nagent = client.agents.create(\n    id=agent_id,\n    base_agent=\"antigravity-preview-05-2026\",\n    system_instruction=(\n        \"You are a data analyst. Use the template at /workspace/template.py\"\n        \" for all reports.\"\n    ),\n    base_environment=interaction.environment_id,\n)\nprint(f\"Forked agent: {agent.id}\")\n"
          },
          {
            "label": "create",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst agentId = `research-assistant-${crypto.randomUUID().slice(0, 8)}`;\nconst agent = await ai.agents.create({\n  id: agentId,\n  base_agent: 'antigravity-preview-05-2026',\n  description: 'A helpful research assistant.',\n  system_instruction: 'You are a helpful research assistant.',\n  base_environment: 'remote',\n  tools: [{type: 'google_search'}],\n});\nif (!agent.id) {\n  throw new Error('Agent creation failed: ID is undefined');\n}\nconsole.log(agent.id);\n"
          },
          {
            "label": "with_sources",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst agentId = `data-analyst-${crypto.randomUUID().slice(0, 8)}`;\nconst agent = await ai.agents.create({\n  id: agentId,\n  base_agent: 'antigravity-preview-05-2026',\n  system_instruction:\n    'You are a data analyst. Always include visualizations and export results as PDF.',\n  base_environment: {\n    type: 'remote',\n    sources: [\n      {\n        type: 'inline',\n        target: '.agents/AGENTS.md',\n        content:\n          'Always use matplotlib for charts. Include a summary table in every report.',\n      },\n      {\n        type: 'repository',\n        source: 'https://github.com/my-org/analysis-templates',\n        target: '/workspace/templates',\n      },\n    ],\n  },\n});\nconsole.log(`Created agent: ${agent.id}`);\n"
          },
          {
            "label": "fork_from_env",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n// Step 1: Set up the environment interactively.\nconst interaction = await ai.interactions.create({\n  agent: 'antigravity-preview-05-2026',\n  input: 'Write a basic Hello World template to /workspace/template.py.',\n  environment: 'remote',\n});\n\n// Step 2: Fork that environment into a named agent.\nconst agentId = `my-data-analyst-${crypto.randomUUID().slice(0, 8)}`;\nconst agent = await ai.agents.create({\n  id: agentId,\n  base_agent: 'antigravity-preview-05-2026',\n  system_instruction:\n    'You are a data analyst. Use the template at /workspace/template.py for all reports.',\n  base_environment: interaction.environment_id,\n});\nconsole.log(`Forked agent: ${agent.id}`);\n"
          },
          {
            "label": "create",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.agents.Agent;\nimport com.google.genai.gaos.models.agents.BaseEnvironment;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateAgentResponse;\nimport com.google.genai.gaos.models.interactions.GoogleSearch;\n\nClient client = new Client();\nString agentId = \"research-assistant-\" + UUID.randomUUID().toString().substring(0, 8);\nAgent agent =\n    Agent.builder()\n        .id(agentId)\n        .baseAgent(\"antigravity-preview-05-2026\")\n        .description(\"A helpful research assistant.\")\n        .systemInstruction(\"You are a helpful research assistant.\")\n        .baseEnvironment(BaseEnvironment.of(\"remote\"))\n        .tools(List.of(new GoogleSearch()))\n        .build();\nCreateAgentResponse response = client.agents.create(agent);\nSystem.out.println(response.agent().flatMap(Agent::id).orElse(\"\"));\n"
          },
          {
            "label": "with_sources",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.agents.Agent;\nimport com.google.genai.gaos.models.agents.BaseEnvironment;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateAgentResponse;\nimport com.google.genai.gaos.models.environments.Environment;\nimport com.google.genai.gaos.models.interactions.Source;\nimport com.google.genai.gaos.models.interactions.SourceType;\n\nClient client = new Client();\nString agentId = \"data-analyst-\" + UUID.randomUUID().toString().substring(0, 8);\ncom.google.genai.gaos.models.interactions.Environment env =\n    com.google.genai.gaos.models.interactions.Environment.builder()\n        .sources(\n            List.of(\n                Source.builder()\n                    .type(SourceType.INLINE)\n                    .target(\".agents/AGENTS.md\")\n                    .content(\n                        \"Always use matplotlib for charts. Include a summary table in every\"\n                            + \" report.\")\n                    .build(),\n                Source.builder()\n                    .type(SourceType.REPOSITORY)\n                    .source(\"https://github.com/my-org/analysis-templates\")\n                    .target(\"/workspace/templates\")\n                    .build()))\n        .build();\nAgent agent =\n    Agent.builder()\n        .id(agentId)\n        .baseAgent(\"antigravity-preview-05-2026\")\n        .systemInstruction(\n            \"You are a data analyst. Always include visualizations and export results as PDF.\")\n        .baseEnvironment(BaseEnvironment.of(env))\n        .build();\nCreateAgentResponse response = client.agents.create(agent);\nSystem.out.println(\"Created agent: \" + response.agent().flatMap(Agent::id).orElse(\"\"));\n"
          },
          {
            "label": "fork_from_env",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.agents.Agent;\nimport com.google.genai.gaos.models.interactions.AgentOption;\nimport com.google.genai.gaos.models.agents.BaseEnvironment;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteraction;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment;\nimport com.google.genai.gaos.models.operations.CreateAgentResponse;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.Step;\n\nClient client = new Client();\n\n// Step 1: Set up the environment interactively.\nCreateAgentInteraction params =\n    CreateAgentInteraction.builder()\n        .agent(AgentOption.of(\"antigravity-preview-05-2026\"))\n        .input(\n            InteractionsInput.of(\n                \"Write a basic Hello World template to /workspace/template.py.\"))\n        .environment(CreateAgentInteractionEnvironment.of(\"remote\"))\n        .build();\nCreateInteractionResponse interactionResponse =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    interactionResponse\n        .interaction()\n        .orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\n\n// Step 2: Fork that environment into a named agent.\nString agentId = \"my-data-analyst-\" + UUID.randomUUID().toString().substring(0, 8);\nAgent agent =\n    Agent.builder()\n        .id(agentId)\n        .baseAgent(\"antigravity-preview-05-2026\")\n        .systemInstruction(\n            \"You are a data analyst. Use the template at /workspace/template.py for all\"\n                + \" reports.\")\n        .baseEnvironment(BaseEnvironment.of(interaction.environmentId().orElse(\"\")))\n        .build();\nCreateAgentResponse agentResponse = client.agents.create(agent);\nSystem.out.println(\"Forked agent: \" + agentResponse.agent().flatMap(Agent::id).orElse(\"\"));\n"
          },
          {
            "label": "create",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"time\"\n    \"google.golang.org/genai\"\n    gaos_agents \"google.golang.org/genai/interactions/models/agents\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    agentID := fmt.Sprintf(\"research-assistant-%d\", time.Now().UnixNano())\n    req := operations.CreateAgentRequest{\n        Body: gaos_agents.Agent{\n            ID:                genai.Ptr(agentID),\n            BaseAgent:         genai.Ptr(\"antigravity-preview-05-2026\"),\n            Description:       genai.Ptr(\"A helpful research assistant.\"),\n            SystemInstruction: genai.Ptr(\"You are a helpful research assistant.\"),\n            BaseEnvironment:   genai.Ptr(gaos_agents.NewBaseEnvironment(\"remote\")),\n            Tools: []gaos_agents.AgentTool{\n                gaos_agents.NewAgentTool(gaos_interactions.GoogleSearch{}),\n            },\n        },\n    }\n\n    res, err := client.Agents.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Agent != nil && res.Agent.ID != nil {\n        fmt.Println(*res.Agent.ID)\n    }\n}\n"
          },
          {
            "label": "with_sources",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"time\"\n    \"google.golang.org/genai\"\n    gaos_agents \"google.golang.org/genai/interactions/models/agents\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    agentID := fmt.Sprintf(\"data-analyst-%d\", time.Now().UnixNano())\n    env := gaos_interactions.Environment{\n        Sources: []gaos_interactions.Source{\n            {\n                Type:    genai.Ptr(gaos_interactions.SourceTypeInline),\n                Target:  genai.Ptr(\".agents/AGENTS.md\"),\n                Content: genai.Ptr(\"Always use matplotlib for charts. Include a summary table in every report.\"),\n            },\n            {\n                Type:   genai.Ptr(gaos_interactions.SourceTypeRepository),\n                Source: genai.Ptr(\"https://github.com/my-org/analysis-templates\"),\n                Target: genai.Ptr(\"/workspace/templates\"),\n            },\n        },\n    }\n\n    req := operations.CreateAgentRequest{\n        Body: gaos_agents.Agent{\n            ID:                genai.Ptr(agentID),\n            BaseAgent:         genai.Ptr(\"antigravity-preview-05-2026\"),\n            SystemInstruction: genai.Ptr(\"You are a data analyst. Always include visualizations and export results as PDF.\"),\n            BaseEnvironment:   genai.Ptr(gaos_agents.NewBaseEnvironment(env)),\n        },\n    }\n\n    res, err := client.Agents.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Agent != nil && res.Agent.ID != nil {\n        fmt.Printf(\"Created agent: %s\\n\", *res.Agent.ID)\n    }\n}\n"
          },
          {
            "label": "fork_from_env",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"time\"\n    \"google.golang.org/genai\"\n    gaos_agents \"google.golang.org/genai/interactions/models/agents\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    // Step 1: Set up the environment interactively.\n    interactionReq := operations.CreateInteractionRequest{\n        Body: operations.NewCreateInteractionRequestBody(gaos_interactions.CreateAgentInteraction{\n            Agent:       gaos_interactions.AgentOption(\"antigravity-preview-05-2026\"),\n            Input:       genai.Ptr(gaos_interactions.NewInteractionsInput(\"Write a basic Hello World template to /workspace/template.py.\")),\n            Environment: genai.Ptr(gaos_interactions.NewCreateAgentInteractionEnvironment(\"remote\")),\n        }),\n    }\n    interactionRes, err := client.Interactions.Create(ctx, interactionReq)\n    if err != nil {\n        log.Fatal(err)\n    }\n    envID := \"\"\n    if interactionRes.Interaction != nil && interactionRes.Interaction.EnvironmentID != nil {\n        envID = *interactionRes.Interaction.EnvironmentID\n    }\n\n    // Step 2: Fork that environment into a named agent.\n    agentID := fmt.Sprintf(\"my-data-analyst-%d\", time.Now().UnixNano())\n    req := operations.CreateAgentRequest{\n        Body: gaos_agents.Agent{\n            ID:                genai.Ptr(agentID),\n            BaseAgent:         genai.Ptr(\"antigravity-preview-05-2026\"),\n            SystemInstruction: genai.Ptr(\"You are a data analyst. Use the template at /workspace/template.py for all reports.\"),\n            BaseEnvironment:   genai.Ptr(gaos_agents.NewBaseEnvironment(envID)),\n        },\n    }\n    res, err := client.Agents.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.Agent != nil && res.Agent.ID != nil {\n        fmt.Printf(\"Forked agent: %s\\n\", *res.Agent.ID)\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/agents/{agentsId}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "delete": {
        "operationId": "DeleteAgent",
        "description": "Deletes an Agent.",
        "parameters": [
          {
            "name": "agentsId",
            "in": "path",
            "description": "Required. The name of the agent to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "examples": {
                  "delete": {
                    "summary": "Delete Agent",
                    "value": {}
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Empty"
                }
              }
            }
          }
        },
        "tags": [
          "agents"
        ],
        "x-codeSamples": [
          {
            "label": "delete",
            "lang": "sh",
            "source": "curl -X DELETE https://generativelanguage.googleapis.com/v1beta/agents/ag_abc123 \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "delete",
            "lang": "python",
            "source": "import uuid\nfrom google import genai\n\nclient = genai.Client()\n\n\nclient.agents.delete(agent_id)\nprint(\"Agent deleted successfully.\")\n"
          },
          {
            "label": "delete",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nawait ai.agents.delete(agentId);\nconsole.log('Agent deleted successfully.');\n"
          },
          {
            "label": "delete",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.agents.Agent;\nimport com.google.genai.Client;\n\nClient client = new Client();\n\n\nclient.agents.delete(agentId);\nSystem.out.println(\"Agent deleted successfully.\");\n"
          },
          {
            "label": "delete",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n\n    _, err = client.Agents.Delete(ctx, operations.DeleteAgentRequest{ID: agentID})\n    if err != nil {\n        log.Fatal(err)\n    }\n    fmt.Println(\"Agent deleted successfully.\")\n}\n"
          }
        ]
      },
      "get": {
        "operationId": "GetAgent",
        "description": "Gets a specific Agent.",
        "parameters": [
          {
            "name": "agentsId",
            "in": "path",
            "description": "Required. The name of the agent to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "examples": {
                  "get": {
                    "summary": "Get Agent",
                    "value": {
                      "created": "2025-11-26T12:25:15Z",
                      "display_name": "My Research Agent",
                      "id": "ag_abc123",
                      "object": "agent",
                      "system_instruction": "You are a helpful research assistant.",
                      "tools": [
                        {
                          "type": "google_search"
                        }
                      ],
                      "updated": "2025-11-26T12:25:15Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Agent"
                }
              }
            }
          }
        },
        "tags": [
          "agents"
        ],
        "x-codeSamples": [
          {
            "label": "get",
            "lang": "sh",
            "source": "curl -X GET https://generativelanguage.googleapis.com/v1beta/agents/ag_abc123 \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "get",
            "lang": "python",
            "source": "import uuid\nfrom google import genai\n\nclient = genai.Client()\n\n\nagent = client.agents.get(agent_id)\nprint(agent.id)\n"
          },
          {
            "label": "get",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nconst agent = await ai.agents.get(agentId);\nif (!agent.id) {\n  throw new Error('Agent retrieval failed: ID is undefined');\n}\nconsole.log(agent.id);\n"
          },
          {
            "label": "get",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.agents.Agent;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.GetAgentResponse;\n\nClient client = new Client();\n\n\nGetAgentResponse response = client.agents.get(agentId);\nAgent agent = response.agent().orElseThrow(() -> new RuntimeException(\"No agent returned\"));\nSystem.out.println(agent.id().orElse(\"\"));\n"
          },
          {
            "label": "get",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n\n    res, err := client.Agents.Get(ctx, operations.GetAgentRequest{ID: agentID})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Agent != nil && res.Agent.ID != nil {\n        fmt.Println(*res.Agent.ID)\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/credentials": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "get": {
        "operationId": "ListCredentials",
        "description": "Lists credentials.",
        "parameters": [
          {
            "name": "page_size",
            "in": "query",
            "description": "Optional. Maximum number of credentials to return.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "Optional. Pagination token.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCredentialsResponse"
                }
              }
            }
          }
        },
        "tags": [
          "credentials"
        ]
      },
      "post": {
        "operationId": "CreateCredential",
        "description": "Creates a new credential.",
        "parameters": [],
        "requestBody": {
          "description": "Required. The request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialCreateParams"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Credential"
                }
              }
            }
          }
        },
        "tags": [
          "credentials"
        ]
      }
    },
    "/{api_version}/credentials/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "delete": {
        "operationId": "DeleteCredential",
        "description": "Deletes a credential.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. Resource ID segment making up resource `name`. It identifies the resource\nwithin its parent collection as described in https://google.aip.dev/122.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Empty"
                }
              }
            }
          }
        },
        "tags": [
          "credentials"
        ]
      },
      "get": {
        "operationId": "GetCredential",
        "description": "Gets a credential by ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. Resource ID segment making up resource `name`. It identifies the resource\nwithin its parent collection as described in https://google.aip.dev/122.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Credential"
                }
              }
            }
          }
        },
        "tags": [
          "credentials"
        ]
      },
      "patch": {
        "operationId": "UpdateCredential",
        "description": "Updates a credential.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. Resource ID segment making up resource `name`. It identifies the resource\nwithin its parent collection as described in https://google.aip.dev/122.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "update_mask",
            "in": "query",
            "description": "Optional. The list of fields to update.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Required. The request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialUpdateParams"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Credential"
                }
              }
            }
          }
        },
        "tags": [
          "credentials"
        ]
      }
    },
    "/{api_version}/environments": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "get": {
        "operationId": "ListEnvironments",
        "description": "Lists environments.",
        "parameters": [
          {
            "name": "page_size",
            "in": "query",
            "description": "Optional. Maximum number of environments to return.\nIf unspecified, defaults to 50. Maximum is 1000.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "Optional. Pagination token.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListEnvironmentsResponse"
                }
              }
            }
          }
        },
        "tags": [
          "environments"
        ],
        "x-codeSamples": [
          {
            "label": "list",
            "lang": "sh",
            "source": "curl -X GET https://generativelanguage.googleapis.com/v1beta/environments \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "list",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.environments.list()\nfor environment in response.environments or []:\n  print(environment.id)\n"
          },
          {
            "label": "list",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst response = await ai.environments.list();\nfor (const env of response.environments ?? []) {\n  console.log(env.id);\n}\n"
          },
          {
            "label": "list",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.environments.Environment;\nimport com.google.genai.gaos.models.operations.ListEnvironmentsResponse;\n\nClient client = new Client();\nListEnvironmentsResponse response = client.environments.listEnvironmentsDirect();\nfor (com.google.genai.gaos.models.environments.Environment env :\n    response.listEnvironmentsResponse().flatMap(res -> res.environments()).orElse(List.of())) {\n  System.out.println(env.id().orElse(\"\"));\n}\n"
          },
          {
            "label": "list",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := interactions.New()\n\n    res, err := client.Environments.ListEnvironments(ctx, operations.ListEnvironmentsRequest{})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.ListEnvironmentsResponse != nil {\n        for _, env := range res.ListEnvironmentsResponse.Environments {\n            if env.ID != \"\" {\n                fmt.Println(env.ID)\n            }\n        }\n    }\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "CreateEnvironment",
        "description": "Creates an environment.",
        "parameters": [],
        "requestBody": {
          "description": "Required. The request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEnvironmentRequest"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Environment"
                }
              }
            }
          }
        },
        "tags": [
          "environments"
        ],
        "x-codeSamples": [
          {
            "label": "create",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/environments \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"sources\": [{\n      \"type\": \"inline\",\n      \"target\": \"main.py\",\n      \"content\": \"print(\\\"Hello, World!\\\")\"\n    }]\n  }'\n"
          },
          {
            "label": "copy",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/environments \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"from_environment\": \"environments/env_abc123\"\n  }'\n"
          },
          {
            "label": "create",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nenvironment = client.environments.create(\n    sources=[{\n        \"type\": \"inline\",\n        \"target\": \"main.py\",\n        \"content\": \"print('Hello, World!')\",\n    }]\n)\nprint(environment.id)\n"
          },
          {
            "label": "copy",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n\nenvironment = client.environments.create(\n    from_environment=source_env.id,\n)\nprint(environment.id)\n"
          },
          {
            "label": "create",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst environment = await ai.environments.create({\n  sources: [\n    {\n      type: 'inline',\n      target: 'main.py',\n      content: \"print('Hello, World!')\",\n    },\n  ],\n});\nif (!environment.id) {\n  throw new Error('Environment creation failed: ID is undefined');\n}\nconsole.log(environment.id);\n"
          },
          {
            "label": "copy",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nconst environment = await ai.environments.create({\n  from_environment: sourceEnv.id,\n});\nif (!environment.id) {\n  throw new Error('Environment creation failed: ID is undefined');\n}\nconsole.log(environment.id);\n"
          },
          {
            "label": "create",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.environments.CreateEnvironmentRequest;\nimport com.google.genai.gaos.models.environments.Environment;\nimport com.google.genai.gaos.models.interactions.Source;\nimport com.google.genai.gaos.models.interactions.SourceType;\n\nClient client = new Client();\nCreateEnvironmentRequest request =\n    CreateEnvironmentRequest.builder()\n        .sources(\n            List.of(\n                Source.builder()\n                    .type(SourceType.INLINE)\n                    .target(\"main.py\")\n                    .content(\"print('Hello, World!')\")\n                    .build()))\n        .build();\ncom.google.genai.gaos.models.environments.Environment environment =\n    client.environments.createEnvironment(request).environment().orElseThrow();\nSystem.out.println(environment.id().orElse(\"\"));\n"
          },
          {
            "label": "copy",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.environments.CreateEnvironmentRequest;\nimport com.google.genai.gaos.models.environments.Environment;\n\nClient client = new Client();\n\n\nCreateEnvironmentRequest request =\n    CreateEnvironmentRequest.builder().fromEnvironment(sourceEnvId).build();\ncom.google.genai.gaos.models.environments.Environment environment =\n    client.environments.createEnvironment(request).environment().orElseThrow();\nSystem.out.println(environment.id().orElse(\"\"));\n"
          },
          {
            "label": "create",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_environments \"google.golang.org/genai/interactions/models/environments\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := interactions.New()\n\n    req := operations.CreateEnvironmentRequest{\n        Body: gaos_environments.CreateEnvironmentRequest{\n            Sources: []gaos_interactions.Source{\n                {\n                    Type:    genai.Ptr(gaos_interactions.SourceTypeInline),\n                    Target:  genai.Ptr(\"main.py\"),\n                    Content: genai.Ptr(\"print('Hello, World!')\"),\n                },\n            },\n        },\n    }\n\n    res, err := client.Environments.CreateEnvironment(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Environment != nil && res.Environment.ID != \"\" {\n        fmt.Println(res.Environment.ID)\n\n    }\n}\n"
          },
          {
            "label": "copy",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_environments \"google.golang.org/genai/interactions/models/environments\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := interactions.New()\n\n\n    res, err := client.Environments.CreateEnvironment(ctx, operations.CreateEnvironmentRequest{\n        Body: gaos_environments.CreateEnvironmentRequest{\n            FromEnvironment: genai.Ptr(sourceEnvID),\n        },\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Environment != nil && res.Environment.ID != \"\" {\n        fmt.Println(res.Environment.ID)\n\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/environments/{environment}/files/{path}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        },
        {
          "name": "environment",
          "in": "path",
          "description": "The ID of the environment whose snapshot to read.",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "path",
          "in": "path",
          "description": "Path of the file or directory inside the environment workspace, relative to its root (e.g. src).",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "operationId": "GetEnvironmentFiles",
        "description": "Retrieves file metadata or directory contents from an environment's snapshot. To download file content, use the download URL returned in the response.",
        "parameters": [
          {
            "name": "page_size",
            "in": "query",
            "description": "Optional. Maximum number of entries to return per page (for directory listing).",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "Optional. Pagination token for directory listing.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "recursive",
            "in": "query",
            "description": "Optional. If true and the path is a directory, recursively lists all files.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEnvironmentFilesResponse"
                }
              }
            }
          }
        },
        "tags": [
          "environments.files"
        ],
        "x-codeSamples": [
          {
            "label": "list_files",
            "lang": "sh",
            "source": "curl -X GET 'https://generativelanguage.googleapis.com/v1beta/environments/env_abc123/files/src' \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "get_file",
            "lang": "sh",
            "source": "curl -X GET 'https://generativelanguage.googleapis.com/v1beta/environments/env_abc123/files/main.py' \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "download_file",
            "lang": "sh",
            "source": "curl -X GET 'https://generativelanguage.googleapis.com/v1beta/environments/env_abc123/files/src/main.py?alt=media' \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  --output main.py\n"
          },
          {
            "label": "list_files",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n\nresponse = client.environments.files.list(\n    environment=created.id,\n    path=\"src\",\n)\nfor file in response.files or []:\n  print(file.name, file.type, file.size_bytes)\n"
          },
          {
            "label": "get_file",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n\nresponse = client.environments.files.get(\n    environment=created.id,\n    path=\"main.py\",\n)\nfor file in response.files or []:\n  print(file.name, file.size_bytes)\n"
          },
          {
            "label": "download_file",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n\ncontent = client.environments.files.download(\n    environment=created.id,\n    path=\"src/main.py\",\n)\nprint(content.decode(\"utf-8\"))\n"
          },
          {
            "label": "list_files",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nconst response = await ai.environments.files.list({\n  environment: created.id,\n  path: 'src',\n});\nfor (const file of response.files ?? []) {\n  console.log(file.name, file.type, file.size_bytes);\n}\n"
          },
          {
            "label": "get_file",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nconst response = await ai.environments.files.list({\n  environment: created.id,\n  path: 'main.py',\n});\nfor (const file of response.files ?? []) {\n  console.log(file.name, file.size_bytes);\n}\n"
          },
          {
            "label": "list_files",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.environments.EnvironmentFile;\nimport com.google.genai.gaos.models.operations.GetEnvironmentFilesRequest;\nimport com.google.genai.gaos.models.environments.GetEnvironmentFilesResponse;\n\nClient client = new Client();\n\n\ncom.google.genai.gaos.models.operations.GetEnvironmentFilesResponse response =\n    client\n        .environments\n        .files()\n        .list(GetEnvironmentFilesRequest.builder().environment(envId).path(\"src\").build());\nGetEnvironmentFilesResponse filesResponse =\n    response.getEnvironmentFilesResponse().orElseThrow();\nfor (EnvironmentFile file : filesResponse.files().orElse(List.of())) {\n  System.out.println(\n      file.name().orElse(\"\")\n          + \" \"\n          + file.type().map(Object::toString).orElse(\"\")\n          + \" \"\n          + file.sizeBytes().orElse(\"\"));\n}\n"
          },
          {
            "label": "get_file",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.environments.EnvironmentFile;\nimport com.google.genai.gaos.models.operations.GetEnvironmentFilesRequest;\nimport com.google.genai.gaos.models.environments.GetEnvironmentFilesResponse;\n\nClient client = new Client();\n\n\ncom.google.genai.gaos.models.operations.GetEnvironmentFilesResponse response =\n    client\n        .environments\n        .files()\n        .list(GetEnvironmentFilesRequest.builder().environment(envId).path(\"main.py\").build());\nGetEnvironmentFilesResponse filesResponse =\n    response.getEnvironmentFilesResponse().orElseThrow();\nfor (EnvironmentFile file : filesResponse.files().orElse(List.of())) {\n  System.out.println(file.name().orElse(\"\") + \" \" + file.sizeBytes().orElse(\"\"));\n}\n"
          },
          {
            "label": "list_files",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := interactions.New()\n\n\n    res, err := client.Environments.Files.List(ctx, operations.GetEnvironmentFilesRequest{\n        Environment: envID,\n        Path:        \"src\",\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.GetEnvironmentFilesResponse != nil {\n        for _, file := range res.GetEnvironmentFilesResponse.Files {\n            name := \"\"\n            if file.Name != nil {\n                name = *file.Name\n            }\n            fileType := \"\"\n            if file.Type != nil {\n                fileType = string(*file.Type)\n            }\n            var size int64\n            if file.SizeBytes != nil {\n                size = *file.SizeBytes\n            }\n            fmt.Println(name, fileType, size)\n        }\n    }\n}\n"
          },
          {
            "label": "get_file",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := interactions.New()\n\n\n    res, err := client.Environments.Files.List(ctx, operations.GetEnvironmentFilesRequest{\n        Environment: envID,\n        Path:        \"main.py\",\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.GetEnvironmentFilesResponse != nil {\n        for _, file := range res.GetEnvironmentFilesResponse.Files {\n            name := \"\"\n            if file.Name != nil {\n                name = *file.Name\n            }\n            var size int64\n            if file.SizeBytes != nil {\n                size = *file.SizeBytes\n            }\n            fmt.Println(name, size)\n        }\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/environments/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "delete": {
        "operationId": "DeleteEnvironment",
        "description": "Deletes an environment.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. Resource ID segment making up resource `name`. It identifies the resource\nwithin its parent collection as described in https://google.aip.dev/122.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Empty"
                }
              }
            }
          }
        },
        "tags": [
          "environments"
        ],
        "x-codeSamples": [
          {
            "label": "delete",
            "lang": "sh",
            "source": "curl -X DELETE https://generativelanguage.googleapis.com/v1beta/environments/env_abc123 \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "delete",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n\nclient.environments.delete(id=created.id)\nprint(\"Environment deleted successfully.\")\n"
          },
          {
            "label": "delete",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nawait ai.environments.delete(created.id);\nconsole.log('Environment deleted successfully.');\n"
          },
          {
            "label": "delete",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.environments.Environment;\n\nClient client = new Client();\n\n\nclient.environments.deleteEnvironment(envId);\nSystem.out.println(\n    \"com.google.genai.gaos.models.environments.Environment deleted successfully.\");\n"
          },
          {
            "label": "delete",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := interactions.New()\n\n\n    _, err = client.Environments.DeleteEnvironment(ctx, operations.DeleteEnvironmentRequest{\n        ID: envID,\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    fmt.Println(\"Environment deleted successfully.\")\n}\n"
          }
        ]
      },
      "get": {
        "operationId": "GetEnvironment",
        "description": "Gets an environment.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. Resource ID segment making up resource `name`. It identifies the resource\nwithin its parent collection as described in https://google.aip.dev/122.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Environment"
                }
              }
            }
          }
        },
        "tags": [
          "environments"
        ],
        "x-codeSamples": [
          {
            "label": "get",
            "lang": "sh",
            "source": "curl -X GET https://generativelanguage.googleapis.com/v1beta/environments/env_abc123 \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "get",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n\nenvironment = client.environments.get(id=created.id)\nprint(environment.id)\n"
          },
          {
            "label": "get",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nconst environment = await ai.environments.get(created.id);\nconsole.log(environment.id);\n"
          },
          {
            "label": "get",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.environments.Environment;\n\nClient client = new Client();\n\n\ncom.google.genai.gaos.models.environments.Environment environment =\n    client.environments.getEnvironment(envId).environment().orElseThrow();\nSystem.out.println(environment.id().orElse(\"\"));\n"
          },
          {
            "label": "get",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := interactions.New()\n\n\n    res, err := client.Environments.GetEnvironment(ctx, operations.GetEnvironmentRequest{\n        ID: envID,\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Environment != nil && res.Environment.ID != \"\" {\n        fmt.Println(res.Environment.ID)\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/interactions": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "post": {
        "operationId": "CreateInteraction",
        "description": "Creates a new interaction.",
        "requestBody": {
          "description": "The request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CreateAgentInteractionParams"
                  },
                  {
                    "$ref": "#/components/schemas/CreateModelInteractionParams"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "examples": {
                  "antigravity": {
                    "summary": "Antigravity Agent",
                    "value": {
                      "agent": "antigravity-preview-05-2026",
                      "created": "2025-11-26T12:22:47Z",
                      "environment_id": "env_abc123",
                      "id": "v1_ChdPU0F4YWFtNkFwS2kxZThQZ05lbXdROBIXT1NBeGFhbTZBcEtpMWU4UGdOZW13UTg",
                      "object": "interaction",
                      "status": "completed",
                      "steps": [
                        {
                          "type": "model_output",
                          "content": [
                            {
                              "type": "text",
                              "text": "I've summarized the top 5 Hacker News stories and saved the results to /workspace/summary.md."
                            }
                          ]
                        }
                      ],
                      "updated": "2025-11-26T12:22:47Z",
                      "usage": {
                        "input_tokens_by_modality": [
                          {
                            "modality": "text",
                            "tokens": 50
                          }
                        ],
                        "total_cached_tokens": 0,
                        "total_input_tokens": 50,
                        "total_output_tokens": 500,
                        "total_thought_tokens": 200,
                        "total_tokens": 750,
                        "total_tool_use_tokens": 0
                      }
                    }
                  },
                  "deep_research": {
                    "summary": "Deep Research",
                    "value": {
                      "agent": "deep-research-pro-preview-12-2025",
                      "created": "2025-11-26T12:22:47Z",
                      "id": "v1_ChdPU0F4YWFtNkFwS2kxZThQZ05lbXdROBIXT1NBeGFhbTZBcEtpMWU4UGdOZW13UTg",
                      "object": "interaction",
                      "status": "completed",
                      "steps": [
                        {
                          "type": "model_output",
                          "content": [
                            {
                              "type": "text",
                              "text": "Here is a comprehensive research report on the current state of cancer research..."
                            }
                          ]
                        }
                      ],
                      "updated": "2025-11-26T12:22:47Z",
                      "usage": {
                        "input_tokens_by_modality": [
                          {
                            "modality": "text",
                            "tokens": 20
                          }
                        ],
                        "total_cached_tokens": 0,
                        "total_input_tokens": 20,
                        "total_output_tokens": 1000,
                        "total_thought_tokens": 500,
                        "total_tokens": 1520,
                        "total_tool_use_tokens": 0
                      }
                    }
                  },
                  "function_calling": {
                    "summary": "Function Calling",
                    "value": {
                      "created": "2025-11-26T12:22:47Z",
                      "id": "v1_ChdPU0F4YWFtNkFwS2kxZThQZ05lbXdROBIXT1NBeGFhbTZBcEtpMWU4UGdOZW13UTg",
                      "model": "gemini-3.6-flash",
                      "object": "interaction",
                      "status": "requires_action",
                      "steps": [
                        {
                          "name": "get_weather",
                          "type": "function_call",
                          "arguments": {
                            "location": "Boston, MA"
                          },
                          "id": "gth23981"
                        }
                      ],
                      "updated": "2025-11-26T12:22:47Z",
                      "usage": {
                        "input_tokens_by_modality": [
                          {
                            "modality": "text",
                            "tokens": 100
                          }
                        ],
                        "total_cached_tokens": 0,
                        "total_input_tokens": 100,
                        "total_output_tokens": 25,
                        "total_thought_tokens": 0,
                        "total_tokens": 125,
                        "total_tool_use_tokens": 50
                      }
                    }
                  },
                  "multi_turn": {
                    "summary": "Multi-turn",
                    "value": {
                      "created": "2025-11-26T12:22:47Z",
                      "id": "v1_ChdPU0F4YWFtNkFwS2kxZThQZ05lbXdROBIXT1NBeGFhbTZBcEtpMWU4UGdOZW13UTg",
                      "model": "gemini-3.6-flash",
                      "object": "interaction",
                      "status": "completed",
                      "steps": [
                        {
                          "type": "model_output",
                          "content": [
                            {
                              "type": "text",
                              "text": "The capital of France is Paris."
                            }
                          ]
                        }
                      ],
                      "updated": "2025-11-26T12:22:47Z",
                      "usage": {
                        "input_tokens_by_modality": [
                          {
                            "modality": "text",
                            "tokens": 50
                          }
                        ],
                        "total_cached_tokens": 0,
                        "total_input_tokens": 50,
                        "total_output_tokens": 10,
                        "total_thought_tokens": 0,
                        "total_tokens": 60,
                        "total_tool_use_tokens": 0
                      }
                    }
                  },
                  "multimodal_image": {
                    "summary": "Image Input",
                    "value": {
                      "created": "2025-11-26T12:22:47Z",
                      "id": "v1_ChdPU0F4YWFtNkFwS2kxZThQZ05lbXdROBIXT1NBeGFhbTZBcEtpMWU4UGdOZW13UTg",
                      "model": "gemini-3.6-flash",
                      "object": "interaction",
                      "status": "completed",
                      "steps": [
                        {
                          "type": "model_output",
                          "content": [
                            {
                              "type": "text",
                              "text": "A white humanoid robot with glowing blue eyes stands holding a red skateboard."
                            }
                          ]
                        }
                      ],
                      "updated": "2025-11-26T12:22:47Z",
                      "usage": {
                        "input_tokens_by_modality": [
                          {
                            "modality": "text",
                            "tokens": 10
                          },
                          {
                            "modality": "image",
                            "tokens": 258
                          }
                        ],
                        "total_cached_tokens": 0,
                        "total_input_tokens": 268,
                        "total_output_tokens": 20,
                        "total_thought_tokens": 0,
                        "total_tokens": 288,
                        "total_tool_use_tokens": 0
                      }
                    }
                  },
                  "reuse_env": {
                    "summary": "Reuse Environment",
                    "value": {
                      "agent": "antigravity-preview-05-2026",
                      "created": "2025-11-26T12:23:00Z",
                      "environment_id": "env_abc123",
                      "id": "v1_Chd2ZTJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkwMTIzNDU2Nzg",
                      "object": "interaction",
                      "status": "completed",
                      "steps": [
                        {
                          "type": "model_output",
                          "content": [
                            {
                              "type": "text",
                              "text": "I've updated /workspace/hello.py to accept a name argument and greet the user."
                            }
                          ]
                        }
                      ],
                      "updated": "2025-11-26T12:23:00Z",
                      "usage": {
                        "input_tokens_by_modality": [
                          {
                            "modality": "text",
                            "tokens": 80
                          }
                        ],
                        "total_cached_tokens": 0,
                        "total_input_tokens": 80,
                        "total_output_tokens": 200,
                        "total_thought_tokens": 100,
                        "total_tokens": 380,
                        "total_tool_use_tokens": 0
                      }
                    }
                  },
                  "simple": {
                    "summary": "Simple Request",
                    "value": {
                      "created": "2025-11-26T12:25:15Z",
                      "id": "v1_ChdPU0F4YWFtNkFwS2kxZThQZ05lbXdROBIXT1NBeGFhbTZBcEtpMWU4UGdOZW13UTg",
                      "model": "gemini-3.6-flash",
                      "object": "interaction",
                      "status": "completed",
                      "steps": [
                        {
                          "type": "model_output",
                          "content": [
                            {
                              "type": "text",
                              "text": "Hello! I'm functioning perfectly and ready to assist you.\n\nHow are you doing today?"
                            }
                          ]
                        }
                      ],
                      "updated": "2025-11-26T12:25:15Z",
                      "usage": {
                        "input_tokens_by_modality": [
                          {
                            "modality": "text",
                            "tokens": 7
                          }
                        ],
                        "total_cached_tokens": 0,
                        "total_input_tokens": 7,
                        "total_output_tokens": 20,
                        "total_thought_tokens": 22,
                        "total_tokens": 49,
                        "total_tool_use_tokens": 0
                      }
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Interaction"
                }
              },
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/InteractionSseStreamEvent"
                },
                "x-speakeasy-sse-sentinel": "[DONE]"
              }
            }
          },
          "4XX": {
            "description": "Error creating interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/Error"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "5XX": {
            "description": "Error creating interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/Error"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "summary": "Creating an interaction",
        "x-speakeasy-exports": [
          {
            "name": "InteractionCreateParams",
            "group": "interactions",
            "representation": "input"
          }
        ],
        "x-speakeasy-group": "interactions",
        "x-speakeasy-name-override": "create",
        "x-codeSamples": [
          {
            "label": "simple",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"input\": \"Hello, how are you?\"\n  }'\n"
          },
          {
            "label": "multi_turn",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"input\": [\n      { \"type\": \"user_input\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello!\" }] },\n      { \"type\": \"model_output\", \"content\": [{ \"type\": \"text\", \"text\": \"Hi there! How can I help you today?\" }] },\n      { \"type\": \"user_input\", \"content\": [{ \"type\": \"text\", \"text\": \"What is the capital of France?\" }] }\n    ]\n  }'\n"
          },
          {
            "label": "multimodal_image",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"input\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"What is in this picture?\"\n      },\n      {\n        \"type\": \"image\",\n        \"data\": \"BASE64_ENCODED_IMAGE\",\n        \"mime_type\": \"image/png\"\n      }\n    ]\n  }'\n"
          },
          {
            "label": "function_calling",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"tools\": [\n      {\n        \"type\": \"function\",\n        \"name\": \"get_weather\",\n        \"description\": \"Get the current weather in a given location\",\n        \"parameters\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"location\": {\n              \"type\": \"string\",\n              \"description\": \"The city and state, e.g. San Francisco, CA\"\n            }\n          },\n          \"required\": [\n            \"location\"\n          ]\n        }\n      }\n    ],\n    \"input\": \"What is the weather like in Boston, MA?\"\n  }'\n"
          },
          {
            "label": "deep_research",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"agent\": \"deep-research-pro-preview-12-2025\",\n    \"input\": \"Find a cure to cancer\",\n    \"background\": true\n  }'\n"
          },
          {
            "label": "antigravity",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"agent\": \"antigravity-preview-05-2026\",\n    \"input\": \"Read Hacker News, summarize the top 5 stories, and save results as a markdown file.\",\n    \"environment\": \"remote\"\n  }'\n"
          },
          {
            "label": "reuse_env",
            "lang": "sh",
            "source": "# Step 1: Create an interaction with a fresh remote environment.\nRESPONSE=$(curl -s -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Api-Revision: 2026-05-20\" \\\n  -d '{\n    \"agent\": \"antigravity-preview-05-2026\",\n    \"input\": \"Write a hello world script at /workspace/hello.py.\",\n    \"environment\": \"remote\"\n  }')\nINTERACTION_ID=$(echo \"$RESPONSE\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['id'])\")\nENV_ID=$(echo \"$RESPONSE\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['environment_id'])\")\n\n# Step 2: Reuse the same environment in a follow-up interaction.\ncurl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"{\n    \\\"agent\\\": \\\"antigravity-preview-05-2026\\\",\n    \\\"input\\\": \\\"Modify the script to accept a name argument and greet the user.\\\",\n    \\\"environment\\\": \\\"$ENV_ID\\\",\n    \\\"previous_interaction_id\\\": \\\"$INTERACTION_ID\\\"\n  }\"\n"
          },
          {
            "label": "with_sources",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"agent\": \"antigravity-preview-05-2026\",\n    \"input\": \"List all files under /workspace and summarize what you find.\",\n    \"environment\": {\n      \"type\": \"remote\",\n      \"sources\": [\n        {\n          \"type\": \"repository\",\n          \"source\": \"https://github.com/octocat/Spoon-Knife\",\n          \"target\": \"/workspace/repo\"\n        },\n        {\n          \"type\": \"inline\",\n          \"content\": \"Focus on Python files only.\",\n          \"target\": \"/workspace/notes.txt\"\n        }\n      ]\n    }\n  }'\n"
          },
          {
            "label": "custom_agent",
            "lang": "sh",
            "source": "# Step 1: Create a custom agent.\ncurl -X POST https://generativelanguage.googleapis.com/v1beta/agents \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"id\": \"code-reviewer\",\n    \"base_agent\": \"antigravity-preview-05-2026\",\n    \"system_instruction\": \"You are a senior code reviewer. Check every file for bugs, style issues, and security vulnerabilities.\",\n    \"base_environment\": {\n      \"type\": \"remote\",\n      \"sources\": [{\n        \"type\": \"repository\",\n        \"source\": \"https://github.com/octocat/Spoon-Knife\",\n        \"target\": \"/workspace/repo\"\n      }]\n    }\n  }'\n\n# Step 2: Use the custom agent.\ncurl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"agent\": \"code-reviewer\",\n    \"input\": \"Review the latest changes in /workspace/repo/src and file a summary.\",\n    \"environment\": \"remote\"\n  }'\n"
          },
          {
            "label": "simple",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\ninteraction = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    input=\"Hello, how are you?\",\n)\nprint(interaction.output_text)\n"
          },
          {
            "label": "multi_turn",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    input=[\n        {\n            \"type\": \"user_input\",\n            \"content\": [{\"type\": \"text\", \"text\": \"Hello!\"}],\n        },\n        {\n            \"type\": \"model_output\",\n            \"content\": [{\n                \"type\": \"text\",\n                \"text\": \"Hi there! How can I help you today?\",\n            }],\n        },\n        {\n            \"type\": \"user_input\",\n            \"content\": [\n                {\"type\": \"text\", \"text\": \"What is the capital of France?\"}\n            ],\n        },\n    ],\n)\nprint(response.output_text)\n"
          },
          {
            "label": "multimodal_image",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    input=[\n        {\"type\": \"text\", \"text\": \"What is in this picture?\"},\n        {\n            \"type\": \"image\",\n            \"data\": \"BASE64_ENCODED_IMAGE\",\n            \"mime_type\": \"image/png\",\n        },\n    ],\n)\nprint(response.output_text)\n"
          },
          {
            "label": "function_calling",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    tools=[{\n        \"type\": \"function\",\n        \"name\": \"get_weather\",\n        \"description\": \"Get the current weather in a given location\",\n        \"parameters\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"location\": {\n                    \"type\": \"string\",\n                    \"description\": (\n                        \"The city and state, e.g. San Francisco, CA\"\n                    ),\n                }\n            },\n            \"required\": [\"location\"],\n        },\n    }],\n    input=\"What is the weather like in Boston, MA?\",\n)\nprint(response.steps[-1])\n"
          },
          {
            "label": "deep_research",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\ninteraction = client.interactions.create(\n    agent=\"deep-research-pro-preview-12-2025\",\n    input=\"find a cure to cancer\",\n    background=True,\n)\nprint(interaction.status)\n"
          },
          {
            "label": "antigravity",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\ninteraction = client.interactions.create(\n    agent=\"antigravity-preview-05-2026\",\n    input=(\n        \"Read Hacker News, summarize the top 5 stories, and save results as\"\n        \" a markdown file.\"\n    ),\n    environment=\"remote\",\n)\nprint(interaction.output_text)\n"
          },
          {
            "label": "reuse_env",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n# Step 1: Create an interaction with a fresh remote environment.\ninteraction = client.interactions.create(\n    agent=\"antigravity-preview-05-2026\",\n    input=\"Write a hello world script at /workspace/hello.py.\",\n    environment=\"remote\",\n)\nprint(f\"Environment ID: {interaction.environment_id}\")\n\n# Step 2: Reuse the same environment in a follow-up interaction.\ninteraction_2 = client.interactions.create(\n    agent=\"antigravity-preview-05-2026\",\n    input=\"Modify the script to accept a name argument and greet the user.\",\n    environment=interaction.environment_id,\n    previous_interaction_id=interaction.id,\n)\nprint(interaction_2.output_text)\n"
          },
          {
            "label": "with_sources",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\ninteraction = client.interactions.create(\n    agent=\"antigravity-preview-05-2026\",\n    input=\"List all files under /workspace and summarize what you find.\",\n    environment={\n        \"type\": \"remote\",\n        \"sources\": [\n            {\n                \"type\": \"repository\",\n                \"source\": \"https://github.com/octocat/Spoon-Knife\",\n                \"target\": \"/workspace/repo\",\n            },\n            {\n                \"type\": \"inline\",\n                \"content\": \"Focus on Python files only.\",\n                \"target\": \"/workspace/notes.txt\",\n            },\n        ],\n    },\n)\nprint(interaction.output_text)\n"
          },
          {
            "label": "custom_agent",
            "lang": "python",
            "source": "import uuid\nfrom google import genai\n\nclient = genai.Client()\n\n# Step 1: Create a custom agent.\nagent_id = f\"code-reviewer-{uuid.uuid4().hex[:8]}\"\nclient.agents.create(\n    id=agent_id,\n    base_agent=\"antigravity-preview-05-2026\",\n    system_instruction=(\n        \"You are a senior code reviewer. Check every file for bugs, style\"\n        \" issues, and security vulnerabilities.\"\n    ),\n    base_environment={\n        \"type\": \"remote\",\n        \"sources\": [{\n            \"type\": \"repository\",\n            \"source\": \"https://github.com/octocat/Spoon-Knife\",\n            \"target\": \"/workspace/repo\",\n        }],\n    },\n)\n\n# Step 2: Use the custom agent.\nresult = client.interactions.create(\n    agent=agent_id,\n    input=(\n        \"Review the latest changes in /workspace/repo/src and file a\"\n        \" summary.\"\n    ),\n    environment=\"remote\",\n)\nprint(result.output_text)\n"
          },
          {
            "label": "simple",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  input: 'Hello, how are you?',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "multi_turn",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  input: [\n    {type: 'user_input', content: [{type: 'text', text: 'Hello'}]},\n    {\n      type: 'model_output',\n      content: [\n        {type: 'text', text: 'Hi there! How can I help you today?'},\n      ],\n    },\n    {\n      type: 'user_input',\n      content: [{type: 'text', text: 'What is the capital of France?'}],\n    },\n  ],\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "multimodal_image",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  input: [\n    {type: 'text', text: 'What is in this picture?'},\n    {type: 'image', data: 'BASE64_ENCODED_IMAGE', mime_type: 'image/png'},\n  ],\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "function_calling",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  tools: [\n    {\n      type: 'function',\n      name: 'get_weather',\n      description: 'Get the current weather in a given location',\n      parameters: {\n        type: 'object',\n        properties: {\n          location: {\n            type: 'string',\n            description: 'The city and state, e.g. San Francisco, CA',\n          },\n        },\n        required: ['location'],\n      },\n    },\n  ],\n  input: 'What is the weather like in Boston, MA?',\n});\nconsole.log(interaction.steps.at(-1));\n"
          },
          {
            "label": "deep_research",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  agent: 'deep-research-pro-preview-12-2025',\n  input: 'find a cure to cancer',\n  background: true,\n});\nconsole.log(interaction.status);\n"
          },
          {
            "label": "antigravity",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  agent: 'antigravity-preview-05-2026',\n  input:\n    'Read Hacker News, summarize the top 5 stories, and save results as a markdown file.',\n  environment: 'remote',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "reuse_env",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n// Step 1: Create an interaction with a fresh remote environment.\nconst interaction = await ai.interactions.create({\n  agent: 'antigravity-preview-05-2026',\n  input: 'Write a hello world script at /workspace/hello.py.',\n  environment: 'remote',\n});\nconsole.log(`Environment ID: ${interaction.environment_id}`);\n\n// Step 2: Reuse the same environment in a follow-up interaction.\nconst interaction2 = await ai.interactions.create({\n  agent: 'antigravity-preview-05-2026',\n  input: 'Modify the script to accept a name argument and greet the user.',\n  environment: interaction.environment_id,\n  previous_interaction_id: interaction.id,\n});\nconsole.log(interaction2.output_text);\n"
          },
          {
            "label": "with_sources",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  agent: 'antigravity-preview-05-2026',\n  input: 'List all files under /workspace and summarize what you find.',\n  environment: {\n    type: 'remote',\n    sources: [\n      {\n        type: 'repository',\n        source: 'https://github.com/octocat/Spoon-Knife',\n        target: '/workspace/repo',\n      },\n      {\n        type: 'inline',\n        content: 'Focus on Python files only.',\n        target: '/workspace/notes.txt',\n      },\n    ],\n  },\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "custom_agent",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n// Step 1: Create a custom agent.\nconst agentId = `code-reviewer-${crypto.randomUUID().slice(0, 8)}`;\nawait ai.agents.create({\n  id: agentId,\n  base_agent: 'antigravity-preview-05-2026',\n  system_instruction:\n    'You are a senior code reviewer. Check every file for bugs, style issues, and security vulnerabilities.',\n  base_environment: {\n    type: 'remote',\n    sources: [\n      {\n        type: 'repository',\n        source: 'https://github.com/octocat/Spoon-Knife',\n        target: '/workspace/repo',\n      },\n    ],\n  },\n});\n\n// Step 2: Use the custom agent.\nconst result = await ai.interactions.create({\n  agent: agentId,\n  input:\n    'Review the latest changes in /workspace/repo/src and file a summary.',\n  environment: 'remote',\n});\nconsole.log(result.output_text);\n"
          },
          {
            "label": "simple",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .input(InteractionsInput.of(\"Hello, how are you?\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "multi_turn",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.ModelOutputStep;\nimport com.google.genai.gaos.models.interactions.Step;\nimport com.google.genai.gaos.models.interactions.TextContent;\nimport com.google.genai.gaos.models.interactions.UserInputStep;\n\nClient client = new Client();\nList<Step> conversation =\n    List.of(\n        UserInputStep.builder()\n            .content(List.of(TextContent.builder().text(\"Hello!\").build()))\n            .build(),\n        ModelOutputStep.builder()\n            .content(\n                List.of(\n                    TextContent.builder().text(\"Hi there! How can I help you today?\").build()))\n            .build(),\n        UserInputStep.builder()\n            .content(\n                List.of(TextContent.builder().text(\"What is the capital of France?\").build()))\n            .build());\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .input(InteractionsInput.ofStep(conversation))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "multimodal_image",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.Content;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.ImageContent;\nimport com.google.genai.gaos.models.interactions.ImageContentMimeType;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.TextContent;\n\nClient client = new Client();\nList<Content> content =\n    List.of(\n        TextContent.builder().text(\"What is in this picture?\").build(),\n        ImageContent.builder()\n            .data(\"BASE64_ENCODED_IMAGE\")\n            .mimeType(ImageContentMimeType.IMAGE_PNG)\n            .build());\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .input(InteractionsInput.ofContent(content))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "function_calling",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Function;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.Step;\n\nClient client = new Client();\nMap<String, Object> parameters =\n    Map.of(\n        \"type\", \"object\",\n        \"properties\",\n            Map.of(\n                \"location\",\n                Map.of(\n                    \"type\", \"string\",\n                    \"description\", \"The city and state, e.g. San Francisco, CA\")),\n        \"required\", List.of(\"location\"));\nFunction functionTool =\n    Function.builder()\n        .name(\"get_weather\")\n        .description(\"Get the current weather in a given location\")\n        .parameters(parameters)\n        .build();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .tools(List.of(functionTool))\n        .input(InteractionsInput.of(\"What is the weather like in Boston, MA?\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nList<Step> steps = interaction.steps().orElse(List.of());\nif (!steps.isEmpty()) {\n  System.out.println(steps.get(steps.size() - 1));\n}\n"
          },
          {
            "label": "deep_research",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.interactions.AgentOption;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteraction;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionStatus;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\nCreateAgentInteraction params =\n    CreateAgentInteraction.builder()\n        .agent(AgentOption.of(\"deep-research-pro-preview-12-2025\"))\n        .input(InteractionsInput.of(\"find a cure to cancer\"))\n        .background(true)\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.status().map(InteractionStatus::value).orElse(\"\"));\n"
          },
          {
            "label": "antigravity",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.interactions.AgentOption;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteraction;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\nCreateAgentInteraction params =\n    CreateAgentInteraction.builder()\n        .agent(AgentOption.of(\"antigravity-preview-05-2026\"))\n        .input(\n            InteractionsInput.of(\n                \"Read Hacker News, summarize the top 5 stories, and save results as a markdown\"\n                    + \" file.\"))\n        .environment(CreateAgentInteractionEnvironment.of(\"remote\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "reuse_env",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.interactions.AgentOption;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteraction;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.environments.Environment;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.Step;\n\nClient client = new Client();\n\n// Step 1: Create an interaction with a fresh remote environment.\nCreateAgentInteraction params1 =\n    CreateAgentInteraction.builder()\n        .agent(AgentOption.of(\"antigravity-preview-05-2026\"))\n        .input(InteractionsInput.of(\"Write a hello world script at /workspace/hello.py.\"))\n        .environment(CreateAgentInteractionEnvironment.of(\"remote\"))\n        .build();\nCreateInteractionResponse response1 =\n    client.interactions.create(CreateInteractionRequestBody.of(params1));\nInteraction interaction1 =\n    response1.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(\"Environment ID: \" + interaction1.environmentId().orElse(\"\"));\n\n// Step 2: Reuse the same environment in a follow-up interaction.\nCreateAgentInteraction params2 =\n    CreateAgentInteraction.builder()\n        .agent(AgentOption.of(\"antigravity-preview-05-2026\"))\n        .input(\n            InteractionsInput.of(\n                \"Modify the script to accept a name argument and greet the user.\"))\n        .environment(\n            CreateAgentInteractionEnvironment.of(interaction1.environmentId().orElse(\"\")))\n        .previousInteractionId(interaction1.id().orElse(null))\n        .build();\nCreateInteractionResponse response2 =\n    client.interactions.create(CreateInteractionRequestBody.of(params2));\nInteraction interaction2 =\n    response2.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction2.outputText().orElse(\"\"));\n"
          },
          {
            "label": "with_sources",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.interactions.AgentOption;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteraction;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.environments.Environment;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.Source;\nimport com.google.genai.gaos.models.interactions.SourceType;\n\nClient client = new Client();\ncom.google.genai.gaos.models.interactions.Environment env =\n    com.google.genai.gaos.models.interactions.Environment.builder()\n        .sources(\n            List.of(\n                Source.builder()\n                    .type(SourceType.REPOSITORY)\n                    .source(\"https://github.com/octocat/Spoon-Knife\")\n                    .target(\"/workspace/repo\")\n                    .build(),\n                Source.builder()\n                    .type(SourceType.INLINE)\n                    .content(\"Focus on Python files only.\")\n                    .target(\"/workspace/notes.txt\")\n                    .build()))\n        .build();\nCreateAgentInteraction params =\n    CreateAgentInteraction.builder()\n        .agent(AgentOption.of(\"antigravity-preview-05-2026\"))\n        .input(\n            InteractionsInput.of(\n                \"List all files under /workspace and summarize what you find.\"))\n        .environment(CreateAgentInteractionEnvironment.of(env))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "custom_agent",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.agents.Agent;\nimport com.google.genai.gaos.models.interactions.AgentOption;\nimport com.google.genai.gaos.models.agents.BaseEnvironment;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteraction;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.environments.Environment;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.Source;\nimport com.google.genai.gaos.models.interactions.SourceType;\nimport com.google.genai.gaos.models.interactions.Step;\n\nClient client = new Client();\n\n// Step 1: Create a custom agent.\nString agentId = \"code-reviewer-\" + UUID.randomUUID().toString().substring(0, 8);\ncom.google.genai.gaos.models.interactions.Environment baseEnv =\n    com.google.genai.gaos.models.interactions.Environment.builder()\n        .sources(\n            List.of(\n                Source.builder()\n                    .type(SourceType.REPOSITORY)\n                    .source(\"https://github.com/octocat/Spoon-Knife\")\n                    .target(\"/workspace/repo\")\n                    .build()))\n        .build();\nAgent customAgent =\n    Agent.builder()\n        .id(agentId)\n        .baseAgent(\"antigravity-preview-05-2026\")\n        .systemInstruction(\n            \"You are a senior code reviewer. Check every file for bugs, style issues, and\"\n                + \" security vulnerabilities.\")\n        .baseEnvironment(BaseEnvironment.of(baseEnv))\n        .build();\nclient.agents.create(customAgent);\n\n// Step 2: Use the custom agent.\nCreateAgentInteraction params =\n    CreateAgentInteraction.builder()\n        .agent(AgentOption.of(agentId))\n        .input(\n            InteractionsInput.of(\n                \"Review the latest changes in /workspace/repo/src and file a summary.\"))\n        .environment(CreateAgentInteractionEnvironment.of(\"remote\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "simple",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"Hello, how are you?\")),\n    })\n\n    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          },
          {
            "label": "multi_turn",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    history := []gaos_interactions.Step{\n        gaos_interactions.NewStep(gaos_interactions.UserInputStep{\n            Content: []gaos_interactions.Content{\n                gaos_interactions.NewContent(gaos_interactions.TextContent{\n                    Text: \"Hello!\",\n                }),\n            },\n        }),\n        gaos_interactions.NewStep(gaos_interactions.ModelOutputStep{\n            Content: []gaos_interactions.Content{\n                gaos_interactions.NewContent(gaos_interactions.TextContent{\n                    Text: \"Hi there! How can I help you today?\",\n                }),\n            },\n        }),\n        gaos_interactions.NewStep(gaos_interactions.UserInputStep{\n            Content: []gaos_interactions.Content{\n                gaos_interactions.NewContent(gaos_interactions.TextContent{\n                    Text: \"What is the capital of France?\",\n                }),\n            },\n        }),\n    }\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(history)),\n    })\n\n    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          },
          {
            "label": "multimodal_image",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    contents := []gaos_interactions.Content{\n        gaos_interactions.NewContent(gaos_interactions.TextContent{\n            Text: \"What is in this picture?\",\n        }),\n        gaos_interactions.NewContent(gaos_interactions.ImageContent{\n            Data:     genai.Ptr(\"BASE64_ENCODED_IMAGE\"),\n            MimeType: gaos_interactions.ImageContentMimeTypeImagePng.ToPointer(),\n        }),\n    }\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(contents)),\n    })\n\n    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          },
          {
            "label": "function_calling",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    function := gaos_interactions.Function{\n        Name:        genai.Ptr(\"get_weather\"),\n        Description: genai.Ptr(\"Get the current weather in a given location\"),\n        Parameters: map[string]any{\n            \"type\": \"object\",\n            \"properties\": map[string]any{\n                \"location\": map[string]any{\n                    \"type\":        \"string\",\n                    \"description\": \"The city and state, e.g. San Francisco, CA\",\n                },\n            },\n            \"required\": []string{\"location\"},\n        },\n    }\n\n    tool := gaos_interactions.NewTool(function)\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"What is the weather like in Boston, MA?\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil {\n        for _, step := range res.Interaction.Steps {\n            if step.FunctionCallStep != nil {\n                fmt.Println(\"Function Call:\", step.FunctionCallStep.Name)\n                fmt.Println(\"Arguments:\", step.FunctionCallStep.Arguments)\n            }\n        }\n    }\n}\n"
          },
          {
            "label": "deep_research",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateAgentInteraction{\n        Agent:      gaos_interactions.AgentOption(\"deep-research-pro-preview-12-2025\"),\n        Input:      genai.Ptr(gaos_interactions.NewInteractionsInput(\"find a cure to cancer\")),\n        Background: genai.Ptr(true),\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil {\n        fmt.Println(res.Interaction.Status)\n    }\n}\n"
          },
          {
            "label": "antigravity",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateAgentInteraction{\n        Agent:       gaos_interactions.AgentOption(\"antigravity-preview-05-2026\"),\n        Input:       genai.Ptr(gaos_interactions.NewInteractionsInput(\"Read Hacker News, summarize the top 5 stories, and save results as a markdown file.\")),\n        Environment: genai.Ptr(gaos_interactions.NewCreateAgentInteractionEnvironment(\"remote\")),\n    })\n\n    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          },
          {
            "label": "reuse_env",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    // Step 1: Create an interaction with a fresh remote environment.\n    body1 := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateAgentInteraction{\n        Agent:       gaos_interactions.AgentOption(\"antigravity-preview-05-2026\"),\n        Input:       genai.Ptr(gaos_interactions.NewInteractionsInput(\"Write a hello world script at /workspace/hello.py.\")),\n        Environment: genai.Ptr(gaos_interactions.NewCreateAgentInteractionEnvironment(\"remote\")),\n    })\n\n    res1, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body1})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res1.Interaction == nil || res1.Interaction.EnvironmentID == nil {\n        log.Fatal(\"No environment ID returned\")\n    }\n    fmt.Printf(\"Environment ID: %s\\n\", *res1.Interaction.EnvironmentID)\n\n    // Step 2: Reuse the same environment in a follow-up interaction.\n    body2 := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateAgentInteraction{\n        Agent:                 gaos_interactions.AgentOption(\"antigravity-preview-05-2026\"),\n        Input:                 genai.Ptr(gaos_interactions.NewInteractionsInput(\"Modify the script to accept a name argument and greet the user.\")),\n        Environment:           genai.Ptr(gaos_interactions.NewCreateAgentInteractionEnvironment(*res1.Interaction.EnvironmentID)),\n        PreviousInteractionID: res1.Interaction.ID,\n    })\n\n    res2, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body2})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res2.Interaction != nil && res2.Interaction.OutputText != nil {\n        fmt.Println(*res2.Interaction.OutputText)\n    }\n}\n"
          },
          {
            "label": "with_sources",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    env := gaos_interactions.Environment{\n        Sources: []gaos_interactions.Source{\n            {\n                Type:   genai.Ptr(gaos_interactions.SourceTypeRepository),\n                Source: genai.Ptr(\"https://github.com/octocat/Spoon-Knife\"),\n                Target: genai.Ptr(\"/workspace/repo\"),\n            },\n            {\n                Type:    genai.Ptr(gaos_interactions.SourceTypeInline),\n                Content: genai.Ptr(\"Focus on Python files only.\"),\n                Target:  genai.Ptr(\"/workspace/notes.txt\"),\n            },\n        },\n    }\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateAgentInteraction{\n        Agent:       gaos_interactions.AgentOption(\"antigravity-preview-05-2026\"),\n        Input:       genai.Ptr(gaos_interactions.NewInteractionsInput(\"List all files under /workspace and summarize what you find.\")),\n        Environment: genai.Ptr(gaos_interactions.NewCreateAgentInteractionEnvironment(env)),\n    })\n\n    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          },
          {
            "label": "custom_agent",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"time\"\n    \"google.golang.org/genai\"\n    gaos_agents \"google.golang.org/genai/interactions/models/agents\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    // Step 1: Create a custom agent.\n    agentID := fmt.Sprintf(\"code-reviewer-%d\", time.Now().UnixNano())\n    baseEnv := gaos_interactions.Environment{\n        Sources: []gaos_interactions.Source{\n            {\n                Type:   genai.Ptr(gaos_interactions.SourceTypeRepository),\n                Source: genai.Ptr(\"https://github.com/octocat/Spoon-Knife\"),\n                Target: genai.Ptr(\"/workspace/repo\"),\n            },\n        },\n    }\n\n    _, err = client.Agents.Create(ctx, operations.CreateAgentRequest{\n        Body: gaos_agents.Agent{\n            ID:                genai.Ptr(agentID),\n            BaseAgent:         genai.Ptr(\"antigravity-preview-05-2026\"),\n            SystemInstruction: genai.Ptr(\"You are a senior code reviewer. Check every file for bugs, style issues, and security vulnerabilities.\"),\n            BaseEnvironment:   genai.Ptr(gaos_agents.NewBaseEnvironment(baseEnv)),\n        },\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    // Step 2: Use the custom agent.\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateAgentInteraction{\n        Agent:       gaos_interactions.AgentOption(agentID),\n        Input:       genai.Ptr(gaos_interactions.NewInteractionsInput(\"Review the latest changes in /workspace/repo/src and file a summary.\")),\n        Environment: genai.Ptr(gaos_interactions.NewCreateAgentInteractionEnvironment(\"remote\")),\n    })\n\n    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{Body: body})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/interactions/{id}": {
      "delete": {
        "operationId": "deleteInteraction",
        "description": "Deletes the interaction by id.",
        "parameters": [
          {
            "$ref": "#/components/parameters/api_version"
          },
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the interaction to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interactionsId",
            "in": "path",
            "description": "Required. The name of the interaction to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful deletion of the interaction."
          },
          "4XX": {
            "description": "Error deleting interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/Error"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "5XX": {
            "description": "Error deleting interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/Error"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "summary": "Deleting an interaction",
        "x-speakeasy-exports": [
          {
            "name": "InteractionDeleteParams",
            "group": "interactions",
            "representation": "input"
          }
        ],
        "x-speakeasy-group": "interactions",
        "x-speakeasy-name-override": "delete",
        "x-codeSamples": [
          {
            "label": "delete",
            "lang": "sh",
            "source": "curl -X DELETE \"https://generativelanguage.googleapis.com/v1beta/interactions/$INTERACTION_ID\" \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "delete",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n\nclient.interactions.delete(id=created.id)\nprint(\"Interaction deleted successfully.\")\n"
          },
          {
            "label": "delete",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nawait ai.interactions.delete(created.id);\nconsole.log('Interaction deleted successfully.');\n"
          },
          {
            "label": "delete",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.Interaction;\n\nClient client = new Client();\n\n\nclient.interactions.delete(interactionId);\nSystem.out.println(\"Interaction deleted successfully.\");\n"
          },
          {
            "label": "delete",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n\n    req := operations.DeleteInteractionRequest{\n        ID: interactionID,\n    }\n\n    _, err = client.Interactions.Delete(\n        ctx,\n        req,\n    )\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    fmt.Println(\"Interaction deleted successfully.\")\n}\n"
          }
        ]
      },
      "get": {
        "operationId": "getInteractionById",
        "description": "Retrieves the full details of a single interaction based on its `Interaction.id`.",
        "parameters": [
          {
            "$ref": "#/components/parameters/api_version"
          },
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the interaction to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "last_event_id",
            "in": "query",
            "description": "Optional. If set, resumes the interaction stream from the next chunk after the event marked by the event id. Can only be used if `stream` is true.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stream",
            "in": "query",
            "description": "If set to true, the generated content will be streamed incrementally.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful retrieval of the interaction.",
            "content": {
              "application/json": {
                "examples": {
                  "get": {
                    "summary": "Get Interaction",
                    "value": {
                      "created": "2025-11-26T12:25:15Z",
                      "id": "v1_ChdPU0F4YWFtNkFwS2kxZThQZ05lbXdROBIXT1NBeGFhbTZBcEtpMWU4UGdOZW13UTg",
                      "model": "gemini-3.6-flash",
                      "object": "interaction",
                      "status": "completed",
                      "steps": [
                        {
                          "type": "model_output",
                          "content": [
                            {
                              "type": "text",
                              "text": "I'm doing great, thank you for asking! How can I help you today?"
                            }
                          ]
                        }
                      ],
                      "updated": "2025-11-26T12:25:15Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Interaction"
                }
              },
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/InteractionSseStreamEvent"
                },
                "x-speakeasy-sse-sentinel": "[DONE]"
              }
            }
          },
          "4XX": {
            "description": "Error getting interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/Error"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "5XX": {
            "description": "Error getting interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/Error"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "summary": "Retrieving an interaction",
        "x-speakeasy-exports": [
          {
            "name": "InteractionGetParams",
            "group": "interactions",
            "representation": "input"
          }
        ],
        "x-speakeasy-group": "interactions",
        "x-speakeasy-name-override": "get",
        "x-speakeasy-sse-overload": true,
        "x-codeSamples": [
          {
            "label": "get",
            "lang": "sh",
            "source": "curl -X GET \"https://generativelanguage.googleapis.com/v1beta/interactions/$INTERACTION_ID\" \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Api-Revision: 2026-05-20\"\n"
          },
          {
            "label": "get",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n\ninteraction = client.interactions.get(id=created.id)\nprint(interaction.status)\n"
          },
          {
            "label": "get",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n\nconst interaction = await ai.interactions.get(created.id);\nconsole.log(interaction.status);\n"
          },
          {
            "label": "get",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.GetInteractionByIdRequest;\nimport com.google.genai.gaos.models.operations.GetInteractionByIdResponse;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionStatus;\n\nClient client = new Client();\n\n\nGetInteractionByIdResponse getResponse =\n    client.interactions.get(new GetInteractionByIdRequest(interactionId));\nInteraction interaction =\n    getResponse\n        .interaction()\n        .orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.status().map(InteractionStatus::value).orElse(\"\"));\n"
          },
          {
            "label": "get",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n\n    interaction, err := client.Interactions.Get(ctx, operations.GetInteractionByIDRequest{\n        ID: *created.Interaction.ID,\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if interaction.Interaction != nil {\n        fmt.Println(interaction.Interaction.Status)\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/interactions/{id}/cancel": {
      "post": {
        "operationId": "cancelInteractionById",
        "description": "Cancels an interaction by id. This only applies to background interactions that are still running.",
        "parameters": [
          {
            "$ref": "#/components/parameters/api_version"
          },
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the interaction to cancel.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "examples": {
                  "cancel": {
                    "summary": "Cancel Interaction",
                    "value": {
                      "created": "2025-11-26T12:25:15Z",
                      "id": "v1_ChdPU0F4YWFtNkFwS2kxZThQZ05lbXdROBIXT1NBeGFhbTZBcEtpMWU4UGdOZW13UTg",
                      "model": "gemini-3.6-flash",
                      "object": "interaction",
                      "status": "cancelled",
                      "updated": "2025-11-26T12:25:15Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Interaction"
                }
              }
            }
          },
          "4XX": {
            "description": "Error cancelling interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/Error"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "5XX": {
            "description": "Error cancelling interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "$ref": "#/components/schemas/Error"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "summary": "Canceling an interaction",
        "x-speakeasy-group": "interactions",
        "x-speakeasy-name-override": "cancel",
        "x-codeSamples": [
          {
            "label": "cancel",
            "lang": "sh",
            "source": "curl -X POST \"https://generativelanguage.googleapis.com/v1beta/interactions/$INTERACTION_ID/cancel\" \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "cancel",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n# Start a background interaction so it stays in-progress.\ncreated = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    input=\"Write a long essay about the history of computing.\",\n    tools=[{\"type\": \"computer_use\"}],\n    background=True,\n)\n\n# Cancel the in-progress interaction.\ninteraction = client.interactions.cancel(id=created.id)\nprint(interaction.status)\n"
          },
          {
            "label": "cancel",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n// Start a background interaction so it stays in-progress.\nconst created = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  input: 'Write a long essay about the history of computing.',\n  tools: [{type: 'computer_use'}],\n  background: true,\n});\n\n// Cancel the in-progress interaction.\nconst interaction = await ai.interactions.cancel(created.id);\nconsole.log(interaction.status);\n"
          },
          {
            "label": "cancel",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.operations.CancelInteractionByIdResponse;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.ComputerUse;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionStatus;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\n\n// Start a background interaction so it stays in-progress.\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .input(InteractionsInput.of(\"Write a long essay about the history of computing.\"))\n        .tools(List.of(new ComputerUse()))\n        .background(true)\n        .build();\nCreateInteractionResponse created =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nString interactionId = created.interaction().flatMap(Interaction::id).orElseThrow();\n\n// Cancel the in-progress interaction.\nCancelInteractionByIdResponse cancelResponse = client.interactions.cancel(interactionId);\nInteraction interaction =\n    cancelResponse\n        .interaction()\n        .orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.status().map(InteractionStatus::value).orElse(\"\"));\n"
          },
          {
            "label": "cancel",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n\n    req := operations.CancelInteractionByIDRequest{\n        ID: interactionID,\n    }\n\n    res, err := client.Interactions.Cancel(\n        ctx,\n        req,\n    )\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil {\n        fmt.Println(res.Interaction.Status)\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/triggers": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "get": {
        "operationId": "ListTriggers",
        "description": "Lists triggers for a project.",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Optional. Filter expression (e.g., by state).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "Optional. The maximum number of triggers to return per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "Optional. A page token from a previous ListTriggers call.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTriggersResponse"
                }
              }
            }
          }
        },
        "tags": [
          "triggers"
        ]
      },
      "post": {
        "operationId": "CreateTrigger",
        "description": "Creates a new trigger that will invoke the specified agent on the given\ncron schedule.",
        "parameters": [],
        "requestBody": {
          "description": "Required. The trigger configuration to create.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Trigger"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Trigger"
                }
              }
            }
          }
        },
        "tags": [
          "triggers"
        ],
        "x-codeSamples": [
          {
            "label": "create",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/triggers \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"schedule\": \"0 9 * * *\",\n    \"time_zone\": \"America/New_York\",\n    \"interaction\": {\n      \"agent\": \"antigravity-preview-05-2026\",\n      \"input\": \"Summarize top news stories.\",\n      \"environment\": \"remote\"\n    }\n  }'\n"
          },
          {
            "label": "create",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\ntrigger = client.triggers.create(\n    schedule=\"0 9 * * *\",\n    time_zone=\"America/New_York\",\n    interaction={\n        \"agent\": \"antigravity-preview-05-2026\",\n        \"input\": \"Summarize top news stories.\",\n        \"environment\": \"remote\",\n    },\n)\nprint(trigger.id, trigger.interaction.agent)\n"
          },
          {
            "label": "create",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst trigger = await ai.triggers.create({\n  schedule: '0 9 * * *',\n  time_zone: 'America/New_York',\n  interaction: {\n    agent: 'antigravity-preview-05-2026',\n    input: 'Summarize top news stories.',\n    environment: 'remote',\n  },\n});\nconsole.log(trigger.id, trigger.interaction.agent);\n"
          },
          {
            "label": "create",
            "lang": "java",
            "source": "import com.google.genai.gaos.models.interactions.AgentOption;\nimport com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteraction;\nimport com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment;\nimport com.google.genai.gaos.models.operations.CreateTriggerResponse;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.triggers.Trigger;\nimport com.google.genai.gaos.models.triggers.TriggerCreateParams;\n\nClient client = new Client();\nCreateAgentInteraction interaction =\n    CreateAgentInteraction.builder()\n        .agent(AgentOption.of(\"antigravity-preview-05-2026\"))\n        .input(InteractionsInput.of(\"Summarize top news stories.\"))\n        .environment(CreateAgentInteractionEnvironment.of(\"remote\"))\n        .build();\nTriggerCreateParams params =\n    TriggerCreateParams.builder()\n        .schedule(\"0 9 * * *\")\n        .timeZone(\"America/New_York\")\n        .interaction(interaction)\n        .build();\nCreateTriggerResponse response = client.triggers.create(params);\nTrigger trigger =\n    response.trigger().orElseThrow(() -> new RuntimeException(\"No trigger returned\"));\nSystem.out.println(\n    trigger.id().orElse(\"\")\n        + \" \"\n        + trigger.interaction().flatMap(CreateAgentInteraction::agent).orElse(null));\n"
          }
        ]
      }
    },
    "/{api_version}/triggers/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "delete": {
        "operationId": "DeleteTrigger",
        "description": "Deletes a trigger.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. Resource name of the trigger.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Empty"
                }
              }
            }
          }
        },
        "tags": [
          "triggers"
        ]
      },
      "get": {
        "operationId": "GetTrigger",
        "description": "Gets details of a single trigger.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. Resource name of the trigger.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Trigger"
                }
              }
            }
          }
        },
        "tags": [
          "triggers"
        ]
      },
      "patch": {
        "operationId": "UpdateTrigger",
        "description": "Updates a trigger.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. Resource name of the trigger.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Required. The trigger with updated fields.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTriggerRequest"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Trigger"
                }
              }
            }
          }
        },
        "tags": [
          "triggers"
        ]
      }
    },
    "/{api_version}/triggers/{triggerId}/executions": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "get": {
        "operationId": "ListTriggerExecutions",
        "description": "Lists executions for a trigger.",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Optional. Filter expression.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "The maximum number of executions to return per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "A page token from a previous ListTriggerExecutions call.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "triggerId",
            "in": "path",
            "description": "Required. The trigger ID to list executions from.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTriggerExecutionsResponse"
                }
              }
            }
          }
        },
        "tags": [
          "triggers.executions"
        ]
      },
      "post": {
        "operationId": "RunTrigger",
        "description": "Runs a trigger immediately.",
        "parameters": [
          {
            "name": "triggerId",
            "in": "path",
            "description": "Required. Resource name of the trigger.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TriggerExecution"
                }
              }
            }
          }
        },
        "tags": [
          "triggers"
        ]
      }
    },
    "/{api_version}/voices": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "get": {
        "operationId": "ListVoices",
        "description": "Lists custom stored voices owned by the caller (ordered newest first)\nfollowed by prebuilt system voices from Google's voice catalog.",
        "parameters": [
          {
            "name": "accent",
            "in": "query",
            "description": "Optional. Filter by accent description (e.g. \"American\", \"British\").\nCase-insensitive exact match. If multiple values are specified, matches\nvoices with any of the specified accents (OR).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "context",
            "in": "query",
            "description": "Optional. Filter by intended context or domain (e.g. \"News, Commercial\").\nCase-insensitive exact match. If multiple values are specified, matches\nvoices with any of the specified contexts (OR).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "gender",
            "in": "query",
            "description": "Optional. Filter by gender presentation (e.g. \"female\", \"male\", \"neutral\").\nCase-insensitive exact match. If multiple values are specified, matches\nvoices with any of the specified genders (OR).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "language_code",
            "in": "query",
            "description": "Optional. Filter by BCP-47 language code (e.g. \"en-US\").\nCase-insensitive exact match. If multiple values are specified, matches\nvoices with any of the specified language codes (OR).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "Optional. The maximum number of voices to return per page. The service may\nreturn fewer than this value. If unspecified, at most 50 voices are\nreturned. The maximum value is 1000; values above 1000 are coerced to\n1000.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "Optional. A page token received from a previous `ListVoices` call. Provide\nthis to retrieve the subsequent page.\n\nWhen paginating, all filter query parameters (`language_code`,\n`region_code`, `accent`, `persona`, `context`, `gender`, `pitch`, `type`,\nand `search`) must match the call that returned this token; otherwise the\nrequest fails with `INVALID_ARGUMENT`. `page_size` may change between\npages.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "persona",
            "in": "query",
            "description": "Optional. Filter by vocal persona (e.g. \"Warm, Friendly\").\nCase-insensitive exact match. If multiple values are specified, matches\nvoices with any of the specified personas (OR).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "pitch",
            "in": "query",
            "description": "Optional. Filter by vocal pitch. Accepts `\"low\"`, `\"medium\"`, `\"high\"`\n(case-insensitive). If multiple values are specified, matches voices with\nany of the specified pitches (OR).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "region_code",
            "in": "query",
            "description": "Optional. Filter by ISO 3166-1 alpha-2 or UN M.49 region code (e.g. \"US\",\n\"001\").\nCase-insensitive exact match. If multiple values are specified, matches\nvoices with any of the specified region codes (OR).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Optional. Free-text substring search query matched case-insensitively\nagainst both `display_name` and `description`. Maximum 2048 bytes.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Optional. Filter by voice type. Accepts `\"prebuilt\"`, `\"replicated\"`,\n`\"prompted\"` (case-insensitive). If multiple values are specified, matches\nvoices with any of the specified types (OR).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVoicesResponse"
                }
              }
            }
          }
        },
        "tags": [
          "voices"
        ],
        "x-codeSamples": [
          {
            "label": "list",
            "lang": "sh",
            "source": "curl -X GET https://generativelanguage.googleapis.com/v1beta/voices \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "list",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.voices.list()\nfor voice in response.voices or []:\n  print(voice.id, voice.display_name)\n"
          },
          {
            "label": "list",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst response = await ai.voices.list();\nfor (const voice of response.voices ?? []) {\n  console.log(voice.id, voice.display_name);\n}\n"
          },
          {
            "label": "list",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    res, err := client.Voices.List(ctx, operations.ListVoicesRequest{})\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.ListVoicesResponse != nil {\n        for _, voice := range res.ListVoicesResponse.Voices {\n            if voice.ID != nil && voice.DisplayName != nil {\n                fmt.Println(*voice.ID, *voice.DisplayName)\n            }\n        }\n    }\n}\n"
          }
        ]
      },
      "post": {
        "operationId": "CreateVoice",
        "description": "Creates a custom voice from a natural-language prompt\n(`VOICE_TYPE_PROMPTED`) or from reference and consent audio recordings\n(`VOICE_TYPE_REPLICATED`).",
        "parameters": [],
        "requestBody": {
          "description": "The request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVoiceRequest"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Voice"
                }
              }
            }
          }
        },
        "tags": [
          "voices"
        ],
        "x-codeSamples": [
          {
            "label": "create",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/voices \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"store\": true,\n    \"voice\": {\n      \"type\": \"prompted\",\n      \"display_name\": \"Warm Narrator\",\n      \"language_code\": \"en-US\",\n      \"prompted\": {\n        \"input\": \"A warm, friendly narrator voice with a calm pace.\"\n      }\n    }\n  }'\n"
          },
          {
            "label": "create",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nvoice = client.voices.create(\n    store=True,\n    voice={\n        \"type\": \"prompted\",\n        \"display_name\": \"Warm Narrator\",\n        \"language_code\": \"en-US\",\n        \"prompted\": {\n            \"input\": \"A warm, friendly narrator voice with a calm pace.\",\n        },\n    },\n)\nprint(voice.id)\n"
          },
          {
            "label": "create",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst voice = await ai.voices.create({\n  store: true,\n  voice: {\n    type: 'prompted',\n    display_name: 'Warm Narrator',\n    language_code: 'en-US',\n    prompted: {\n      input: 'A warm, friendly narrator voice with a calm pace.',\n    },\n  },\n});\nconsole.log(voice.id);\n"
          },
          {
            "label": "create",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_voices \"google.golang.org/genai/interactions/models/voices\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    req := operations.CreateVoiceRequest{\n        Body: gaos_voices.CreateVoiceRequest{\n            Store: genai.Ptr(true),\n            Voice: gaos_voices.VoiceInput{\n                Type:         gaos_voices.VoiceTypePrompted,\n                DisplayName:  genai.Ptr(\"Warm Narrator\"),\n                LanguageCode: genai.Ptr(\"en-US\"),\n                Prompted: &gaos_voices.PromptedVoice{\n                    Input: \"A warm, friendly narrator voice with a calm pace.\",\n                },\n            },\n        },\n    }\n\n    res, err := client.Voices.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Voice != nil && res.Voice.ID != nil {\n        fmt.Println(*res.Voice.ID)\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/voices/{voicesId}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "delete": {
        "operationId": "DeleteVoice",
        "description": "Deletes a custom stored voice (`store = true`) by resource name.\nPrebuilt catalog voices (`VOICE_TYPE_PREBUILT`) cannot be deleted.",
        "parameters": [
          {
            "name": "voicesId",
            "in": "path",
            "description": "Required. The resource name of the custom stored voice to delete\n(for example, `voices/voice_abc123def456`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteVoiceResponse"
                }
              }
            }
          }
        },
        "tags": [
          "voices"
        ],
        "x-codeSamples": [
          {
            "label": "delete",
            "lang": "sh",
            "source": "curl -X DELETE https://generativelanguage.googleapis.com/v1beta/voices/voice_abc123 \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "delete",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nclient.voices.delete(id=\"voice_abc123\")\n"
          },
          {
            "label": "delete",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nawait ai.voices.delete('voice_abc123');\n"
          },
          {
            "label": "delete",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    _, err = client.Voices.Delete(ctx, operations.DeleteVoiceRequest{\n        ID: \"voice_abc123\",\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n}\n"
          }
        ]
      },
      "get": {
        "operationId": "GetVoice",
        "description": "Gets a custom stored voice (`store = true`) by resource name.\nPrebuilt catalog voices (`VOICE_TYPE_PREBUILT`) cannot be retrieved via\n`GetVoice`; use `ListVoices` instead.",
        "parameters": [
          {
            "name": "voicesId",
            "in": "path",
            "description": "Required. The resource name of the custom stored voice to retrieve\n(for example, `voices/voice_abc123def456`).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Voice"
                }
              }
            }
          }
        },
        "tags": [
          "voices"
        ],
        "x-codeSamples": [
          {
            "label": "get",
            "lang": "sh",
            "source": "curl -X GET https://generativelanguage.googleapis.com/v1beta/voices/voice_abc123 \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\"\n"
          },
          {
            "label": "get",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nvoice = client.voices.get(id=\"voice_abc123\")\nprint(voice.id, voice.display_name)\n"
          },
          {
            "label": "get",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst voice = await ai.voices.get('voice_abc123');\nconsole.log(voice.id, voice.display_name);\n"
          },
          {
            "label": "get",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    res, err := client.Voices.Get(ctx, operations.GetVoiceRequest{\n        ID: \"voice_abc123\",\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Voice != nil && res.Voice.ID != nil && res.Voice.DisplayName != nil {\n        fmt.Println(*res.Voice.ID, *res.Voice.DisplayName)\n    }\n}\n"
          }
        ]
      }
    },
    "/{api_version}/webhooks": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "get": {
        "operationId": "ListWebhooks",
        "description": "Lists all Webhooks.",
        "parameters": [
          {
            "name": "page_size",
            "in": "query",
            "description": "Optional. The maximum number of webhooks to return. The service may return\nfewer than this value. If unspecified, at most 50 webhooks will be\nreturned. The maximum value is 1000.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "Optional. A page token, received from a previous `ListWebhooks` call.\nProvide this to retrieve the subsequent page.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWebhooksResponse"
                }
              }
            }
          }
        },
        "tags": [
          "webhooks"
        ]
      },
      "post": {
        "operationId": "CreateWebhook",
        "description": "Creates a new Webhook.",
        "parameters": [
          {
            "name": "webhook_id",
            "in": "query",
            "description": "The webhook_id to use for the webhook. If not specified, the server will\ngenerate a unique ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Required. The request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookRequest"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Webhook"
                }
              }
            }
          }
        },
        "tags": [
          "webhooks"
        ]
      }
    },
    "/{api_version}/webhooks/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "delete": {
        "operationId": "DeleteWebhook",
        "description": "Deletes a Webhook.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. The ID of the webhook to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Empty"
                }
              }
            }
          }
        },
        "tags": [
          "webhooks"
        ]
      },
      "get": {
        "operationId": "GetWebhook",
        "description": "Gets a specific Webhook.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. The ID of the webhook to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Webhook"
                }
              }
            }
          }
        },
        "tags": [
          "webhooks"
        ]
      },
      "patch": {
        "operationId": "UpdateWebhook",
        "description": "Updates an existing Webhook.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. The ID of the webhook to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Required. The request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookRequest"
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Webhook"
                }
              }
            }
          }
        },
        "tags": [
          "webhooks"
        ]
      }
    },
    "/{api_version}/webhooks/{id}:ping": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "post": {
        "operationId": "PingWebhook",
        "description": "Sends a ping event to a Webhook.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. The ID of the webhook to ping.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PingWebhookResponse"
                }
              }
            }
          }
        },
        "tags": [
          "webhooks"
        ]
      }
    },
    "/{api_version}/webhooks/{id}:rotateSigningSecret": {
      "parameters": [
        {
          "$ref": "#/components/parameters/api_version"
        }
      ],
      "post": {
        "operationId": "RotateSigningSecret",
        "description": "Generates a new signing secret for a Webhook.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Required. The ID of the webhook for which to generate a signing secret.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateSigningSecretResponse"
                }
              }
            }
          }
        },
        "tags": [
          "webhooks"
        ]
      }
    }
  },
  "components": {
    "parameters": {
      "EnvironmentFileExtract": {
        "name": "extract",
        "in": "query",
        "description": "Optional. If true, treats the uploaded file as a tar/tar.gz archive and unpacks it into `path`.",
        "schema": {
          "type": "boolean"
        }
      },
      "EnvironmentFileOverwrite": {
        "name": "overwrite",
        "in": "query",
        "description": "Optional. Whether to overwrite the destination file if it already exists.",
        "schema": {
          "type": "boolean"
        }
      },
      "EnvironmentFileUploadCommand": {
        "name": "X-Goog-Upload-Command",
        "in": "header",
        "description": "Command that starts the resumable upload session.",
        "required": true,
        "schema": {
          "type": "string",
          "const": "start",
          "default": "start"
        }
      },
      "EnvironmentFileUploadContentLength": {
        "name": "X-Goog-Upload-Header-Content-Length",
        "in": "header",
        "description": "Total number of file bytes that will be uploaded to the session URL.",
        "required": true,
        "schema": {
          "type": "integer",
          "format": "int64",
          "minimum": 0
        }
      },
      "EnvironmentFileUploadContentType": {
        "name": "X-Goog-Upload-Header-Content-Type",
        "in": "header",
        "description": "MIME type of the file that will be uploaded to the session URL.",
        "required": true,
        "schema": {
          "type": "string",
          "minLength": 1
        }
      },
      "EnvironmentFileUploadProtocol": {
        "name": "X-Goog-Upload-Protocol",
        "in": "header",
        "description": "Resumable upload protocol selector.",
        "required": true,
        "schema": {
          "type": "string",
          "const": "resumable",
          "default": "resumable"
        }
      },
      "api_version": {
        "name": "api_version",
        "in": "path",
        "description": "API version for request routing.",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "google_genai_user_project": {
        "name": "x-goog-user-project",
        "in": "header",
        "description": "Quota project header to send with Google GenAI API requests.",
        "schema": {
          "type": "string"
        },
        "x-speakeasy-name-override": "user_project"
      }
    },
    "headers": {
      "EnvironmentFileUploadUrl": {
        "description": "Opaque URL to which file chunks are uploaded and finalized.",
        "schema": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "schemas": {
      "Agent": {
        "description": "An agent definition for the CreateAgent API.\nThis message is the target for annotation-parser-based JSON parsing.\nNew format:\n  {\n    \"id\": \"customer-sentinel\",\n    \"base_agent\": \"\",\n    \"system_instruction\": \"...\",\n    \"base_environment\": { \"type\": \"remote\", \"sources\": [...] },\n    \"tools\": [ {\"type\": \"code_execution\"} ]\n  }",
        "type": "object",
        "properties": {
          "agent_config": {
            "description": "Configuration parameters for the agent.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/AntigravityAgentConfig"
              }
            ]
          },
          "base_environment": {
            "description": "The environment configuration for the agent.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnvironmentConfig"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "description": "The unique identifier for the agent.",
            "type": "string"
          },
          "base_agent": {
            "description": "The base agent to extend.",
            "type": "string"
          },
          "system_instruction": {
            "description": "System instruction for the agent.",
            "type": "string"
          },
          "description": {
            "description": "Agent description for developers to quickly read and understand.",
            "type": "string"
          },
          "tools": {
            "description": "The tools available to the agent.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgentTool"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "AgentOption": {
        "title": "Agent",
        "description": "The agent to interact with.",
        "type": "string",
        "enum": [
          "deep-research-pro-preview-12-2025",
          "deep-research-preview-04-2026",
          "deep-research-max-preview-04-2026",
          "antigravity-preview-05-2026"
        ],
        "x-speakeasy-enum-descriptions": [
          "Gemini Deep Research Agent",
          "Gemini Deep Research Agent",
          "Gemini Deep Research Max Agent",
          "Use the Antigravity managed agent to perform multi-step tasks that require reasoning, file operations, and tool use."
        ],
        "x-speakeasy-enum-format": "union",
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-unknown-values": "allow"
      },
      "AgentTool": {
        "description": "A tool that the agent can use.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/CodeExecution"
          },
          {
            "$ref": "#/components/schemas/Function"
          },
          {
            "$ref": "#/components/schemas/GoogleSearch"
          },
          {
            "$ref": "#/components/schemas/McpServer"
          },
          {
            "$ref": "#/components/schemas/UrlContext"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "AllowedTools": {
        "description": "The configuration for allowed tools.",
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "auto",
              "any",
              "none",
              "validated"
            ],
            "x-google-enum-descriptions": [
              "Auto tool choice.",
              "Any tool choice.",
              "No tool choice.",
              "Validated tool choice."
            ],
            "x-speakeasy-model-namespace": "interactions",
            "description": "The mode of the tool choice."
          },
          "tools": {
            "description": "The names of the allowed tools.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "Annotation": {
        "description": "Citation information for model-generated content.",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/FileCitation"
          },
          {
            "$ref": "#/components/schemas/PlaceCitation"
          },
          {
            "$ref": "#/components/schemas/SpeechAnnotation"
          },
          {
            "$ref": "#/components/schemas/UrlCitation"
          },
          {
            "$ref": "#/components/schemas/WordInfo"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "AntigravityAgentConfig": {
        "description": "Configuration for the Antigravity agent runtime.\nProvides server-side control over the agent's execution environment\nand tool configuration.",
        "type": "object",
        "properties": {
          "type": {
            "const": "antigravity"
          },
          "model": {
            "description": "The model to use for agent reasoning.",
            "type": "string"
          },
          "max_total_tokens": {
            "description": "Max total tokens for the agent run.",
            "type": "string",
            "format": "int64"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ArgumentsDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "arguments_delta"
          },
          "arguments": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "AudioContent": {
        "description": "An audio content block.",
        "type": "object",
        "properties": {
          "type": {
            "const": "audio"
          },
          "data": {
            "description": "The audio content.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "uri": {
            "description": "The URI of the audio.",
            "type": "string"
          },
          "channels": {
            "description": "The number of audio channels.",
            "type": "integer",
            "format": "int32"
          },
          "sample_rate": {
            "description": "The sample rate of the audio.",
            "type": "integer",
            "format": "int32"
          },
          "mime_type": {
            "description": "The mime type of the audio.",
            "type": "string",
            "enum": [
              "audio/wav",
              "audio/mp3",
              "audio/aiff",
              "audio/aac",
              "audio/ogg",
              "audio/flac",
              "audio/mpeg",
              "audio/m4a",
              "audio/l16",
              "audio/opus",
              "audio/alaw",
              "audio/mulaw",
              "audio/webm"
            ],
            "x-google-enum-descriptions": [
              "WAV audio format",
              "MP3 audio format",
              "AIFF audio format",
              "AAC audio format",
              "OGG audio format",
              "FLAC audio format",
              "MPEG audio format",
              "M4A audio format",
              "L16 audio format",
              "OPUS audio format",
              "ALAW audio format",
              "MULAW audio format",
              "WEBM audio format"
            ]
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "audio": {
              "summary": "Audio",
              "value": {
                "type": "audio",
                "data": "BASE64_ENCODED_AUDIO",
                "mime_type": "audio/wav"
              }
            }
          }
        ],
        "x-speakeasy-exports": [
          {
            "name": "audio_content_param",
            "group": "interactions",
            "representation": "input"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "AudioData": {
        "description": "Audio payload used for voice creation.",
        "type": "object",
        "properties": {
          "mime_type": {
            "description": "Required. The IANA MIME type of the audio data (for example, `audio/wav` or\n`audio/mpeg`).",
            "type": "string"
          },
          "data": {
            "description": "Required. The raw audio bytes.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "data",
          "mime_type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "AudioDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "audio"
          },
          "data": {
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "uri": {
            "type": "string"
          },
          "mime_type": {
            "type": "string",
            "enum": [
              "audio/wav",
              "audio/mp3",
              "audio/aiff",
              "audio/aac",
              "audio/ogg",
              "audio/flac",
              "audio/mpeg",
              "audio/m4a",
              "audio/l16",
              "audio/opus",
              "audio/alaw",
              "audio/mulaw",
              "audio/webm"
            ],
            "x-google-enum-descriptions": [
              "WAV audio format",
              "MP3 audio format",
              "AIFF audio format",
              "AAC audio format",
              "OGG audio format",
              "FLAC audio format",
              "MPEG audio format",
              "M4A audio format",
              "L16 audio format",
              "OPUS audio format",
              "ALAW audio format",
              "MULAW audio format",
              "WEBM audio format"
            ]
          },
          "rate": {
            "description": "Deprecated. Use sample_rate instead. The value is ignored.",
            "type": "integer",
            "deprecated": true,
            "format": "int32"
          },
          "sample_rate": {
            "description": "The sample rate of the audio.",
            "type": "integer",
            "format": "int32"
          },
          "channels": {
            "description": "The number of audio channels.",
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "AudioResponseFormat": {
        "description": "Configuration for audio output format.",
        "type": "object",
        "properties": {
          "type": {
            "const": "audio"
          },
          "mime_type": {
            "description": "The MIME type of the audio output.",
            "type": "string",
            "enum": [
              "audio/mp3",
              "audio/ogg_opus",
              "audio/l16",
              "audio/wav",
              "audio/alaw",
              "audio/mulaw"
            ],
            "x-google-enum-descriptions": [
              "MP3 audio format.",
              "OGG Opus audio format.",
              "Raw PCM (L16) audio format.",
              "WAV audio format.",
              "A-law audio format.",
              "Mu-law audio format."
            ]
          },
          "delivery": {
            "description": "The delivery mode for the audio output.",
            "type": "string",
            "enum": [
              "inline",
              "uri"
            ],
            "x-google-enum-descriptions": [
              "Audio data is returned inline in the response.",
              "Audio data is returned as a URI."
            ]
          },
          "sample_rate": {
            "description": "Sample rate in Hz.",
            "type": "integer",
            "format": "int32"
          },
          "bit_rate": {
            "description": "Bit rate in bits per second (bps). Only applicable for compressed formats\n(MP3, Opus).",
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "audio_response_format": {
              "summary": "Audio Output",
              "value": {
                "type": "audio",
                "sample_rate": 24000
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "CodeExecution": {
        "description": "A tool that can be used by the model to execute code.",
        "type": "object",
        "properties": {
          "type": {
            "const": "code_execution"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-codeSamples": [
          {
            "label": "code_execution",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"tools\": [{\n      \"type\": \"code_execution\"\n    }],\n    \"input\": \"Calculate the first 10 Fibonacci numbers\"\n  }'\n"
          },
          {
            "label": "code_execution",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    tools=[{\"type\": \"code_execution\"}],\n    input=\"Calculate the first 10 Fibonacci numbers\",\n)\nprint(response.output_text)\n"
          },
          {
            "label": "code_execution",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  tools: [{type: 'code_execution'}],\n  input: 'Calculate the first 10 Fibonacci numbers',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "code_execution",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.CodeExecution;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .tools(List.of(new CodeExecution()))\n        .input(InteractionsInput.of(\"Calculate the first 10 Fibonacci numbers\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "code_execution",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    tool := gaos_interactions.NewTool(gaos_interactions.CodeExecution{})\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"Calculate the first 10 Fibonacci numbers\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          }
        ]
      },
      "CodeExecutionCallArguments": {
        "description": "The arguments to pass to the code execution.",
        "type": "object",
        "properties": {
          "language": {
            "description": "Programming language of the `code`.",
            "type": "string",
            "enum": [
              "python",
              "bash"
            ],
            "x-google-enum-descriptions": [
              "Python >= 3.10, with numpy and simpy available.",
              "Bash. Only available for Gemini 3.0 model or above."
            ]
          },
          "code": {
            "description": "The code to be executed.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "CodeExecutionCallDelta": {
        "type": "object",
        "properties": {
          "arguments": {
            "$ref": "#/components/schemas/CodeExecutionCallArguments"
          },
          "type": {
            "const": "code_execution_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "arguments",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "CodeExecutionCallStep": {
        "description": "Code execution call step.",
        "type": "object",
        "properties": {
          "arguments": {
            "description": "Required. The arguments to pass to the code execution.",
            "$ref": "#/components/schemas/CodeExecutionCallStepArguments"
          },
          "id": {
            "description": "Required. A unique ID for this specific tool call.",
            "type": "string"
          },
          "type": {
            "const": "code_execution_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "arguments",
          "id",
          "type"
        ],
        "examples": [
          {
            "code_execution_call": {
              "summary": "CodeExecutionCallStep",
              "value": {
                "type": "code_execution_call",
                "arguments": {
                  "code": "print(sum(range(1, 11)))"
                },
                "id": "code_call_71021"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "CodeExecutionCallStepArguments": {
        "description": "The arguments to pass to the code execution.",
        "type": "object",
        "properties": {
          "language": {
            "description": "Programming language of the `code`.",
            "type": "string",
            "enum": [
              "python",
              "bash"
            ],
            "x-google-enum-descriptions": [
              "Python >= 3.10, with numpy and simpy available.",
              "Bash. Only available for Gemini 3.0 model or above."
            ]
          },
          "code": {
            "description": "The code to be executed.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "CodeExecutionCallArguments"
      },
      "CodeExecutionResultDelta": {
        "type": "object",
        "properties": {
          "result": {
            "type": "string"
          },
          "type": {
            "const": "code_execution_result"
          },
          "is_error": {
            "type": "boolean"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "result",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "CodeExecutionResultStep": {
        "description": "Code execution result step.",
        "type": "object",
        "properties": {
          "result": {
            "description": "Required. The output of the code execution.",
            "type": "string"
          },
          "call_id": {
            "description": "Required. ID to match the ID from the function call block.",
            "type": "string"
          },
          "type": {
            "const": "code_execution_result"
          },
          "is_error": {
            "description": "Whether the code execution resulted in an error.",
            "type": "boolean"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "call_id",
          "result",
          "type"
        ],
        "examples": [
          {
            "code_execution_result": {
              "summary": "CodeExecutionResultStep",
              "value": {
                "type": "code_execution_result",
                "call_id": "code_call_71021",
                "result": "55\n"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ComputerUse": {
        "description": "A tool that can be used by the model to interact with the computer.",
        "type": "object",
        "properties": {
          "type": {
            "const": "computer_use"
          },
          "environment": {
            "description": "The environment being operated.",
            "type": "string",
            "enum": [
              "browser",
              "mobile",
              "desktop"
            ],
            "x-google-enum-descriptions": [
              "Operates in a web browser.",
              "Operates in a mobile environment.",
              "Operates in a desktop environment."
            ]
          },
          "excluded_predefined_functions": {
            "description": "The list of predefined functions that are excluded from the model call.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "enable_prompt_injection_detection": {
            "description": "Whether enable the prompt injection detection check on computer-use\nrequest.",
            "type": "boolean"
          },
          "disabled_safety_policies": {
            "description": "Optional. Disabled safety policies for computer use.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "financial_transactions",
                "sensitive_data_modification",
                "communication_tool",
                "account_creation",
                "data_modification",
                "user_consent_management",
                "legal_terms_and_agreements"
              ],
              "x-google-enum-descriptions": [
                "Safety policy for financial transactions.",
                "Safety policy for sensitive data modification.",
                "Safety policy for communication tools (e.g. Gmail, Chat, Meet).",
                "Safety policy for account creation.",
                "Safety policy for data modification.",
                "Safety policy for user consent management.",
                "Safety policy for legal terms and agreements."
              ]
            }
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-codeSamples": [
          {
            "label": "computer_use",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-2.5-computer-use-preview-10-2025\",\n    \"tools\": [{\n      \"type\": \"computer_use\"\n    }],\n    \"input\": \"Find a flight to Tokyo\"\n  }'\n"
          },
          {
            "label": "computer_use",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-2.5-computer-use-preview-10-2025\",\n    tools=[{\"type\": \"computer_use\"}],\n    input=\"Find a flight to Tokyo\",\n)\nprint(response.output_text)\n"
          },
          {
            "label": "computer_use",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-2.5-computer-use-preview-10-2025',\n  tools: [{type: 'computer_use'}],\n  input: 'Find a flight to Tokyo',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "computer_use",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.interactions.ComputerUse;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-2.5-computer-use-preview-10-2025\")\n        .tools(List.of(new ComputerUse()))\n        .input(InteractionsInput.of(\"Find a flight to Tokyo\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "computer_use",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    tool := gaos_interactions.NewTool(gaos_interactions.ComputerUse{})\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-2.5-computer-use-preview-10-2025\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"Find a flight to Tokyo\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          }
        ]
      },
      "Content": {
        "description": "The content of the response.",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/AudioContent"
          },
          {
            "$ref": "#/components/schemas/DocumentContent"
          },
          {
            "$ref": "#/components/schemas/ImageContent"
          },
          {
            "$ref": "#/components/schemas/TextContent"
          },
          {
            "$ref": "#/components/schemas/VideoContent"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "CreateAgentInteractionParams": {
        "description": "Parameters for creating agent interactions",
        "properties": {
          "agent": {
            "description": "The name of the `Agent` used for generating the interaction.",
            "$ref": "#/components/schemas/AgentOption"
          },
          "input": {
            "$ref": "#/components/schemas/InteractionsInput"
          },
          "agent_config": {
            "description": "Configuration parameters for the agent interaction.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/AntigravityAgentConfig"
              },
              {
                "$ref": "#/components/schemas/DeepResearchAgentConfig"
              },
              {
                "$ref": "#/components/schemas/DynamicAgentConfig"
              }
            ]
          },
          "response_format": {
            "description": "Enforces that the generated response is a JSON object that complies with\nthe JSON schema specified in this field.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResponseFormat"
              },
              {
                "title": "ResponseFormatList",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ResponseFormat"
                }
              }
            ]
          },
          "environment": {
            "description": "The environment configuration for the interaction. Can be an object\nspecifying remote environment sources or a string referencing an existing\nenvironment ID.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnvironmentConfig"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "description": "Required. Output only. A unique identifier for the interaction completion.",
            "type": "string",
            "readOnly": true
          },
          "status": {
            "description": "Required. Output only. The status of the interaction.",
            "type": "string",
            "enum": [
              "in_progress",
              "requires_action",
              "completed",
              "failed",
              "cancelled",
              "incomplete",
              "budget_exceeded"
            ],
            "readOnly": true,
            "x-google-enum-deprecated": [
              false,
              false,
              false,
              false,
              false,
              false,
              true
            ],
            "x-google-enum-descriptions": [
              "The interaction is in progress.",
              "The interaction requires action/input from the user.",
              "The interaction is completed.",
              "The interaction failed.",
              "The interaction was cancelled.",
              "The interaction is completed, but contains incomplete results (e.g.\nhitting max_tokens).",
              "Deprecated: Token and execution budget exhaustion returns INCOMPLETE\n(11)."
            ]
          },
          "created": {
            "description": "Required. Output only. The time at which the response was created in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "updated": {
            "description": "Required. Output only. The time at which the response was last updated in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "system_instruction": {
            "description": "System instruction for the interaction.",
            "type": "string"
          },
          "tools": {
            "description": "A list of tool declarations the model may call during interaction.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tool"
            }
          },
          "response_modalities": {
            "description": "The requested modalities of the response (TEXT, IMAGE, AUDIO).",
            "type": "array",
            "deprecated": true,
            "items": {
              "$ref": "#/components/schemas/ResponseModality"
            }
          },
          "response_mime_type": {
            "description": "The mime type of the response. This is required if response_format is set.",
            "type": "string",
            "deprecated": true
          },
          "previous_interaction_id": {
            "description": "The ID of the previous interaction, if any.",
            "type": "string"
          },
          "environment_id": {
            "description": "Output only. The environment ID for the interaction. Only populated if environment\nconfig is set in the request.",
            "type": "string",
            "readOnly": true
          },
          "service_tier": {
            "description": "The service tier for the interaction.",
            "$ref": "#/components/schemas/ServiceTier"
          },
          "webhook_config": {
            "description": "Optional. Webhook configuration for receiving notifications when the\ninteraction completes.",
            "$ref": "#/components/schemas/WebhookConfig"
          },
          "safety_settings": {
            "description": "Safety settings for the interaction.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafetySetting"
            }
          },
          "labels": {
            "description": "The labels with user-defined metadata for the request.\n\nLabel keys and values can be no longer than 63 characters\n(Unicode codepoints) and can only contain lowercase letters, numeric\ncharacters, underscores, and dashes. International characters are allowed.\nLabel values are optional. Label keys must start with a letter.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "stream": {
            "description": "Input only. Whether the interaction will be streamed.",
            "type": "boolean",
            "writeOnly": true
          },
          "store": {
            "description": "Input only. Whether to store the response and request for later retrieval.",
            "type": "boolean",
            "writeOnly": true
          },
          "background": {
            "description": "Input only. Whether to run the model interaction in the background.",
            "type": "boolean",
            "writeOnly": true
          }
        },
        "required": [
          "agent",
          "input"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "CreateAgentInteraction"
      },
      "CreateEnvironmentRequest": {
        "description": "Request for `CreateEnvironment`.",
        "type": "object",
        "properties": {
          "network": {
            "description": "Network configuration for the environment.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnvironmentNetworkEgressAllowlist"
              },
              {
                "type": "string",
                "enum": [
                  "disabled"
                ],
                "x-google-enum-descriptions": [
                  "All network egress is blocked."
                ]
              }
            ]
          },
          "sources": {
            "description": "Sources to be mounted into the environment.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Source"
            }
          },
          "from_environment": {
            "description": "Optional. The source environment to copy/fork from.\nFormat: `environments/{environment_id}` or `{environment_id}`.\nWhen specified, `sources` and `env` must be empty.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "CreateModelInteractionParams": {
        "description": "Parameters for creating model interactions",
        "properties": {
          "model": {
            "description": "The name of the `Model` used for generating the interaction.",
            "$ref": "#/components/schemas/ModelOption"
          },
          "input": {
            "$ref": "#/components/schemas/InteractionsInput"
          },
          "generation_config": {
            "description": "Input only. Configuration parameters for the model interaction.",
            "$ref": "#/components/schemas/GenerationConfig",
            "writeOnly": true
          },
          "response_format": {
            "description": "Enforces that the generated response is a JSON object that complies with\nthe JSON schema specified in this field.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResponseFormat"
              },
              {
                "title": "ResponseFormatList",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ResponseFormat"
                }
              }
            ]
          },
          "environment": {
            "description": "The environment configuration for the interaction. Can be an object\nspecifying remote environment sources or a string referencing an existing\nenvironment ID.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnvironmentConfig"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "description": "Required. Output only. A unique identifier for the interaction completion.",
            "type": "string",
            "readOnly": true
          },
          "status": {
            "description": "Required. Output only. The status of the interaction.",
            "type": "string",
            "enum": [
              "in_progress",
              "requires_action",
              "completed",
              "failed",
              "cancelled",
              "incomplete",
              "budget_exceeded"
            ],
            "readOnly": true,
            "x-google-enum-deprecated": [
              false,
              false,
              false,
              false,
              false,
              false,
              true
            ],
            "x-google-enum-descriptions": [
              "The interaction is in progress.",
              "The interaction requires action/input from the user.",
              "The interaction is completed.",
              "The interaction failed.",
              "The interaction was cancelled.",
              "The interaction is completed, but contains incomplete results (e.g.\nhitting max_tokens).",
              "Deprecated: Token and execution budget exhaustion returns INCOMPLETE\n(11)."
            ]
          },
          "created": {
            "description": "Required. Output only. The time at which the response was created in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "updated": {
            "description": "Required. Output only. The time at which the response was last updated in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "system_instruction": {
            "description": "System instruction for the interaction.",
            "type": "string"
          },
          "tools": {
            "description": "A list of tool declarations the model may call during interaction.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tool"
            }
          },
          "response_modalities": {
            "description": "The requested modalities of the response (TEXT, IMAGE, AUDIO).",
            "type": "array",
            "deprecated": true,
            "items": {
              "$ref": "#/components/schemas/ResponseModality"
            }
          },
          "response_mime_type": {
            "description": "The mime type of the response. This is required if response_format is set.",
            "type": "string",
            "deprecated": true
          },
          "previous_interaction_id": {
            "description": "The ID of the previous interaction, if any.",
            "type": "string"
          },
          "environment_id": {
            "description": "Output only. The environment ID for the interaction. Only populated if environment\nconfig is set in the request.",
            "type": "string",
            "readOnly": true
          },
          "service_tier": {
            "description": "The service tier for the interaction.",
            "$ref": "#/components/schemas/ServiceTier"
          },
          "webhook_config": {
            "description": "Optional. Webhook configuration for receiving notifications when the\ninteraction completes.",
            "$ref": "#/components/schemas/WebhookConfig"
          },
          "safety_settings": {
            "description": "Safety settings for the interaction.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafetySetting"
            }
          },
          "labels": {
            "description": "The labels with user-defined metadata for the request.\n\nLabel keys and values can be no longer than 63 characters\n(Unicode codepoints) and can only contain lowercase letters, numeric\ncharacters, underscores, and dashes. International characters are allowed.\nLabel values are optional. Label keys must start with a letter.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "stream": {
            "description": "Input only. Whether the interaction will be streamed.",
            "type": "boolean",
            "writeOnly": true
          },
          "store": {
            "description": "Input only. Whether to store the response and request for later retrieval.",
            "type": "boolean",
            "writeOnly": true
          },
          "background": {
            "description": "Input only. Whether to run the model interaction in the background.",
            "type": "boolean",
            "writeOnly": true
          }
        },
        "required": [
          "input",
          "model"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "CreateModelInteraction"
      },
      "CreateVoiceRequest": {
        "description": "Request message for `VoicesService.CreateVoice`.",
        "type": "object",
        "properties": {
          "voice": {
            "description": "Required. The voice to create.\n`voice.model` is optional; if omitted, the service selects the default\nvoice creation model. Output-only fields on `Voice` (`id`, `key`,\n`expire_time`, `usage`) are ignored if set.",
            "$ref": "#/components/schemas/Voice"
          },
          "store": {
            "description": "Optional. Whether the created voice is persisted and managed by Google.\n\n* When `true`, Google stores the voice and returns `Voice.id` (for example,\n  `voice_abc123def456`), which can be managed via `GetVoice`, `ListVoices`,\n  and `DeleteVoice` and referenced by ID in synthesis requests. Stored\n  voices expire after 1 year of inactivity; using a stored voice in speech\n  synthesis or as a `base_voice` in `CreateVoice` extends its\n  `expire_time`. Projects are subject to a maximum active stored voice\n  quota; exceeding the quota returns `RESOURCE_EXHAUSTED`.\n* When `false` (default), the voice is not stored by Google and `Voice.key`\n  (for example, `voicekey_...`) is returned for client-side storage and\n  synthesis. Optional discovery metadata fields on `voice` are not\n  persisted or returned when `store` is `false`.\n* Required to be `true` when `voice.type` is `\"prompted\"`\n  (otherwise fails with `INVALID_ARGUMENT`).",
            "type": "boolean"
          }
        },
        "required": [
          "voice"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "CreateWebhookRequest": {
        "description": "Request message for WebhookService.CreateWebhook.",
        "type": "object",
        "properties": {
          "webhook": {
            "description": "Required. The webhook to create.",
            "$ref": "#/components/schemas/Webhook"
          }
        },
        "required": [
          "webhook"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Credential": {
        "description": "Server-managed credential resource stored in Secret Manager.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. Output only. Identifier. Unique identifier for the credential.",
            "type": "string",
            "readOnly": true,
            "x-google-identifier": true
          },
          "type": {
            "description": "Required. Output only. The type of credential.",
            "type": "string",
            "enum": [
              "bearer_token",
              "oauth2",
              "environment_variable"
            ],
            "readOnly": true,
            "x-google-enum-descriptions": [
              "Static token injected as header. No refresh logic.",
              "Auto-refresh expired access tokens using stored refresh token.",
              "Environment variable injected into sandbox container."
            ]
          },
          "status": {
            "description": "Output only. Current status of the credential.",
            "type": "string",
            "enum": [
              "active",
              "revoked"
            ],
            "readOnly": true,
            "x-google-enum-descriptions": [
              "The credential is active and valid for use.",
              "The credential has been revoked and is no longer valid."
            ]
          },
          "create_time": {
            "description": "Output only. The timestamp when the credential was created.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "update_time": {
            "description": "Output only. The timestamp when the credential was last updated.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "CredentialCreateParams": {
        "description": "Represents the fields of a Credential provided on creation.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/EnvironmentVariableConfig"
          },
          {
            "$ref": "#/components/schemas/HttpBearerConfig"
          },
          {
            "$ref": "#/components/schemas/OAuth2Config"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "CredentialUpdateParams": {
        "description": "Represents the fields of a Credential that can be updated.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/EnvironmentVariableUpdateConfig"
          },
          {
            "$ref": "#/components/schemas/HttpBearerUpdateConfig"
          },
          {
            "$ref": "#/components/schemas/OAuth2UpdateConfig"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "DeepResearchAgentConfig": {
        "description": "Configuration for the Deep Research agent.",
        "type": "object",
        "properties": {
          "type": {
            "const": "deep-research"
          },
          "thinking_summaries": {
            "description": "Whether to include thought summaries in the response.",
            "$ref": "#/components/schemas/ThinkingSummaries"
          },
          "visualization": {
            "description": "Whether to include visualizations in the response.",
            "type": "string",
            "enum": [
              "off",
              "auto"
            ],
            "x-google-enum-descriptions": [
              "Do not include visualizations.",
              "Automatically include visualizations."
            ]
          },
          "collaborative_planning": {
            "description": "Enables human-in-the-loop planning for the Deep Research agent. If set to\ntrue, the Deep Research agent will provide a research plan in its response.\nThe agent will then proceed only if the user confirms the plan in the next\nturn.",
            "type": "boolean"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "DeleteVoiceResponse": {
        "description": "Response message for `VoicesService.DeleteVoice`.",
        "type": "object",
        "x-speakeasy-model-namespace": "interactions"
      },
      "DocumentContent": {
        "description": "A document content block.",
        "type": "object",
        "properties": {
          "type": {
            "const": "document"
          },
          "data": {
            "description": "The document content.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "uri": {
            "description": "The URI of the document.",
            "type": "string"
          },
          "mime_type": {
            "description": "The mime type of the document.",
            "type": "string",
            "enum": [
              "application/pdf",
              "text/csv"
            ],
            "x-google-enum-descriptions": [
              "PDF document format",
              "CSV document format"
            ]
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "document": {
              "summary": "Document",
              "value": {
                "type": "document",
                "data": "BASE64_ENCODED_DOCUMENT",
                "mime_type": "application/pdf"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "DocumentDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "document"
          },
          "data": {
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "uri": {
            "type": "string"
          },
          "mime_type": {
            "type": "string",
            "enum": [
              "application/pdf",
              "text/csv"
            ],
            "x-google-enum-descriptions": [
              "PDF document format",
              "CSV document format"
            ]
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "DynamicAgentConfig": {
        "description": "Configuration for dynamic agents.",
        "type": "object",
        "properties": {
          "type": {
            "const": "dynamic"
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": {
          "description": "For agents that are not supported statically in the API definition."
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "EgressRule": {
        "description": "A single domain allowlist rule with optional header injection.",
        "type": "object",
        "properties": {
          "domain": {
            "description": "Domain to allow outbound requests to. Supports wildcards (e.g.\n'*.googleapis.com'). Use '*' to allow all domains.",
            "type": "string"
          },
          "transform": {
            "description": "Headers to inject into requests matching this rule.\nKey: header name (e.g., \"Authorization\").\nValue: header value (e.g., \"Bearer your-token\").",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "credential": {
            "description": "Optional. Reference to a server-managed Credential resource by ID.",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Empty": {
        "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }",
        "type": "object",
        "x-speakeasy-model-namespace": "interactions"
      },
      "EnvVar": {
        "description": "An environment variable to set in the execution environment.",
        "type": "object",
        "properties": {
          "value": {
            "description": "Direct string value for plain environment variables.",
            "type": "string"
          },
          "credential": {
            "description": "Optional reference to a server-managed Credential resource by ID.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "Environment": {
        "description": "An execution environment for an agent.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. Output only. The ID of the environment.",
            "type": "string",
            "readOnly": true
          },
          "network": {
            "description": "Network configuration for the environment.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnvironmentNetworkEgressAllowlist"
              },
              {
                "type": "string",
                "enum": [
                  "disabled"
                ],
                "x-google-enum-descriptions": [
                  "All network egress is blocked."
                ]
              }
            ]
          },
          "sources": {
            "description": "Sources to be mounted into the environment.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Source"
            }
          },
          "created": {
            "description": "Output only. The time at which the environment was created in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "updated": {
            "description": "Output only. The time at which the environment was last updated in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "last_accessed": {
            "description": "Output only. The time at which the environment was last accessed in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "status": {
            "description": "Output only. The status of the environment container.",
            "type": "string",
            "enum": [
              "active",
              "expired"
            ],
            "readOnly": true,
            "x-google-enum-descriptions": [
              "",
              ""
            ]
          },
          "file_count": {
            "description": "Output only. The number of files in the environment, output only.",
            "type": "string",
            "format": "int64",
            "readOnly": true
          },
          "size_bytes": {
            "description": "Output only. The total size of the environment files in bytes, output only.",
            "type": "string",
            "format": "int64",
            "readOnly": true
          }
        },
        "required": [
          "id"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "EnvironmentConfig": {
        "description": "Configuration for a custom environment.",
        "type": "object",
        "properties": {
          "type": {
            "const": "remote"
          },
          "network": {
            "description": "Network configuration for the environment.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnvironmentNetworkEgressAllowlist"
              },
              {
                "type": "string",
                "enum": [
                  "disabled"
                ],
                "x-google-enum-descriptions": [
                  "All network egress is blocked."
                ]
              }
            ]
          },
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Source"
            }
          },
          "environment_id": {
            "description": "Optional. The environment ID for the interaction. If specified, the request will\nupdate the existing environment instead of creating a new one.",
            "type": "string"
          },
          "env": {
            "description": "Environment variables to set in the sandbox environment.",
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/EnvVar"
                }
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "inline_sources": {
              "summary": "Inline Sources",
              "value": {
                "type": "remote",
                "sources": [
                  {
                    "type": "inline",
                    "content": "You are a data analyst. Always include visualizations and export results as PDF.",
                    "target": ".agents/AGENTS.md"
                  },
                  {
                    "type": "inline",
                    "content": "---\nname: slide-maker\ndescription: Create HTML slide decks\n---\n# Slide Maker\n\nWhen asked to create a presentation:\n1. Analyze the input data\n2. Create an HTML slide deck with reveal.js\n3. Save to /workspace/output/slides.html",
                    "target": ".agents/skills/slide-maker/SKILL.md"
                  }
                ]
              }
            }
          },
          {
            "external_sources": {
              "summary": "External Sources",
              "value": {
                "type": "remote",
                "sources": [
                  {
                    "type": "repository",
                    "source": "https://github.com/my-org/my-skills.git",
                    "target": ".agents/skills"
                  },
                  {
                    "type": "gcs",
                    "source": "gs://my-bucket/my-folder",
                    "target": "/workspace/data"
                  }
                ]
              }
            }
          },
          {
            "network_allowlist": {
              "summary": "Network Allowlist",
              "value": {
                "type": "remote",
                "network": {
                  "allowlist": [
                    {
                      "domain": "pypi.org"
                    },
                    {
                      "domain": "*.github.com"
                    }
                  ]
                }
              }
            }
          },
          {
            "proxy_credentials": {
              "summary": "Proxy Credentials",
              "value": {
                "type": "remote",
                "network": {
                  "allowlist": [
                    {
                      "domain": "api.github.com",
                      "transform": {
                        "Authorization": "Bearer YOUR_GITHUB_TOKEN"
                      }
                    }
                  ]
                }
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "EnvironmentFile": {
        "description": "Metadata for a file or directory within an environment.",
        "type": "object",
        "properties": {
          "name": {
            "description": "Output only. The name of the file or directory (e.g., \"main.py\" or \"src\").",
            "type": "string",
            "readOnly": true
          },
          "path": {
            "description": "Output only. The full relative path within the environment\n(e.g., \"workspace/src/main.py\").",
            "type": "string",
            "readOnly": true
          },
          "type": {
            "description": "Output only. The type of the entry.",
            "type": "string",
            "enum": [
              "file",
              "directory"
            ],
            "readOnly": true,
            "x-google-enum-descriptions": [
              "A regular file.",
              "A directory."
            ]
          },
          "size_bytes": {
            "description": "Output only. The size of the file/directory in bytes.\nNOLINT",
            "type": "string",
            "format": "int64",
            "readOnly": true
          },
          "mime_type": {
            "description": "Output only. The MIME type of the file (e.g., \"text/python\", \"image/png\").\nEmpty for directories.\nNOLINT",
            "type": "string",
            "readOnly": true
          },
          "created": {
            "description": "Output only. The creation time of the file/directory.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "modified": {
            "description": "Output only. The modification time of the file/directory.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "EnvironmentNetworkEgressAllowlist": {
        "description": "Network egress configuration for the environment.",
        "type": "object",
        "properties": {
          "allowlist": {
            "description": "List of allowed domains and their configurations. Set to `\"disabled\"`\nto block all network egress.",
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EgressRule"
                }
              },
              {
                "type": "string",
                "enum": [
                  "disabled"
                ],
                "x-google-enum-descriptions": [
                  "All network egress is blocked."
                ]
              }
            ]
          }
        },
        "examples": [
          {
            "network_allowlist": {
              "summary": "Network Allowlist",
              "value": {
                "allowlist": [
                  {
                    "domain": "github.com",
                    "transform": [
                      {
                        "Authorization": "Bearer your-token"
                      }
                    ]
                  },
                  {
                    "domain": "*.googleapis.com"
                  }
                ]
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "EnvironmentVariableConfig": {
        "description": "Configuration for environment variable credentials.",
        "type": "object",
        "properties": {
          "value": {
            "description": "Required. Input only. Secret value of the environment variable. Write-only; never\nreturned in responses.",
            "type": "string",
            "writeOnly": true
          },
          "injection_location": {
            "description": "Required. Locations where the environment variable can be injected in\noutgoing HTTP requests. Must contain at least one location.\nAccepts either a single location (e.g. \"header\") or an array of locations.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/InjectionLocation"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/InjectionLocation"
                }
              }
            ]
          },
          "id": {
            "type": "string"
          },
          "type": {
            "const": "environment_variable"
          },
          "trusted_domains": {
            "description": "Optional. List of domains allowed to receive this environment variable\nvalue in HTTP requests.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "injection_location",
          "type",
          "value"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "EnvironmentVariableUpdateConfig": {
        "description": "Configuration for updating environment variable credentials.",
        "type": "object",
        "properties": {
          "type": {
            "const": "environment_variable"
          },
          "value": {
            "description": "Optional. Input only. Secret value of the environment variable. Write-only; never\nreturned in responses.",
            "type": "string",
            "writeOnly": true
          },
          "trusted_domains": {
            "description": "Optional. List of domains allowed to receive this environment variable\nvalue in HTTP requests.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "injection_location": {
            "description": "Optional. Locations where the environment variable can be injected in\noutgoing HTTP requests.\nAccepts either a single location (e.g. \"header\") or an array of locations.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/InjectionLocation"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/InjectionLocation"
                }
              }
            ]
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Error": {
        "description": "Error message from an interaction.",
        "type": "object",
        "properties": {
          "code": {
            "description": "A URI that identifies the error type.",
            "type": "string"
          },
          "message": {
            "description": "A human-readable error message.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ErrorEvent": {
        "type": "object",
        "properties": {
          "event_type": {
            "const": "error"
          },
          "error": {
            "$ref": "#/components/schemas/Error"
          },
          "event_id": {
            "description": "The event_id token to be used to resume the interaction stream, from\nthis event.",
            "type": "string"
          }
        },
        "required": [
          "event_type"
        ],
        "examples": [
          {
            "error_event": {
              "summary": "Error Event",
              "value": {
                "error": {
                  "code": "not_found",
                  "message": "Failed to get completed interaction: Result not found."
                },
                "event_type": "error"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "FileCitation": {
        "description": "A file citation annotation.",
        "type": "object",
        "properties": {
          "type": {
            "const": "file_citation"
          },
          "document_uri": {
            "description": "The URI of the file.",
            "type": "string"
          },
          "file_name": {
            "description": "The name of the file.",
            "type": "string"
          },
          "source": {
            "description": "Source attributed for a portion of the text.",
            "type": "string"
          },
          "custom_metadata": {
            "description": "User provided metadata about the retrieved context.",
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object."
            }
          },
          "page_number": {
            "description": "Page number of the cited document, if applicable.",
            "type": "integer",
            "format": "int32"
          },
          "media_id": {
            "description": "Media ID in-case of image citations, if applicable.",
            "type": "string"
          },
          "start_index": {
            "description": "Start of segment of the response that is attributed to this source.\n\nIndex indicates the start of the segment, measured in bytes.",
            "type": "integer",
            "format": "int32"
          },
          "end_index": {
            "description": "End of the attributed segment, exclusive.",
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "FileSearch": {
        "description": "A tool that can be used by the model to search files.",
        "type": "object",
        "properties": {
          "type": {
            "const": "file_search"
          },
          "file_search_store_names": {
            "description": "The file search store names to search.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "top_k": {
            "description": "The number of semantic retrieval chunks to retrieve.",
            "type": "integer",
            "format": "int32"
          },
          "metadata_filter": {
            "description": "Metadata filter to apply to the semantic retrieval documents and chunks.",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-codeSamples": [
          {
            "label": "file_search",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"tools\": [{\n      \"type\": \"file_search\",\n      \"file_search_store_names\": [\"fileSearchStores/m64d1sevsr4y-xfyawui3fxqg\"]\n    }],\n    \"input\": \"Who is the author of the book?\"\n  }'\n"
          },
          {
            "label": "file_search",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\n\n# Create a file search store so we have a valid one to use.\nstore = client.file_search_stores.create()\n\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    tools=[\n        {\"type\": \"file_search\", \"file_search_store_names\": [store.name]}\n    ],\n    input=\"What documents are available?\",\n)\nprint(response.output_text)\n"
          },
          {
            "label": "file_search",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\n\n// Create a file search store so we have a valid one to use.\nconst store = await ai.fileSearchStores.create({});\nif (!store.name) {\n  throw new Error('Store creation failed: Name is undefined');\n}\n\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  tools: [\n    {\n      type: 'file_search',\n      file_search_store_names: [store.name],\n    },\n  ],\n  input: 'What documents are available?',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "file_search",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.types.CreateFileSearchStoreConfig;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.FileSearch;\nimport com.google.genai.types.FileSearchStore;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\n\n// Create a file search store so we have a valid one to use.\nFileSearchStore store =\n    client.fileSearchStores.create(CreateFileSearchStoreConfig.builder().build());\nString storeName = store.name().orElseThrow();\n\nFileSearch tool = FileSearch.builder().fileSearchStoreNames(List.of(storeName)).build();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .tools(List.of(tool))\n        .input(InteractionsInput.of(\"What documents are available?\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "file_search",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n\n    tool := gaos_interactions.NewTool(gaos_interactions.FileSearch{\n        FileSearchStoreNames: []string{store.Name},\n    })\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"What documents are available?\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          }
        ]
      },
      "FileSearchCallDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "file_search_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "FileSearchCallStep": {
        "description": "File Search call step.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. A unique ID for this specific tool call.",
            "type": "string"
          },
          "type": {
            "const": "file_search_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "examples": [
          {
            "file_search_call": {
              "summary": "FileSearchCallStep",
              "value": {
                "type": "file_search_call",
                "id": "file_call_88192"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "FileSearchResult": {
        "description": "The result of the File Search.",
        "type": "object",
        "x-speakeasy-model-namespace": "interactions"
      },
      "FileSearchResultDelta": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FileSearchResult"
            }
          },
          "type": {
            "const": "file_search_result"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "result",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "FileSearchResultStep": {
        "description": "File Search result step.",
        "type": "object",
        "properties": {
          "call_id": {
            "description": "Required. ID to match the ID from the function call block.",
            "type": "string"
          },
          "type": {
            "const": "file_search_result"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "call_id",
          "type"
        ],
        "examples": [
          {
            "file_search_result": {
              "summary": "FileSearchResultStep",
              "value": {
                "type": "file_search_result",
                "call_id": "file_call_88192"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Function": {
        "description": "A tool that can be used by the model.",
        "type": "object",
        "properties": {
          "type": {
            "const": "function"
          },
          "name": {
            "description": "The name of the function.",
            "type": "string"
          },
          "description": {
            "description": "A description of the function.",
            "type": "string"
          },
          "parameters": {
            "description": "The JSON Schema for the function's parameters.\n\nSupports a subset of JSON Schema. `minLength`, `maxLength`,\n`minProperties`, `maxProperties`, `uniqueItems`, `contains`,\n`minContains`, and `maxContains` are ignored and not enforced."
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-codeSamples": [
          {
            "label": "function_calling",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"tools\": [{\n      \"type\": \"function\",\n      \"name\": \"get_weather\",\n      \"description\": \"Get the current weather in a given location\",\n      \"parameters\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"location\": {\n            \"type\": \"string\",\n            \"description\": \"The city and state, e.g. San Francisco, CA\"\n          }\n        },\n        \"required\": [\"location\"]\n      }\n    }],\n    \"input\": \"What is the weather like in Boston, MA?\"\n  }'\n"
          },
          {
            "label": "function_calling",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    tools=[{\n        \"type\": \"function\",\n        \"name\": \"get_weather\",\n        \"description\": \"Get the current weather in a given location\",\n        \"parameters\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"location\": {\n                    \"type\": \"string\",\n                    \"description\": (\n                        \"The city and state, e.g. San Francisco, CA\"\n                    ),\n                }\n            },\n            \"required\": [\"location\"],\n        },\n    }],\n    input=\"What is the weather like in Boston?\",\n)\nprint(response.steps[-1])\n"
          },
          {
            "label": "function_calling",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  tools: [\n    {\n      type: 'function',\n      name: 'get_weather',\n      description: 'Get the current weather in a given location',\n      parameters: {\n        type: 'object',\n        properties: {\n          location: {\n            type: 'string',\n            description: 'The city and state, e.g. San Francisco, CA',\n          },\n        },\n        required: ['location'],\n      },\n    },\n  ],\n  input: 'What is the weather like in Boston?',\n});\nconsole.log(interaction.steps.at(-1));\n"
          },
          {
            "label": "function_calling",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Function;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.Step;\n\nClient client = new Client();\nMap<String, Object> parameters =\n    Map.of(\n        \"type\", \"object\",\n        \"properties\",\n            Map.of(\n                \"location\",\n                Map.of(\n                    \"type\", \"string\",\n                    \"description\", \"The city and state, e.g. San Francisco, CA\")),\n        \"required\", List.of(\"location\"));\nFunction functionTool =\n    Function.builder()\n        .name(\"get_weather\")\n        .description(\"Get the current weather in a given location\")\n        .parameters(parameters)\n        .build();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .tools(List.of(functionTool))\n        .input(InteractionsInput.of(\"What is the weather like in Boston?\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nList<Step> steps = interaction.steps().orElse(List.of());\nif (!steps.isEmpty()) {\n  System.out.println(steps.get(steps.size() - 1));\n}\n"
          },
          {
            "label": "function_calling",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    function := gaos_interactions.Function{\n        Name:        genai.Ptr(\"get_weather\"),\n        Description: genai.Ptr(\"Get the current weather in a given location\"),\n        Parameters: map[string]any{\n            \"type\": \"object\",\n            \"properties\": map[string]any{\n                \"location\": map[string]any{\n                    \"type\":        \"string\",\n                    \"description\": \"The city and state, e.g. San Francisco, CA\",\n                },\n            },\n            \"required\": []string{\"location\"},\n        },\n    }\n\n    tool := gaos_interactions.NewTool(function)\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"What is the weather like in Boston, MA?\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil {\n        for _, step := range res.Interaction.Steps {\n            if step.FunctionCallStep != nil {\n                fmt.Println(\"Function Call:\", step.FunctionCallStep.Name)\n                fmt.Println(\"Arguments:\", step.FunctionCallStep.Arguments)\n            }\n        }\n    }\n}\n"
          }
        ]
      },
      "FunctionCallStep": {
        "description": "A function tool call step.",
        "type": "object",
        "properties": {
          "name": {
            "description": "Required. The name of the tool to call.",
            "type": "string"
          },
          "arguments": {
            "description": "Required. The arguments to pass to the function.",
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object."
            }
          },
          "id": {
            "description": "Required. A unique ID for this specific tool call.",
            "type": "string"
          },
          "type": {
            "const": "function_call"
          }
        },
        "required": [
          "arguments",
          "id",
          "name",
          "type"
        ],
        "examples": [
          {
            "function_call": {
              "summary": "FunctionCallStep",
              "value": {
                "name": "get_weather",
                "type": "function_call",
                "arguments": {
                  "location": "Boston, MA"
                },
                "id": "call_98231"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "FunctionResultDelta": {
        "type": "object",
        "properties": {
          "result": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ImageContent"
                    },
                    {
                      "$ref": "#/components/schemas/TextContent"
                    }
                  ]
                }
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ]
          },
          "type": {
            "const": "function_result"
          },
          "name": {
            "type": "string"
          },
          "is_error": {
            "type": "boolean"
          }
        },
        "required": [
          "result",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "FunctionResultStep": {
        "description": "Result of a function tool call.",
        "type": "object",
        "properties": {
          "result": {
            "description": "Required. The result of the tool call.",
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ImageContent"
                    },
                    {
                      "$ref": "#/components/schemas/TextContent"
                    }
                  ]
                }
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ]
          },
          "call_id": {
            "description": "Required. ID to match the ID from the function call block.",
            "type": "string"
          },
          "type": {
            "const": "function_result"
          },
          "name": {
            "description": "The name of the tool that was called.",
            "type": "string"
          },
          "is_error": {
            "description": "Whether the tool call resulted in an error.",
            "type": "boolean"
          }
        },
        "required": [
          "call_id",
          "result",
          "type"
        ],
        "examples": [
          {
            "function_result": {
              "summary": "FunctionResultStep",
              "value": {
                "name": "get_weather",
                "type": "function_result",
                "call_id": "call_98231",
                "result": [
                  {
                    "type": "text",
                    "text": "{\"weather\":\"sunny\"}"
                  }
                ]
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GenerationConfig": {
        "description": "Configuration parameters for model interactions.",
        "type": "object",
        "properties": {
          "tool_choice": {
            "description": "The tool choice configuration.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ToolChoiceConfig"
              },
              {
                "type": "string",
                "enum": [
                  "auto",
                  "any",
                  "none",
                  "validated"
                ],
                "x-google-enum-descriptions": [
                  "Auto tool choice.",
                  "Any tool choice.",
                  "No tool choice.",
                  "Validated tool choice."
                ],
                "x-speakeasy-model-namespace": "interactions"
              }
            ]
          },
          "temperature": {
            "description": "Controls the randomness of the output.",
            "type": "number",
            "deprecated": true,
            "format": "float"
          },
          "top_p": {
            "description": "The maximum cumulative probability of tokens to consider when sampling.",
            "type": "number",
            "deprecated": true,
            "format": "float"
          },
          "seed": {
            "description": "Seed used in decoding for reproducibility.",
            "type": "integer",
            "format": "int32"
          },
          "stop_sequences": {
            "description": "A list of character sequences that will stop output interaction.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "thinking_level": {
            "description": "The level of thought tokens that the model should generate.",
            "$ref": "#/components/schemas/ThinkingLevel"
          },
          "thinking_summaries": {
            "description": "Whether to include thought summaries in the response.",
            "$ref": "#/components/schemas/ThinkingSummaries"
          },
          "max_output_tokens": {
            "description": "The maximum number of tokens to include in the response.",
            "type": "integer",
            "format": "int32"
          },
          "image_config": {
            "description": "Configuration for image interaction.",
            "$ref": "#/components/schemas/ImageConfig",
            "deprecated": true
          },
          "video_config": {
            "description": "Configuration for video generation.",
            "$ref": "#/components/schemas/VideoConfig"
          },
          "transcription_config": {
            "description": "Optional. Configuration for speech recognition (transcription). If present, ASR is\nenabled.",
            "$ref": "#/components/schemas/TranscriptionConfig"
          },
          "structured_speech_config": {
            "description": "Speech and multi-speaker configuration.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/SpeakerConfig"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SpeechConfig"
                }
              }
            ]
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "GetEnvironmentFilesResponse": {
        "description": "Response for `GetEnvironmentFiles`.",
        "type": "object",
        "properties": {
          "files": {
            "description": "If the requested path is a directory, this contains its contents.\nIf the requested path is a file, this contains a single entry with the\nfile's metadata.\nIf alt=media was specified, this is empty (content is served via `blob`).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnvironmentFile"
            }
          },
          "next_page_token": {
            "description": "Pagination token for directory listing.\nNOLINT",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleMaps": {
        "description": "A tool that can be used by the model to call Google Maps.",
        "type": "object",
        "properties": {
          "type": {
            "const": "google_maps"
          },
          "enable_widget": {
            "description": "Whether to return a widget context token in the tool call result of the\nresponse.",
            "type": "boolean"
          },
          "latitude": {
            "description": "The latitude of the user's location.",
            "type": "number",
            "format": "double"
          },
          "longitude": {
            "description": "The longitude of the user's location.",
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-codeSamples": [
          {
            "label": "google_maps",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"tools\": [{\n      \"type\": \"google_maps\",\n      \"latitude\": 37.7749,\n      \"longitude\": -122.4194\n    }],\n    \"input\": \"What is the best food near me?\"\n  }'\n"
          },
          {
            "label": "google_maps",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    tools=[\n        {\"type\": \"google_maps\", \"latitude\": 37.7749, \"longitude\": -122.4194}\n    ],\n    input=\"What is the best food near me?\",\n)\nprint(response.output_text)\n"
          },
          {
            "label": "google_maps",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  tools: [\n    {\n      type: 'google_maps',\n      latitude: 37.7749,\n      longitude: -122.4194,\n    },\n  ],\n  input: 'What is the best food near me?',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "google_maps",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.GoogleMaps;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\nGoogleMaps tool = GoogleMaps.builder().latitude(37.7749).longitude(-122.4194).build();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .tools(List.of(tool))\n        .input(InteractionsInput.of(\"What is the best food near me?\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "google_maps",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    tool := gaos_interactions.NewTool(gaos_interactions.GoogleMaps{\n        Latitude:  genai.Ptr(37.7749),\n        Longitude: genai.Ptr(-122.4194),\n    })\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"What is the best food near me?\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          }
        ]
      },
      "GoogleMapsCallArguments": {
        "description": "The arguments to pass to the Google Maps tool.",
        "type": "object",
        "properties": {
          "queries": {
            "description": "The queries to be executed.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleMapsCallDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "google_maps_call"
          },
          "arguments": {
            "description": "The arguments to pass to the Google Maps tool.",
            "$ref": "#/components/schemas/GoogleMapsCallArguments"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleMapsCallStep": {
        "description": "Google Maps call step.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. A unique ID for this specific tool call.",
            "type": "string"
          },
          "type": {
            "const": "google_maps_call"
          },
          "arguments": {
            "description": "The arguments to pass to the Google Maps tool.",
            "$ref": "#/components/schemas/GoogleMapsCallStepArguments"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "examples": [
          {
            "google_maps_call": {
              "summary": "GoogleMapsCallStep",
              "value": {
                "type": "google_maps_call",
                "arguments": {
                  "latitude": 37.7749,
                  "longitude": -122.4194
                },
                "id": "maps_call_39201"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleMapsCallStepArguments": {
        "description": "The arguments to pass to the Google Maps tool.",
        "type": "object",
        "properties": {
          "queries": {
            "description": "The queries to be executed.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "GoogleMapsCallArguments"
      },
      "GoogleMapsResult": {
        "description": "The result of the Google Maps.",
        "type": "object",
        "properties": {
          "places": {
            "description": "The places that were found.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Places"
            }
          },
          "widget_context_token": {
            "description": "Resource name of the Google Maps widget context token.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleMapsResultDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "google_maps_result"
          },
          "result": {
            "description": "The results of the Google Maps.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GoogleMapsResult"
            }
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleMapsResultItem": {
        "description": "The result of the Google Maps.",
        "type": "object",
        "properties": {
          "places": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GoogleMapsResultPlaces"
            }
          },
          "widget_context_token": {
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "GoogleMapsResult"
      },
      "GoogleMapsResultPlaces": {
        "type": "object",
        "properties": {
          "place_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "review_snippets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReviewSnippet"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleMapsResultStep": {
        "description": "Google Maps result step.",
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GoogleMapsResultItem"
            }
          },
          "call_id": {
            "description": "Required. ID to match the ID from the function call block.",
            "type": "string"
          },
          "type": {
            "const": "google_maps_result"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "call_id",
          "result",
          "type"
        ],
        "examples": [
          {
            "google_maps_result": {
              "summary": "GoogleMapsResultStep",
              "value": {
                "type": "google_maps_result",
                "call_id": "maps_call_39201",
                "result": [
                  {
                    "name": "Golden Gate Park",
                    "place_id": "ChIJIQBpAG2ahYAR9R7bNdTLg8M",
                    "rating": 4.8
                  }
                ]
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleSearch": {
        "description": "A tool that can be used by the model to search Google.",
        "type": "object",
        "properties": {
          "type": {
            "const": "google_search"
          },
          "search_types": {
            "description": "The types of search grounding to enable.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "web_search",
                "image_search"
              ],
              "x-google-enum-descriptions": [
                "Setting this field enables web search. Only text results are returned.",
                "Setting this field enables image search. Image bytes are returned."
              ]
            }
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-codeSamples": [
          {
            "label": "google_search",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"tools\": [{\n      \"type\": \"google_search\"\n    }],\n    \"input\": \"Who is the current president of France?\"\n  }'\n"
          },
          {
            "label": "google_search",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    tools=[{\"type\": \"google_search\"}],\n    input=\"Who is the current president of France?\",\n)\nprint(response.output_text)\n"
          },
          {
            "label": "google_search",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  tools: [{type: 'google_search'}],\n  input: 'Who is the current president of France?',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "google_search",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.GoogleSearch;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\n\nClient client = new Client();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .tools(List.of(new GoogleSearch()))\n        .input(InteractionsInput.of(\"Who is the current president of France?\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "google_search",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    tool := gaos_interactions.NewTool(gaos_interactions.GoogleSearch{})\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"Who is the current president of France?\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          }
        ]
      },
      "GoogleSearchCallArguments": {
        "description": "The arguments to pass to Google Search.",
        "type": "object",
        "properties": {
          "queries": {
            "description": "Web search queries for the following-up web search.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleSearchCallDelta": {
        "type": "object",
        "properties": {
          "arguments": {
            "$ref": "#/components/schemas/GoogleSearchCallArguments"
          },
          "type": {
            "const": "google_search_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "arguments",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleSearchCallStep": {
        "description": "Google Search call step.",
        "type": "object",
        "properties": {
          "arguments": {
            "description": "Required. The arguments to pass to Google Search.",
            "$ref": "#/components/schemas/GoogleSearchCallStepArguments"
          },
          "id": {
            "description": "Required. A unique ID for this specific tool call.",
            "type": "string"
          },
          "type": {
            "const": "google_search_call"
          },
          "search_type": {
            "description": "The type of search grounding enabled.",
            "type": "string",
            "enum": [
              "web_search",
              "image_search"
            ],
            "x-google-enum-descriptions": [
              "Setting this field enables web search. Only text results are returned.",
              "Setting this field enables image search. Image bytes are returned."
            ]
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "arguments",
          "id",
          "type"
        ],
        "examples": [
          {
            "google_search_call": {
              "summary": "GoogleSearchCallStep",
              "value": {
                "type": "google_search_call",
                "arguments": {
                  "query": "Who won the men's 100m in Paris 2024?"
                },
                "id": "search_call_19201"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleSearchCallStepArguments": {
        "description": "The arguments to pass to Google Search.",
        "type": "object",
        "properties": {
          "queries": {
            "description": "Web search queries for the following-up web search.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "GoogleSearchCallArguments"
      },
      "GoogleSearchResult": {
        "description": "The result of the Google Search.",
        "type": "object",
        "properties": {
          "search_suggestions": {
            "description": "Web content snippet that can be embedded in a web page or an app webview.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleSearchResultDelta": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GoogleSearchResult"
            }
          },
          "type": {
            "const": "google_search_result"
          },
          "is_error": {
            "type": "boolean"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "result",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GoogleSearchResultItem": {
        "description": "The result of the Google Search.",
        "type": "object",
        "properties": {
          "search_suggestions": {
            "description": "Web content snippet that can be embedded in a web page or an app webview.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "GoogleSearchResult"
      },
      "GoogleSearchResultStep": {
        "description": "Google Search result step.",
        "type": "object",
        "properties": {
          "result": {
            "description": "Required. The results of the Google Search.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GoogleSearchResultItem"
            }
          },
          "call_id": {
            "description": "Required. ID to match the ID from the function call block.",
            "type": "string"
          },
          "type": {
            "const": "google_search_result"
          },
          "is_error": {
            "description": "Whether the Google Search resulted in an error.",
            "type": "boolean"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "call_id",
          "result",
          "type"
        ],
        "examples": [
          {
            "google_search_result": {
              "summary": "GoogleSearchResultStep",
              "value": {
                "type": "google_search_result",
                "call_id": "search_call_19201",
                "result": [
                  {
                    "title": "Paris 2024 Olympics: Noah Lyles wins men's 100m gold",
                    "url": "https://olympics.com/en/news/paris-2024-noah-lyles-wins-mens-100m-gold",
                    "snippet": "American Noah Lyles won the Olympic men's 100m gold medal in a photo finish."
                  }
                ]
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "GroundingToolCount": {
        "description": "The number of grounding tool counts.",
        "type": "object",
        "properties": {
          "type": {
            "description": "The grounding tool type associated with the count.",
            "type": "string",
            "enum": [
              "google_search",
              "google_maps"
            ],
            "x-google-enum-descriptions": [
              "Grounding with Google Web Search and Image Search, & Web Grounding\nfor Enterprise.",
              "Grounding with Google Maps."
            ]
          },
          "count": {
            "description": "The number of grounding tool counts.",
            "type": "integer",
            "format": "int32"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "HarmCategory": {
        "type": "string",
        "enum": [
          "hate_speech",
          "dangerous_content",
          "harassment",
          "sexually_explicit",
          "jailbreak"
        ],
        "x-google-enum-descriptions": [
          "Content that promotes violence or incites hatred against individuals or\ngroups based on certain attributes.",
          "Content that promotes, facilitates, or enables dangerous activities.",
          "Abusive, threatening, or content intended to bully, torment, or ridicule.",
          "Content that contains sexually explicit material.",
          "Prompts designed to bypass safety filters."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "HttpBearerConfig": {
        "description": "Configuration for HTTP Bearer token credentials.",
        "type": "object",
        "properties": {
          "token": {
            "description": "Required. Input only. The static bearer token. Write-only; never returned in responses.",
            "type": "string",
            "writeOnly": true
          },
          "id": {
            "type": "string"
          },
          "type": {
            "const": "bearer_token"
          },
          "header_name": {
            "description": "Optional. Header name to inject the token into. Defaults to\n'Authorization'.",
            "type": "string"
          },
          "prefix": {
            "description": "Optional. Prefix to prepend to the token. Defaults to 'Bearer'. Set to ''\nfor no prefix.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "token",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "HttpBearerUpdateConfig": {
        "description": "Configuration for updating HTTP Bearer token credentials.",
        "type": "object",
        "properties": {
          "type": {
            "const": "bearer_token"
          },
          "token": {
            "description": "Optional. Input only. The static bearer token. Write-only; never returned in responses.",
            "type": "string",
            "writeOnly": true
          },
          "header_name": {
            "description": "Optional. Header name to inject the token into. Defaults to\n'Authorization'.",
            "type": "string"
          },
          "prefix": {
            "description": "Optional. Prefix to prepend to the token. Defaults to 'Bearer'. Set to ''\nfor no prefix.",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "HttpBody": {
        "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n    message GetResourceRequest {\n      // A unique request id.\n      string request_id = 1;\n\n      // The raw HTTP body is bound to this field.\n      google.api.HttpBody http_body = 2;\n\n    }\n\n    service ResourceService {\n      rpc GetResource(GetResourceRequest)\n        returns (google.api.HttpBody);\n      rpc UpdateResource(google.api.HttpBody)\n        returns (google.protobuf.Empty);\n\n    }\n\nExample with streaming methods:\n\n    service CaldavService {\n      rpc GetCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n      rpc UpdateCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n\n    }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged.",
        "type": "object",
        "properties": {
          "content_type": {
            "description": "The HTTP Content-Type header value specifying the content type of the body.",
            "type": "string"
          },
          "data": {
            "description": "The HTTP request/response body as raw binary.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "extensions": {
            "description": "Application specific response metadata. Must be set in the first response\nfor streaming APIs.",
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "description": "Properties of the object. Contains field @type with type URL."
              }
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ImageConfig": {
        "description": "The configuration for image interaction.",
        "type": "object",
        "properties": {
          "aspect_ratio": {
            "description": "The aspect ratio of the image to generate. Supported aspect ratios: 1:1,\n2:3, 3:2, 3:4, 4:3, 9:16, 16:9, 21:9.\n\nIf not specified, the model will choose a default aspect ratio based on any\nreference images provided.",
            "type": "string"
          },
          "image_size": {
            "description": "Specifies the size of generated images. Supported values are `1K`, `2K`,\n`4K`. If not specified, the model will use default value `1K`.",
            "type": "string"
          }
        },
        "deprecated": true,
        "x-speakeasy-model-namespace": "interactions"
      },
      "ImageContent": {
        "description": "An image content block.",
        "type": "object",
        "properties": {
          "type": {
            "const": "image"
          },
          "data": {
            "description": "The image content.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "uri": {
            "description": "The URI of the image.",
            "type": "string"
          },
          "resolution": {
            "description": "The resolution of the media.",
            "$ref": "#/components/schemas/MediaResolution"
          },
          "mime_type": {
            "description": "The mime type of the image.",
            "type": "string",
            "enum": [
              "image/png",
              "image/jpeg",
              "image/webp",
              "image/heic",
              "image/heif",
              "image/gif",
              "image/bmp",
              "image/tiff"
            ],
            "x-google-enum-descriptions": [
              "PNG image format",
              "JPEG image format",
              "WebP image format",
              "HEIC image format",
              "HEIF image format",
              "GIF image format",
              "BMP image format",
              "TIFF image format"
            ]
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "image": {
              "summary": "Image",
              "value": {
                "type": "image",
                "data": "BASE64_ENCODED_IMAGE",
                "mime_type": "image/png"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ImageDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "image"
          },
          "data": {
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "uri": {
            "type": "string"
          },
          "mime_type": {
            "type": "string",
            "enum": [
              "image/png",
              "image/jpeg",
              "image/webp",
              "image/heic",
              "image/heif",
              "image/gif",
              "image/bmp",
              "image/tiff"
            ],
            "x-google-enum-descriptions": [
              "PNG image format",
              "JPEG image format",
              "WebP image format",
              "HEIC image format",
              "HEIF image format",
              "GIF image format",
              "BMP image format",
              "TIFF image format"
            ]
          },
          "resolution": {
            "description": "The resolution of the media.",
            "$ref": "#/components/schemas/MediaResolution"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ImageResponseFormat": {
        "description": "Configuration for image output format.",
        "type": "object",
        "properties": {
          "type": {
            "const": "image"
          },
          "mime_type": {
            "description": "The MIME type of the image output.",
            "type": "string",
            "enum": [
              "image/jpeg"
            ],
            "x-google-enum-descriptions": [
              "JPEG image format."
            ]
          },
          "delivery": {
            "description": "The delivery mode for the image output.",
            "type": "string",
            "enum": [
              "inline",
              "uri"
            ],
            "x-google-enum-descriptions": [
              "Image data is returned inline in the response.",
              "Image data is returned as a URI."
            ]
          },
          "aspect_ratio": {
            "description": "The aspect ratio for the image output.",
            "type": "string",
            "enum": [
              "1:1",
              "2:3",
              "3:2",
              "3:4",
              "4:3",
              "4:5",
              "5:4",
              "9:16",
              "16:9",
              "21:9",
              "1:8",
              "8:1",
              "1:4",
              "4:1"
            ],
            "x-google-enum-descriptions": [
              "1:1 aspect ratio.",
              "2:3 aspect ratio.",
              "3:2 aspect ratio.",
              "3:4 aspect ratio.",
              "4:3 aspect ratio.",
              "4:5 aspect ratio.",
              "5:4 aspect ratio.",
              "9:16 aspect ratio.",
              "16:9 aspect ratio.",
              "21:9 aspect ratio.",
              "1:8 aspect ratio.",
              "8:1 aspect ratio.",
              "1:4 aspect ratio.",
              "4:1 aspect ratio."
            ]
          },
          "image_size": {
            "description": "The size of the image output.",
            "type": "string",
            "enum": [
              "512",
              "1K",
              "2K",
              "4K"
            ],
            "x-google-enum-descriptions": [
              "512px image size.",
              "1K image size.",
              "2K image size.",
              "4K image size."
            ]
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "image_response_format": {
              "summary": "Image Output",
              "value": {
                "type": "image",
                "aspect_ratio": "16:9",
                "image_size": "1K",
                "mime_type": "image/jpeg"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "InjectionLocation": {
        "type": "string",
        "enum": [
          "header",
          "query",
          "body"
        ],
        "x-google-enum-descriptions": [
          "Injected into HTTP request headers.",
          "Injected into HTTP URL query parameters.",
          "Injected into HTTP request body."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Interaction": {
        "description": "The Interaction resource.",
        "properties": {
          "id": {
            "description": "Required. Output only. A unique identifier for the interaction completion.",
            "type": "string",
            "default": "",
            "readOnly": true
          },
          "status": {
            "description": "Required. Output only. The status of the interaction.",
            "type": "string",
            "enum": [
              "in_progress",
              "requires_action",
              "completed",
              "failed",
              "cancelled",
              "incomplete",
              "budget_exceeded"
            ],
            "readOnly": true,
            "x-google-enum-deprecated": [
              false,
              false,
              false,
              false,
              false,
              false,
              true
            ],
            "x-google-enum-descriptions": [
              "The interaction is in progress.",
              "The interaction requires action/input from the user.",
              "The interaction is completed.",
              "The interaction failed.",
              "The interaction was cancelled.",
              "The interaction is completed, but contains incomplete results (e.g.\nhitting max_tokens).",
              "Deprecated: Token and execution budget exhaustion returns INCOMPLETE\n(11)."
            ]
          },
          "created": {
            "description": "Required. Output only. The time at which the response was created in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "updated": {
            "description": "Required. Output only. The time at which the response was last updated in ISO 8601 format\n(YYYY-MM-DDThh:mm:ssZ).",
            "type": "string",
            "readOnly": true
          },
          "steps": {
            "description": "Required. Output only. The steps that make up the interaction, when included in the response.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Step"
            },
            "readOnly": true
          },
          "model": {
            "description": "The name of the `Model` used for generating the interaction.",
            "$ref": "#/components/schemas/ModelOption"
          },
          "generation_config": {
            "description": "Input only. Configuration parameters for the model interaction.",
            "$ref": "#/components/schemas/GenerationConfig",
            "writeOnly": true
          },
          "input": {
            "$ref": "#/components/schemas/InteractionsInput"
          },
          "response_format": {
            "description": "Enforces that the generated response is a JSON object that complies with\nthe JSON schema specified in this field.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ResponseFormat"
              },
              {
                "title": "ResponseFormatList",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ResponseFormat"
                }
              }
            ]
          },
          "environment": {
            "description": "The environment configuration for the interaction. Can be an object\nspecifying remote environment sources or a string referencing an existing\nenvironment ID.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnvironmentConfig"
              },
              {
                "type": "string"
              }
            ]
          },
          "system_instruction": {
            "description": "System instruction for the interaction.",
            "type": "string"
          },
          "tools": {
            "description": "A list of tool declarations the model may call during interaction.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tool"
            }
          },
          "usage": {
            "description": "Output only. Statistics on the interaction request's token usage.",
            "$ref": "#/components/schemas/Usage",
            "readOnly": true
          },
          "response_modalities": {
            "description": "The requested modalities of the response (TEXT, IMAGE, AUDIO).",
            "type": "array",
            "deprecated": true,
            "items": {
              "$ref": "#/components/schemas/ResponseModality"
            }
          },
          "response_mime_type": {
            "description": "The mime type of the response. This is required if response_format is set.",
            "type": "string",
            "deprecated": true
          },
          "previous_interaction_id": {
            "description": "The ID of the previous interaction, if any.",
            "type": "string"
          },
          "environment_id": {
            "description": "Output only. The environment ID for the interaction. Only populated if environment\nconfig is set in the request.",
            "type": "string",
            "readOnly": true
          },
          "service_tier": {
            "description": "The service tier for the interaction.",
            "$ref": "#/components/schemas/ServiceTier"
          },
          "webhook_config": {
            "description": "Optional. Webhook configuration for receiving notifications when the\ninteraction completes.",
            "$ref": "#/components/schemas/WebhookConfig"
          },
          "safety_settings": {
            "description": "Safety settings for the interaction.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SafetySetting"
            }
          },
          "labels": {
            "description": "The labels with user-defined metadata for the request.\n\nLabel keys and values can be no longer than 63 characters\n(Unicode codepoints) and can only contain lowercase letters, numeric\ncharacters, underscores, and dashes. International characters are allowed.\nLabel values are optional. Label keys must start with a letter.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "errors": {
            "description": "Output only. Diagnostic faults / platform errors recorded on the interaction.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            },
            "readOnly": true
          },
          "stream": {
            "description": "Input only. Whether the interaction will be streamed.",
            "type": "boolean",
            "writeOnly": true
          },
          "store": {
            "description": "Input only. Whether to store the response and request for later retrieval.",
            "type": "boolean",
            "writeOnly": true
          },
          "background": {
            "description": "Input only. Whether to run the model interaction in the background.",
            "type": "boolean",
            "writeOnly": true
          },
          "agent": {
            "description": "The name of the `Agent` used for generating the interaction.",
            "$ref": "#/components/schemas/AgentOption"
          },
          "agent_config": {
            "description": "Configuration parameters for the agent interaction.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/AntigravityAgentConfig"
              },
              {
                "$ref": "#/components/schemas/DeepResearchAgentConfig"
              },
              {
                "$ref": "#/components/schemas/DynamicAgentConfig"
              }
            ]
          },
          "max_total_tokens": {
            "description": "Max total tokens for the agent run.",
            "type": "string",
            "format": "int64"
          }
        },
        "required": [
          "status",
          "created",
          "id",
          "steps",
          "updated"
        ],
        "example": {
          "created": "2025-12-04T15:01:45Z",
          "id": "v1_ChdXS0l4YWZXTk9xbk0xZThQczhEcmlROBIXV0tJeGFmV05PcW5NMWU4UHM4RHJpUTg",
          "model": "gemini-3.6-flash",
          "object": "interaction",
          "status": "completed",
          "steps": [
            {
              "type": "model_output",
              "content": [
                {
                  "type": "text",
                  "text": "Hello! I'm doing well, functioning as expected. Thank you for asking! How are you doing today?"
                }
              ]
            }
          ],
          "updated": "2025-12-04T15:01:45Z",
          "usage": {
            "input_tokens_by_modality": [
              {
                "modality": "text",
                "tokens": 7
              }
            ],
            "total_cached_tokens": 0,
            "total_input_tokens": 7,
            "total_output_tokens": 23,
            "total_thought_tokens": 49,
            "total_tokens": 79,
            "total_tool_use_tokens": 0
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "InteractionCompletedEvent": {
        "description": "Signals that the Interaction completed. Sent when the Interaction receives\nComplete/Cancel or naturally terminates. No more input can be sent to the\nInteraction after this.",
        "type": "object",
        "properties": {
          "interaction": {
            "description": "Required. Partial completed interaction resource emitted at the end of the stream.",
            "$ref": "#/components/schemas/InteractionSseEventInteraction"
          },
          "event_type": {
            "const": "interaction.completed"
          },
          "event_id": {
            "description": "The event_id token to be used to resume the interaction stream, from\nthis event.",
            "type": "string"
          }
        },
        "required": [
          "event_type",
          "interaction"
        ],
        "examples": [
          {
            "interaction_completed": {
              "summary": "Interaction Completed",
              "value": {
                "event_id": "evt_123",
                "event_type": "interaction.completed",
                "interaction": {
                  "created": "2025-12-04T15:01:45Z",
                  "id": "v1_ChdXS0l4YWZXTk9xbk0xZThQczhEcmlROBIXV0tJeGFmV05PcW5NMWU4UHM4RHJpUTg",
                  "model": "gemini-3.6-flash",
                  "status": "completed",
                  "updated": "2025-12-04T15:01:45Z"
                }
              }
            }
          },
          {
            "interaction_completed": {
              "summary": "Interaction Completed",
              "value": {
                "event_id": "evt_123",
                "event_type": "interaction.completed",
                "interaction": {
                  "created": "2025-12-04T15:01:45Z",
                  "id": "v1_ChdXS0l4YWZXTk9xbk0xZThQczhEcmlROBIXV0tJeGFmV05PcW5NMWU4UHM4RHJpUTg",
                  "model": "gemini-3-flash-preview",
                  "object": "interaction",
                  "status": "completed",
                  "updated": "2025-12-04T15:01:45Z"
                }
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "InteractionCreatedEvent": {
        "description": "Server response confirming that a new interaction was created.",
        "type": "object",
        "properties": {
          "interaction": {
            "description": "Required. Partial interaction resource emitted when the stream is created.",
            "$ref": "#/components/schemas/InteractionSseEventInteraction"
          },
          "event_type": {
            "const": "interaction.created"
          },
          "event_id": {
            "description": "The event_id token to be used to resume the interaction stream, from\nthis event.",
            "type": "string"
          }
        },
        "required": [
          "event_type",
          "interaction"
        ],
        "examples": [
          {
            "interaction_created": {
              "summary": "Interaction Created",
              "value": {
                "event_id": "evt_123",
                "event_type": "interaction.created",
                "interaction": {
                  "created": "2025-12-04T15:01:45Z",
                  "id": "v1_ChdXS0l4YWZXTk9xbk0xZThQczhEcmlROBIXV0tJeGFmV05PcW5NMWU4UHM4RHJpUTg",
                  "model": "gemini-3.6-flash",
                  "status": "in_progress",
                  "updated": "2025-12-04T15:01:45Z"
                }
              }
            }
          },
          {
            "interaction_created": {
              "summary": "Interaction Created",
              "value": {
                "event_id": "evt_123",
                "event_type": "interaction.created",
                "interaction": {
                  "id": "v1_ChdXS0l4YWZXTk9xbk0xZThQczhEcmlROBIXV0tJeGFmV05PcW5NMWU4UHM4RHJpUTg",
                  "model": "gemini-3-flash-preview",
                  "object": "interaction",
                  "status": "in_progress"
                }
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "InteractionSseEvent": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ErrorEvent"
          },
          {
            "$ref": "#/components/schemas/InteractionCompletedEvent"
          },
          {
            "$ref": "#/components/schemas/InteractionCreatedEvent"
          },
          {
            "$ref": "#/components/schemas/InteractionStatusUpdate"
          },
          {
            "$ref": "#/components/schemas/StepDelta"
          },
          {
            "$ref": "#/components/schemas/StepStart"
          },
          {
            "$ref": "#/components/schemas/StepStop"
          }
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "InteractionSSEEvent"
      },
      "InteractionSseEventInteraction": {
        "description": "Partial interaction resource emitted by interaction lifecycle SSE events.\nStreaming lifecycle payloads may omit fields that are only available on\nfull non-streaming Interaction responses.\n",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. Output only. A unique identifier for the interaction completion.",
            "type": "string",
            "readOnly": true
          },
          "status": {
            "description": "Required. Output only. The status of the interaction.",
            "type": "string",
            "enum": [
              "in_progress",
              "requires_action",
              "completed",
              "failed",
              "cancelled",
              "incomplete"
            ],
            "readOnly": true,
            "x-google-enum-descriptions": [
              "The interaction is in progress.",
              "The interaction requires action/input from the user.",
              "The interaction is completed.",
              "The interaction failed.",
              "The interaction was cancelled.",
              "The interaction is completed, but contains incomplete results (e.g. hitting max_tokens)."
            ]
          },
          "model": {
            "description": "The model that will complete your prompt.",
            "type": "string"
          },
          "created": {
            "description": "Output only. The time at which the response was created in ISO 8601 format.",
            "type": "string",
            "readOnly": true
          },
          "updated": {
            "description": "Output only. The time at which the response was last updated in ISO 8601 format.",
            "type": "string",
            "readOnly": true
          },
          "usage": {
            "description": "Output only. Statistics on the interaction request's token usage.",
            "$ref": "#/components/schemas/Usage",
            "readOnly": true
          },
          "service_tier": {
            "description": "The service tier for the interaction.",
            "$ref": "#/components/schemas/ServiceTier"
          },
          "steps": {
            "description": "Output only. The steps that make up the interaction, if included in this event.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Step"
            },
            "readOnly": true
          },
          "agent": {
            "description": "The agent to interact with.",
            "type": "string"
          },
          "continuation_token": {
            "description": "Opaque token to resume a long decode.\nOutput: set when status is INCOMPLETE and decoding can be resumed.\nInput: pass the latest token back unchanged in CreateInteraction to\ncontinue decoding.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "object": {
            "description": "Output only. The resource type.",
            "type": "string",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "status"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "InteractionSseStreamEvent": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/InteractionSseEvent"
          }
        },
        "required": [
          "data"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "InteractionSSEStreamEvent"
      },
      "InteractionStatusUpdate": {
        "type": "object",
        "properties": {
          "interaction_id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "in_progress",
              "requires_action",
              "completed",
              "failed",
              "cancelled",
              "incomplete",
              "budget_exceeded"
            ],
            "x-google-enum-deprecated": [
              false,
              false,
              false,
              false,
              false,
              false,
              true
            ],
            "x-google-enum-descriptions": [
              "The interaction is in progress.",
              "The interaction requires action/input from the user.",
              "The interaction is completed.",
              "The interaction failed.",
              "The interaction was cancelled.",
              "The interaction is completed, but contains incomplete results (e.g.\nhitting max_tokens).",
              "Deprecated: Token and execution budget exhaustion returns INCOMPLETE\n(11)."
            ]
          },
          "event_type": {
            "const": "interaction.status_update"
          },
          "continuation_token": {
            "description": "An optional opaque continuation token used to resume decoding from the\nlatest checkpoint after a disconnected stream.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "usage": {
            "description": "Model usage statistics up to this checkpoint.",
            "$ref": "#/components/schemas/Usage"
          },
          "event_id": {
            "description": "The event_id token to be used to resume the interaction stream, from\nthis event.",
            "type": "string"
          }
        },
        "required": [
          "event_type",
          "interaction_id",
          "status"
        ],
        "examples": [
          {
            "interaction_status_update": {
              "summary": "Interaction Status Update",
              "value": {
                "event_type": "interaction.status_update",
                "interaction_id": "v1_ChdTMjQ0YWJ5TUF1TzcxZThQdjRpcnFRcxIXUzI0NGFieU1BdU83MWU4UHY0aXJxUXM",
                "status": "in_progress"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "InteractionsInput": {
        "description": "The input for the interaction.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/Content"
          },
          {
            "title": "StepList",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Step"
            }
          },
          {
            "title": "ContentList",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Content"
            }
          },
          {
            "type": "string"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ListAgentsResponse": {
        "type": "object",
        "properties": {
          "agents": {
            "description": "The list of agents.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Agent"
            }
          },
          "next_page_token": {
            "description": "A token to retrieve the next page of results.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ListCredentialsResponse": {
        "type": "object",
        "properties": {
          "credentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Credential"
            }
          },
          "next_page_token": {
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ListEnvironmentsResponse": {
        "description": "Response for `ListEnvironments`.",
        "type": "object",
        "properties": {
          "environments": {
            "description": "Environments belonging to the provided project.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Environment"
            }
          },
          "next_page_token": {
            "description": "Pagination token.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ListTriggerExecutionsResponse": {
        "description": "Response message for TriggerService.ListTriggerExecutions.",
        "type": "object",
        "properties": {
          "trigger_executions": {
            "description": "The list of trigger executions.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TriggerExecution"
            }
          },
          "next_page_token": {
            "description": "A page token, received from a previous `ListTriggerExecutions` call.\nProvide this to retrieve the subsequent page.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ListTriggersResponse": {
        "description": "Response message for TriggerService.ListTriggers.",
        "type": "object",
        "properties": {
          "triggers": {
            "description": "The list of triggers.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Trigger"
            }
          },
          "next_page_token": {
            "description": "A page token, received from a previous `ListTriggers` call.\nProvide this to retrieve the subsequent page.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ListVoicesResponse": {
        "description": "Response message for `VoicesService.ListVoices`.",
        "type": "object",
        "properties": {
          "voices": {
            "description": "The voices from the specified collection.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Voice"
            }
          },
          "next_page_token": {
            "description": "A token that can be sent as `page_token` to retrieve the next page.\nIf empty, there are no subsequent pages.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ListWebhooksResponse": {
        "description": "Response message for WebhookService.ListWebhooks.",
        "type": "object",
        "properties": {
          "webhooks": {
            "description": "The webhooks.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Webhook"
            }
          },
          "next_page_token": {
            "description": "A token, which can be sent as `page_token` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "McpServer": {
        "description": "A MCPServer is a server that can be called by the model to perform actions.",
        "type": "object",
        "properties": {
          "type": {
            "const": "mcp_server"
          },
          "url": {
            "description": "The full URL for the MCPServer endpoint.\nExample: \"https://api.example.com/mcp\"",
            "type": "string"
          },
          "name": {
            "description": "The name of the MCPServer.",
            "type": "string"
          },
          "headers": {
            "description": "Optional: Fields for authentication headers, timeouts, etc., if needed.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "allowed_tools": {
            "description": "The allowed tools.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowedTools"
            }
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-codeSamples": [
          {
            "label": "mcp_server",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"tools\": [{\n      \"type\": \"mcp_server\",\n      \"name\": \"weather_service\",\n      \"url\": \"https://gemini-api-demos.uc.r.appspot.com/mcp\"\n    }],\n    \"input\": \"Today is 12-05-2025, what is the temperature today in London?\"\n  }'\n"
          },
          {
            "label": "mcp_server",
            "lang": "python",
            "source": "import os\n\nfrom google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    tools=[{\n        \"type\": \"mcp_server\",\n        \"name\": \"weather_service\",\n        \"url\": \"https://gemini-api-demos.uc.r.appspot.com/mcp\",\n    }],\n    input=\"Today is 12-05-2025, what is the temperature today in London?\",\n)\nprint(response.output_text)\n"
          },
          {
            "label": "mcp_server",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  tools: [\n    {\n      type: 'mcp_server',\n      name: 'weather_service',\n      url: 'https://gemini-api-demos.uc.r.appspot.com/mcp',\n    },\n  ],\n  input: 'Today is 12-05-2025, what is the temperature today in London?',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "mcp_server",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.MCPServer;\n\nClient client = new Client();\nMCPServer mcpTool =\n    MCPServer.builder()\n        .name(\"weather_service\")\n        .url(\"https://gemini-api-demos.uc.r.appspot.com/mcp\")\n        .build();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .tools(List.of(mcpTool))\n        .input(\n            InteractionsInput.of(\n                \"Today is 12-05-2025, what is the temperature today in London?\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "mcp_server",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"os\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    mcpServer := gaos_interactions.MCPServer{\n        Name: genai.Ptr(\"weather_service\"),\n        URL:  genai.Ptr(\"https://gemini-api-demos.uc.r.appspot.com/mcp\"),\n    }\n    tool := gaos_interactions.NewTool(mcpServer)\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"Today is 12-05-2025, what is the temperature today in London?\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          }
        ]
      },
      "McpServerToolCallDelta": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "server_name": {
            "type": "string"
          },
          "arguments": {
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object."
            }
          },
          "type": {
            "const": "mcp_server_tool_call"
          }
        },
        "required": [
          "arguments",
          "name",
          "server_name",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "McpServerToolCallStep": {
        "description": "MCPServer tool call step.",
        "type": "object",
        "properties": {
          "name": {
            "description": "Required. The name of the tool which was called.",
            "type": "string"
          },
          "server_name": {
            "description": "Required. The name of the used MCP server.",
            "type": "string"
          },
          "arguments": {
            "description": "Required. The JSON object of arguments for the function.",
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object."
            }
          },
          "id": {
            "description": "Required. A unique ID for this specific tool call.",
            "type": "string"
          },
          "type": {
            "const": "mcp_server_tool_call"
          }
        },
        "required": [
          "arguments",
          "id",
          "name",
          "server_name",
          "type"
        ],
        "examples": [
          {
            "mcp_server_tool_call": {
              "summary": "McpServerToolCallStep",
              "value": {
                "name": "calculate_tax",
                "type": "mcp_server_tool_call",
                "arguments": {
                  "income": 120000,
                  "state": "CA"
                },
                "id": "mcp_call_29012",
                "server_name": "financial_mcp_server"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "McpServerToolResultDelta": {
        "type": "object",
        "properties": {
          "result": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ImageContent"
                    },
                    {
                      "$ref": "#/components/schemas/TextContent"
                    }
                  ]
                }
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ]
          },
          "type": {
            "const": "mcp_server_tool_result"
          },
          "name": {
            "type": "string"
          },
          "server_name": {
            "type": "string"
          }
        },
        "required": [
          "result",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "McpServerToolResultStep": {
        "description": "MCPServer tool result step.",
        "type": "object",
        "properties": {
          "result": {
            "description": "Required. The output from the MCP server call. Can be simple text or rich content.",
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ImageContent"
                    },
                    {
                      "$ref": "#/components/schemas/TextContent"
                    }
                  ]
                }
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ]
          },
          "call_id": {
            "description": "Required. ID to match the ID from the function call block.",
            "type": "string"
          },
          "type": {
            "const": "mcp_server_tool_result"
          },
          "name": {
            "description": "Name of the tool which is called for this specific tool call.",
            "type": "string"
          },
          "server_name": {
            "description": "The name of the used MCP server.",
            "type": "string"
          }
        },
        "required": [
          "call_id",
          "result",
          "type"
        ],
        "examples": [
          {
            "mcp_server_tool_result": {
              "summary": "McpServerToolResultStep",
              "value": {
                "name": "calculate_tax",
                "type": "mcp_server_tool_result",
                "call_id": "mcp_call_29012",
                "result": {
                  "tax_due": 32400
                },
                "server_name": "financial_mcp_server"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "MediaProcessing": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/StaticMediaProcessing"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "MediaResolution": {
        "type": "string",
        "enum": [
          "low",
          "medium",
          "high",
          "ultra_high"
        ],
        "x-google-enum-descriptions": [
          "Low resolution.",
          "Medium resolution.",
          "High resolution.",
          "Ultra high resolution."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ModalityTokens": {
        "description": "The token count for a single response modality.",
        "type": "object",
        "properties": {
          "modality": {
            "description": "The modality associated with the token count.",
            "$ref": "#/components/schemas/ResponseModality"
          },
          "tokens": {
            "description": "Number of tokens for the modality.",
            "type": "integer",
            "format": "int32"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ModelOption": {
        "title": "Model",
        "description": "The model that will complete your prompt.\\n\\nSee [models](https://ai.google.dev/gemini-api/docs/models) for additional details.",
        "type": "string",
        "enum": [
          "gemma-4-26b-a4b-it",
          "gemma-4-31b-it",
          "gemini-flash-latest",
          "gemini-flash-lite-latest",
          "gemini-pro-latest",
          "gemini-2.5-flash",
          "gemini-2.5-pro",
          "gemini-2.5-flash-lite",
          "gemini-3.5-flash-lite",
          "gemini-2.5-flash-image",
          "gemini-3-flash-preview",
          "gemini-3.1-pro-preview",
          "gemini-3.1-pro-preview-customtools",
          "gemini-3.1-flash-lite",
          "gemini-3.1-flash-lite-image",
          "gemini-3-pro-image",
          "nano-banana-pro-preview",
          "gemini-3.1-flash-image",
          "gemini-nano-banana-2.1",
          "gemini-3.1-flash-tts-preview",
          "gemini-3.5-flash",
          "gemini-3.6-flash",
          "gemini-3.7-flash",
          "gemini-3.8-flash",
          "gemini-3.8-flash-tts",
          "gemini-3.8-flash-lite-tts",
          "lyria-3-clip-preview",
          "lyria-3-pro-preview",
          "gemini-robotics-er-1.6-preview",
          "gemini-robotics-er-2-preview",
          "lyria-3.5",
          "gemini-omni-1.1-flash",
          "gemini-omni-flash-preview"
        ],
        "x-speakeasy-enum-descriptions": [
          "Gemma 4 26B A4B IT",
          "Gemma 4 31B IT",
          "Latest release of Gemini Flash",
          "Latest release of Gemini Flash-Lite",
          "Latest release of Gemini Pro",
          "Our first hybrid reasoning model which supports a 1M token context window and has thinking budgets.",
          "Our state-of-the-art multipurpose model, which excels at coding and complex reasoning tasks.",
          "Our smallest and most cost effective model, built for at scale usage.",
          "Gemini 3.5 Flash-Lite - Our fastest, most cost-effective 3.5 model for high-throughput execution.",
          "Our native image generation model, optimized for speed, flexibility, and contextual understanding. Text input and output is priced the same as 2.5 Flash.",
          "Our most intelligent model built for speed, combining frontier intelligence with superior search and grounding.",
          "Our latest SOTA reasoning model with unprecedented depth and nuance, and powerful multimodal understanding and coding capabilities.",
          "Gemini 3.1 Pro Preview optimized for custom tool usage",
          "Our most cost-efficient model, optimized for high-volume agentic tasks, translation, and simple data processing.",
          "Gemini 3.1 Flash Lite Image.",
          "Gemini 3 Pro Image",
          "Gemini 3 Pro Image Preview",
          "Gemini 3.1 Flash Image.",
          "Gemini Nano Banana 2.1.",
          "Gemini 3.1 Flash TTS: Powerful, low-latency speech generation. Enjoy natural outputs, steerable prompts, and new expressive audio tags for precise narration control.",
          "Gemini 3.5 Flash - Our earlier Flash model, built for speed and foundational performance across routine, high-throughput workloads.",
          "Gemini 3.6 Flash - Our previous generation Flash model, balancing speed and multimodal capabilities across general agentic and everyday tasks.",
          "Gemini 3.7 Flash - Our high-speed, efficient Flash model built for everyday coding, agentic tool use, and reliable multi-step execution.",
          "Gemini 3.8 Flash - Our most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows.",
          "Gemini 3.8 Flash TTS - Flagship TTS model for Voice Design and dual-speaker screenplay control. Prompt custom vocal personas, direct line-by-line delivery, and add vocal bursts.",
          "Gemini 3.8 Flash Lite TTS - High-speed and cost-efficient, ideal for rapid dubbing, media localization, and high-throughput voice agents. Direct replacement for gemini-3.1-flash-tts-preview.",
          "Our low-latency, music generation model optimized for high-fidelity audio clips and precise rhythmic control.",
          "Our advanced, full-song generative model with deep compositional understanding, optimized for precise structural control and complex transitions across diverse musical styles.",
          "Gemini Robotics-ER 1.6 Preview",
          "Gemini Robotics Embodied Reasoning 2 Preview",
          "Our flagship music generation model, optimized for full-length songs with complex structural coherence.",
          "Our high-performance multimodal model designed for fast, conversational video generation, editing, and cinematic control.",
          "Preview release of our multimodal model for conversational video generation, editing, and cinematic control."
        ],
        "x-speakeasy-enum-format": "union",
        "x-speakeasy-exports": [
          {
            "name": "model",
            "group": "interactions"
          },
          {
            "name": "model_param",
            "group": "interactions"
          }
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "Model",
        "x-speakeasy-unknown-values": "allow"
      },
      "ModelOutputStep": {
        "description": "Output generated by the model.",
        "type": "object",
        "properties": {
          "type": {
            "const": "model_output"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Content"
            }
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "model_output": {
              "summary": "ModelOutputStep",
              "value": {
                "type": "model_output",
                "content": [
                  {
                    "type": "text",
                    "text": "The capital of France is Paris."
                  }
                ]
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "OAuth2Config": {
        "description": "Configuration for OAuth2 credentials with automatic token refresh.",
        "type": "object",
        "properties": {
          "client_id": {
            "description": "Required. OAuth2 client ID.",
            "type": "string"
          },
          "client_secret": {
            "description": "Required. Input only. OAuth2 client secret. Write-only; never returned in responses.",
            "type": "string",
            "writeOnly": true
          },
          "refresh_token": {
            "description": "Required. Input only. OAuth2 refresh token. Write-only; never returned in responses.",
            "type": "string",
            "writeOnly": true
          },
          "token_url": {
            "description": "Required. OAuth2 token endpoint URL for refreshing access tokens.",
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "type": {
            "const": "oauth2"
          },
          "scopes": {
            "description": "Optional. List of OAuth2 scopes.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "client_id",
          "client_secret",
          "id",
          "refresh_token",
          "token_url",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "OAuth2UpdateConfig": {
        "description": "Configuration for updating OAuth2 credentials.",
        "type": "object",
        "properties": {
          "type": {
            "const": "oauth2"
          },
          "client_id": {
            "description": "Optional. OAuth2 client ID.",
            "type": "string"
          },
          "client_secret": {
            "description": "Optional. Input only. OAuth2 client secret. Write-only; never returned in responses.",
            "type": "string",
            "writeOnly": true
          },
          "refresh_token": {
            "description": "Optional. Input only. OAuth2 refresh token. Write-only; never returned in responses.",
            "type": "string",
            "writeOnly": true
          },
          "token_url": {
            "description": "Optional. OAuth2 token endpoint URL for refreshing access tokens.",
            "type": "string"
          },
          "scopes": {
            "description": "Optional. List of OAuth2 scopes.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "PingWebhookRequest": {
        "description": "Request message for WebhookService.PingWebhook.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. The ID of the webhook to ping.\nFormat: `{webhook_id}`",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "PingWebhookResponse": {
        "description": "Response message for WebhookService.PingWebhook.",
        "type": "object",
        "x-speakeasy-model-namespace": "interactions"
      },
      "Pitch": {
        "type": "string",
        "enum": [
          "low",
          "medium",
          "high"
        ],
        "x-google-enum-descriptions": [
          "Lower pitch voice.",
          "Medium pitch voice.",
          "Higher pitch voice."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "PlaceCitation": {
        "description": "A place citation annotation.",
        "type": "object",
        "properties": {
          "type": {
            "const": "place_citation"
          },
          "place_id": {
            "description": "The ID of the place, in `places/{place_id}` format.",
            "type": "string"
          },
          "name": {
            "description": "Title of the place.",
            "type": "string"
          },
          "url": {
            "description": "URI reference of the place.",
            "type": "string"
          },
          "review_snippets": {
            "description": "Snippets of reviews that are used to generate answers about the\nfeatures of a given place in Google Maps.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReviewSnippet"
            }
          },
          "start_index": {
            "description": "Start of segment of the response that is attributed to this source.\n\nIndex indicates the start of the segment, measured in bytes.",
            "type": "integer",
            "format": "int32"
          },
          "end_index": {
            "description": "End of the attributed segment, exclusive.",
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Places": {
        "type": "object",
        "properties": {
          "place_id": {
            "description": "The ID of the place, in `places/{place_id}` format.",
            "type": "string"
          },
          "name": {
            "description": "Title of the place.",
            "type": "string"
          },
          "url": {
            "description": "URI reference of the place.",
            "type": "string"
          },
          "review_snippets": {
            "description": "Snippets of reviews that are used to generate answers about the\nfeatures of a given place in Google Maps.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReviewSnippet"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "ProcessingCallDelta": {
        "description": "Streaming delta for a server-initiated media processing step.",
        "type": "object",
        "properties": {
          "type": {
            "const": "processing_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ProcessingCallStep": {
        "description": "A server-initiated processing step for media analysis (e.g. video\nunderstanding).",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. A unique ID for this specific tool call.",
            "type": "string"
          },
          "type": {
            "const": "processing_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ProcessingResultDelta": {
        "description": "Streaming delta for the result of a server-initiated media processing step.",
        "type": "object",
        "properties": {
          "type": {
            "const": "processing_result"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ProcessingResultStep": {
        "description": "The result of a server-initiated media processing step.",
        "type": "object",
        "properties": {
          "call_id": {
            "description": "Required. ID to match the ID from the function call block.",
            "type": "string"
          },
          "type": {
            "const": "processing_result"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "call_id",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "PromptedVoice": {
        "description": "Parameters for prompted voice generation.\nRequired in `CreateVoice` when `type` is `\"prompted\"`. Returned in\n`CreateVoice`, `GetVoice`, and `ListVoices` responses for prompted voices.",
        "type": "object",
        "properties": {
          "input": {
            "description": "Required. The natural-language prompt describing the desired voice, e.g.\n\"A deep, booming male voice of a massive evil ogre in his middle years.\"",
            "type": "string"
          },
          "base_voice": {
            "description": "Optional. The name or ID of an existing base voice to edit or remix.\nUse the voice name for prebuilt voices (e.g., `Puck`) or the voice ID for\npreviously created voices (e.g., `voice_abc123`). This can be any\nprompted or replicated voice that the user has access to.\nWhen present, `input` describes relative alterations to make to the base\nvoice.",
            "type": "string"
          }
        },
        "required": [
          "input"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ReplicatedVoice": {
        "description": "Input only. Parameters for replicated voice generation.\nRequired on input when `type` is `\"replicated\"`. Not returned in\nresponses.",
        "type": "object",
        "properties": {
          "source_audio": {
            "description": "Required. The reference audio sample of the speaker's voice to replicate.\nMust be an unmodified recording of an adult human voice.",
            "$ref": "#/components/schemas/AudioData"
          },
          "consent_audio": {
            "description": "Required. Audio recording of the same speaker reading the required\nconsent phrase, confirming authorization to replicate the voice.",
            "$ref": "#/components/schemas/AudioData"
          }
        },
        "required": [
          "consent_audio",
          "source_audio"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ResponseFormat": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/AudioResponseFormat"
          },
          {
            "$ref": "#/components/schemas/ImageResponseFormat"
          },
          {
            "$ref": "#/components/schemas/TextResponseFormat"
          },
          {
            "$ref": "#/components/schemas/VideoResponseFormat"
          },
          {
            "type": "object",
            "additionalProperties": true
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ResponseModality": {
        "type": "string",
        "enum": [
          "text",
          "image",
          "audio",
          "video",
          "document"
        ],
        "x-google-enum-descriptions": [
          "Indicates the model should return text.",
          "Indicates the model should return images.",
          "Indicates the model should return audio.",
          "Indicates the model should return video.",
          "Indicates the model should return documents."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ReviewSnippet": {
        "description": "Encapsulates a snippet of a user review that answers a question about\nthe features of a specific place in Google Maps.",
        "type": "object",
        "properties": {
          "title": {
            "description": "Title of the review.",
            "type": "string"
          },
          "url": {
            "description": "A link that corresponds to the user review on Google Maps.",
            "type": "string"
          },
          "review_id": {
            "description": "The ID of the review snippet.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "RotateSigningSecretRequest": {
        "description": "Request message for WebhookService.RotateSigningSecret.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. The ID of the webhook for which to generate a signing secret.\nFormat: `{webhook_id}`",
            "type": "string"
          },
          "revocation_behavior": {
            "description": "Optional. The revocation behavior for previous signing secrets.",
            "type": "string",
            "enum": [
              "revoke_previous_secrets_after_h24",
              "revoke_previous_secrets_immediately"
            ],
            "x-google-enum-descriptions": [
              "Generate a new signing secret and revoke all previous secrets after 24\nhours. Default and safest option for migrations.",
              "Revoke all previous secrets immediately. Use with caution as this can\ninterrupt ongoing notifications."
            ]
          }
        },
        "required": [
          "id"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "RotateSigningSecretResponse": {
        "description": "Response message for WebhookService.RotateSigningSecret.",
        "type": "object",
        "properties": {
          "secret": {
            "description": "Output only. The newly generated signing secret.",
            "type": "string",
            "readOnly": true
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "RunTriggerRequest": {
        "description": "Request message for TriggerService.RunTrigger.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. The ID of the trigger to run immediately.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "SafetySetting": {
        "description": "A safety setting that affects the safety-blocking behavior.\n\nA SafetySetting consists of a\nharm category and a\nthreshold for that\ncategory.",
        "type": "object",
        "properties": {
          "type": {
            "description": "Required. The type of harm category to be blocked.",
            "$ref": "#/components/schemas/HarmCategory"
          },
          "threshold": {
            "description": "Required. The threshold for blocking content. If the harm probability\nexceeds this threshold, the content will be blocked.",
            "type": "string",
            "enum": [
              "block_low_and_above",
              "block_medium_and_above",
              "block_only_high",
              "off"
            ],
            "x-google-enum-descriptions": [
              "Block content with a low harm probability or higher.",
              "Block content with a medium harm probability or higher.",
              "Block content with a high harm probability.",
              "Turn off the safety filter entirely."
            ]
          },
          "method": {
            "description": "Optional. The method for blocking content. If not specified, the default\nbehavior is to use the probability score.",
            "type": "string",
            "enum": [
              "severity",
              "probability"
            ],
            "x-google-enum-descriptions": [
              "The harm block method uses both probability and severity scores.",
              "The harm block method uses the probability score."
            ]
          }
        },
        "required": [
          "threshold",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ServiceTier": {
        "type": "string",
        "enum": [
          "flex",
          "standard",
          "priority"
        ],
        "x-google-enum-descriptions": [
          "Flex service tier.",
          "Standard service tier.",
          "Priority service tier."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "SigningSecret": {
        "description": "Represents a signing secret used to verify webhook payloads.",
        "type": "object",
        "properties": {
          "truncated_secret": {
            "description": "Output only. The truncated version of the signing secret.",
            "type": "string",
            "readOnly": true
          },
          "expire_time": {
            "description": "Output only. The expiration date of the signing secret.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "SmartTranscriptionMode": {
        "description": "Configuration for smart transcription mode.",
        "type": "object",
        "properties": {
          "type": {
            "const": "smart"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Source": {
        "description": "A source to be mounted into the environment.",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "gcs",
              "inline",
              "repository"
            ],
            "x-google-enum-descriptions": [
              "A Cloud Storage bucket.",
              "Inline content.",
              "A generic repository. The protocol prefix in the source URL\nidentifies the provider (e.g., github://, gcs://)."
            ]
          },
          "source": {
            "description": "The source of the environment.\nFor Cloud Storage, this is the Cloud Storage path.\nFor GitHub, this is the GitHub path.",
            "type": "string"
          },
          "target": {
            "description": "Where the source should appear in the environment.",
            "type": "string"
          },
          "content": {
            "description": "The inline content if `type` is `INLINE`.",
            "type": "string"
          },
          "encoding": {
            "description": "Optional encoding for inline content (e.g. `base64`).",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "SpeakerConfig": {
        "description": "Configuration for multi-speaker and speech generation.",
        "type": "object",
        "properties": {
          "speakers": {
            "description": "Individual speaker configurations.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpeechConfig"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "SpeechAnnotation": {
        "description": "Speech annotation for text content.",
        "type": "object",
        "properties": {
          "type": {
            "const": "speech_metadata"
          },
          "speaker": {
            "description": "The speaker to associate with this turn.",
            "type": "string"
          },
          "style": {
            "description": "Style instruction for the speech synthesis.",
            "type": "string"
          },
          "start_index": {
            "description": "Start of segment of the response that is attributed to this source.\n\nIndex indicates the start of the segment, measured in bytes.",
            "type": "integer",
            "format": "int32"
          },
          "end_index": {
            "description": "End of the attributed segment, exclusive.",
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "SpeechConfig": {
        "description": "The configuration for speech interaction.",
        "type": "object",
        "properties": {
          "voice": {
            "description": "The voice of the speaker.",
            "type": "string"
          },
          "language": {
            "description": "The language of the speech.",
            "type": "string"
          },
          "speaker": {
            "description": "The speaker's name, it should match the speaker name given in the prompt.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "StaticMediaProcessing": {
        "type": "object",
        "properties": {
          "type": {
            "const": "static"
          },
          "start_offset": {
            "description": "Optional. Segment start time. Specified as a decimal number of seconds followed\nby an 's' suffix, e.g., \"10.5s\". Must be non-negative.",
            "type": "string",
            "format": "google-duration"
          },
          "end_offset": {
            "description": "Optional. Segment end time. Specified as a decimal number of seconds followed\nby an 's' suffix, e.g., \"30s\". Must be non-negative and greater than\n`start_offset` if `start_offset` is set.",
            "type": "string",
            "format": "google-duration"
          },
          "fps": {
            "description": "Optional. Video frame-rate sampling density.",
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Step": {
        "description": "A step in the interaction.",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/CodeExecutionCallStep"
          },
          {
            "$ref": "#/components/schemas/CodeExecutionResultStep"
          },
          {
            "$ref": "#/components/schemas/FileSearchCallStep"
          },
          {
            "$ref": "#/components/schemas/FileSearchResultStep"
          },
          {
            "$ref": "#/components/schemas/FunctionCallStep"
          },
          {
            "$ref": "#/components/schemas/FunctionResultStep"
          },
          {
            "$ref": "#/components/schemas/GoogleMapsCallStep"
          },
          {
            "$ref": "#/components/schemas/GoogleMapsResultStep"
          },
          {
            "$ref": "#/components/schemas/GoogleSearchCallStep"
          },
          {
            "$ref": "#/components/schemas/GoogleSearchResultStep"
          },
          {
            "$ref": "#/components/schemas/McpServerToolCallStep"
          },
          {
            "$ref": "#/components/schemas/McpServerToolResultStep"
          },
          {
            "$ref": "#/components/schemas/ModelOutputStep"
          },
          {
            "$ref": "#/components/schemas/ProcessingCallStep"
          },
          {
            "$ref": "#/components/schemas/ProcessingResultStep"
          },
          {
            "$ref": "#/components/schemas/ThoughtStep"
          },
          {
            "$ref": "#/components/schemas/UrlContextCallStep"
          },
          {
            "$ref": "#/components/schemas/UrlContextResultStep"
          },
          {
            "$ref": "#/components/schemas/UserInputStep"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "StepDelta": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "delta": {
            "$ref": "#/components/schemas/StepDeltaData"
          },
          "event_type": {
            "const": "step.delta"
          },
          "event_id": {
            "description": "The event_id token to be used to resume the interaction stream, from\nthis event.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/StepDeltaMetadata"
          }
        },
        "required": [
          "delta",
          "event_type",
          "index"
        ],
        "examples": [
          {
            "step_delta": {
              "summary": "Step Delta",
              "value": {
                "delta": {
                  "type": "text",
                  "text": "Hello"
                },
                "event_type": "step.delta",
                "index": 0
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "StepDeltaData": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ArgumentsDelta"
          },
          {
            "$ref": "#/components/schemas/AudioDelta"
          },
          {
            "$ref": "#/components/schemas/CodeExecutionCallDelta"
          },
          {
            "$ref": "#/components/schemas/CodeExecutionResultDelta"
          },
          {
            "$ref": "#/components/schemas/DocumentDelta"
          },
          {
            "$ref": "#/components/schemas/FileSearchCallDelta"
          },
          {
            "$ref": "#/components/schemas/FileSearchResultDelta"
          },
          {
            "$ref": "#/components/schemas/FunctionResultDelta"
          },
          {
            "$ref": "#/components/schemas/GoogleMapsCallDelta"
          },
          {
            "$ref": "#/components/schemas/GoogleMapsResultDelta"
          },
          {
            "$ref": "#/components/schemas/GoogleSearchCallDelta"
          },
          {
            "$ref": "#/components/schemas/GoogleSearchResultDelta"
          },
          {
            "$ref": "#/components/schemas/ImageDelta"
          },
          {
            "$ref": "#/components/schemas/McpServerToolCallDelta"
          },
          {
            "$ref": "#/components/schemas/McpServerToolResultDelta"
          },
          {
            "$ref": "#/components/schemas/ProcessingCallDelta"
          },
          {
            "$ref": "#/components/schemas/ProcessingResultDelta"
          },
          {
            "$ref": "#/components/schemas/TextAnnotationDelta"
          },
          {
            "$ref": "#/components/schemas/TextDelta"
          },
          {
            "$ref": "#/components/schemas/ThoughtSignatureDelta"
          },
          {
            "$ref": "#/components/schemas/ThoughtSummaryDelta"
          },
          {
            "$ref": "#/components/schemas/UrlContextCallDelta"
          },
          {
            "$ref": "#/components/schemas/UrlContextResultDelta"
          },
          {
            "$ref": "#/components/schemas/VideoDelta"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "StepDeltaMetadata": {
        "description": "Optional metadata accompanying ANY streamed event.",
        "type": "object",
        "properties": {
          "total_usage": {
            "description": "Statistics on the interaction request's token usage.",
            "$ref": "#/components/schemas/Usage"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "StepStart": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "step": {
            "$ref": "#/components/schemas/Step"
          },
          "event_type": {
            "const": "step.start"
          },
          "event_id": {
            "description": "The event_id token to be used to resume the interaction stream, from\nthis event.",
            "type": "string"
          }
        },
        "required": [
          "event_type",
          "index",
          "step"
        ],
        "examples": [
          {
            "step_start": {
              "summary": "Step Start",
              "value": {
                "event_type": "step.start",
                "index": 0,
                "step": {
                  "type": "model_output"
                }
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "StepStop": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "event_type": {
            "const": "step.stop"
          },
          "usage": {
            "description": "Cumulative model usage stats from the start of the session.",
            "$ref": "#/components/schemas/Usage"
          },
          "step_usage": {
            "description": "Model usage stats for this specific step.",
            "$ref": "#/components/schemas/Usage"
          },
          "event_id": {
            "description": "The event_id token to be used to resume the interaction stream, from\nthis event.",
            "type": "string"
          }
        },
        "required": [
          "event_type",
          "index"
        ],
        "examples": [
          {
            "step_stop": {
              "summary": "Step Stop",
              "value": {
                "event_type": "step.stop",
                "index": 0
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "TextAnnotationDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "text_annotation_delta"
          },
          "annotations": {
            "description": "Citation information for model-generated content.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Annotation"
            }
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "TextContent": {
        "description": "A text content block.",
        "type": "object",
        "properties": {
          "text": {
            "description": "Required. The text content.",
            "type": "string"
          },
          "type": {
            "const": "text"
          },
          "annotations": {
            "description": "Citation information for model-generated content.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Annotation"
            }
          }
        },
        "required": [
          "text",
          "type"
        ],
        "examples": [
          {
            "text": {
              "summary": "Text",
              "value": {
                "type": "text",
                "text": "Hello, how are you?"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "TextDelta": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "type": {
            "const": "text"
          }
        },
        "required": [
          "text",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "TextResponseFormat": {
        "description": "Configuration for text output format.",
        "type": "object",
        "properties": {
          "type": {
            "const": "text"
          },
          "mime_type": {
            "description": "The MIME type of the text output.",
            "type": "string",
            "enum": [
              "application/json",
              "text/plain"
            ],
            "x-google-enum-descriptions": [
              "JSON output format.",
              "Plain text output format."
            ]
          },
          "schema": {
            "description": "The JSON schema that the output should conform to. Only applicable when\nmime_type is application/json.\n\nSupports a subset of JSON Schema. `minLength`, `maxLength`,\n`minProperties`, `maxProperties`, `uniqueItems`, `contains`,\n`minContains`, and `maxContains` are ignored and not enforced; validate\nthese in your application. `minItems` and `maxItems` are enforced. Schemas\nthat are too complex to enforce (for example, large `maxItems` on nested\narrays) return a 400 INVALID_ARGUMENT error.",
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object."
            }
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "text_response_format": {
              "summary": "Text Output (JSON Schema)",
              "value": {
                "type": "text",
                "mime_type": "application/json",
                "schema": {
                  "type": "object",
                  "properties": {
                    "ingredients": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "recipe_name": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ingredients",
                    "recipe_name"
                  ]
                }
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ThinkingLevel": {
        "type": "string",
        "enum": [
          "minimal",
          "low",
          "medium",
          "high"
        ],
        "x-google-enum-descriptions": [
          "Little to no thinking.",
          "Low thinking level.",
          "Medium thinking level.",
          "High thinking level."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ThinkingSummaries": {
        "type": "string",
        "enum": [
          "auto",
          "none"
        ],
        "x-google-enum-descriptions": [
          "Auto thinking summaries.",
          "No thinking summaries."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ThoughtSignatureDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "thought_signature"
          },
          "signature": {
            "description": "Signature to match the backend source to be part of the generation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ThoughtStep": {
        "description": "A thought step.",
        "type": "object",
        "properties": {
          "type": {
            "const": "thought"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "summary": {
            "description": "A summary of the thought.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Content"
            }
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "thought": {
              "summary": "ThoughtStep",
              "value": {
                "type": "thought",
                "signature": "thought_sig_abcd1234",
                "summary": [
                  {
                    "type": "text",
                    "text": "The model is searching Google for the capital of France."
                  }
                ]
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ThoughtSummaryContent": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ImageContent"
          },
          {
            "$ref": "#/components/schemas/TextContent"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ThoughtSummaryDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "thought_summary"
          },
          "content": {
            "description": "A new summary item to be added to the thought.",
            "$ref": "#/components/schemas/Content"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Tool": {
        "description": "A tool that can be used by the model.",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/CodeExecution"
          },
          {
            "$ref": "#/components/schemas/ComputerUse"
          },
          {
            "$ref": "#/components/schemas/FileSearch"
          },
          {
            "$ref": "#/components/schemas/Function"
          },
          {
            "$ref": "#/components/schemas/GoogleMaps"
          },
          {
            "$ref": "#/components/schemas/GoogleSearch"
          },
          {
            "$ref": "#/components/schemas/McpServer"
          },
          {
            "$ref": "#/components/schemas/UrlContext"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "ToolChoiceConfig": {
        "description": "The tool choice configuration containing allowed tools.",
        "type": "object",
        "properties": {
          "allowed_tools": {
            "description": "The allowed tools.",
            "$ref": "#/components/schemas/AllowedTools"
          }
        },
        "example": {
          "allowed_tools": {
            "mode": "any",
            "tools": [
              "my_tool"
            ]
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "TranscriptionConfig": {
        "description": "Configuration for speech recognition (transcription).",
        "type": "object",
        "properties": {
          "mode": {
            "description": "Discriminated transcription mode options or enum.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/TranscriptionMode"
              },
              {
                "type": "string",
                "enum": [
                  "verbatim",
                  "smart"
                ],
                "x-google-enum-descriptions": [
                  "Verbatim transcription mode.",
                  "Smart transcription mode."
                ]
              }
            ]
          },
          "language_codes": {
            "description": "Optional. BCP-47 language codes providing hints about the languages present in the\naudio. If omitted or empty, defaults to automatic language detection.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "custom_vocabulary": {
            "description": "Optional. A list of custom vocabulary phrases to bias the speech recognition model\ntoward recognizing specific terms.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timestamp_granularities": {
            "description": "Optional. The granularity of timestamps to include in the transcription output.\nSupported values: \"word\". If empty, no timestamps are generated.",
            "type": "array",
            "deprecated": true,
            "items": {
              "type": "string"
            }
          },
          "diarization_mode": {
            "description": "Optional. Configures speaker diarization. Supported values: \"speaker\".",
            "type": "string",
            "deprecated": true
          },
          "adaptation_phrases": {
            "description": "Optional. A list of phrases to bias the ASR model towards.",
            "type": "array",
            "deprecated": true,
            "items": {
              "type": "string"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "TranscriptionMode": {
        "description": "Configuration for transcription mode.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SmartTranscriptionMode"
          },
          {
            "$ref": "#/components/schemas/VerbatimTranscriptionMode"
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Trigger": {
        "description": "A trigger configuration that is scheduled to run an agent.",
        "type": "object",
        "properties": {
          "schedule": {
            "description": "Required. The cron schedule on which the trigger should run.\nStandard cron format.",
            "type": "string"
          },
          "time_zone": {
            "description": "Required. Time zone in which the schedule should be interpreted.",
            "type": "string"
          },
          "interaction": {
            "description": "Required. The interaction request template to be executed.",
            "$ref": "#/components/schemas/CreateAgentInteractionParams"
          },
          "id": {
            "description": "Required. Output only. Identifier. The ID of the trigger.",
            "type": "string",
            "readOnly": true,
            "x-google-identifier": true
          },
          "display_name": {
            "description": "Optional. The display name of the trigger.",
            "type": "string"
          },
          "environment_id": {
            "description": "Optional. The environment ID for the trigger execution.",
            "type": "string"
          },
          "max_consecutive_failures": {
            "description": "Optional. The maximum number of consecutive failures allowed before\nthe trigger is automatically paused (status becomes ERROR).",
            "type": "integer",
            "format": "int32"
          },
          "execution_timeout_seconds": {
            "description": "Optional. The execution timeout for the triggered interaction.",
            "type": "integer",
            "format": "int32"
          },
          "consecutive_failure_count": {
            "description": "Output only. The number of consecutive failures that have occurred\nsince the last successful execution.",
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "create_time": {
            "description": "Output only. The time when the trigger was created.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "update_time": {
            "description": "Output only. The time when the trigger was last updated.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "last_run_time": {
            "description": "Output only. The time when the trigger was last run.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "next_run_time": {
            "description": "Output only. The time when the trigger is scheduled to run next.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "last_pause_time": {
            "description": "Output only. The time when the trigger was last paused.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "last_resume_time": {
            "description": "Output only. The time when the trigger was last resumed.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "previous_interaction_id": {
            "description": "Output only. The ID of the last interaction created by this trigger.",
            "type": "string",
            "readOnly": true
          },
          "status": {
            "description": "Output only. The current status of the trigger.",
            "type": "string",
            "enum": [
              "active",
              "paused",
              "error"
            ],
            "readOnly": true,
            "x-google-enum-descriptions": [
              "The trigger is active and will fire on schedule.",
              "The trigger is paused and will not fire.",
              "The trigger has entered an error state due to consecutive failures."
            ]
          }
        },
        "required": [
          "id",
          "interaction",
          "schedule",
          "time_zone"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "TriggerExecution": {
        "description": "An execution instance of a trigger.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Required. Output only. Identifier. The ID of the trigger execution.",
            "type": "string",
            "readOnly": true,
            "x-google-identifier": true
          },
          "trigger_id": {
            "description": "Required. Output only. Identifier. The ID of the trigger that created this execution.",
            "type": "string",
            "readOnly": true,
            "x-google-identifier": true
          },
          "scheduled_time": {
            "description": "Output only. The time when the execution was scheduled to run.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "start_time": {
            "description": "Output only. The time when the execution started.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "end_time": {
            "description": "Output only. The time when the execution finished.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "status": {
            "description": "Output only. The status of the execution.",
            "type": "string",
            "enum": [
              "in_progress",
              "completed",
              "failed",
              "skipped",
              "timed_out"
            ],
            "readOnly": true,
            "x-google-enum-descriptions": [
              "The execution is currently in progress.",
              "The execution completed successfully.",
              "The execution failed.",
              "The execution was skipped (e.g., previous execution still running).",
              "The execution timed out."
            ]
          },
          "interaction_id": {
            "description": "Output only. The ID of the interaction created by this execution, if any.",
            "type": "string",
            "readOnly": true
          },
          "environment_id": {
            "description": "Output only. The environment ID used for the execution.",
            "type": "string",
            "readOnly": true
          },
          "error": {
            "description": "Output only. The error message if the execution failed.",
            "type": "string",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "trigger_id"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "TriggerUpdate": {
        "description": "Represents the fields of a Trigger that can be updated.",
        "type": "object",
        "properties": {
          "status": {
            "description": "Optional. The status of the trigger.",
            "type": "string",
            "enum": [
              "active",
              "paused",
              "error"
            ],
            "x-google-enum-descriptions": [
              "The trigger is active and will fire on schedule.",
              "The trigger is paused and will not fire.",
              "The trigger has entered an error state due to consecutive failures."
            ]
          },
          "display_name": {
            "description": "Optional. The display name of the trigger.",
            "type": "string"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "UpdateTriggerRequest": {
        "description": "Request message for TriggerService.UpdateTrigger.",
        "type": "object",
        "properties": {
          "trigger": {
            "description": "Required. The trigger to update.",
            "$ref": "#/components/schemas/TriggerUpdate"
          },
          "id": {
            "description": "Required. The ID of the trigger to update.",
            "type": "string"
          },
          "update_mask": {
            "description": "Optional. The update mask applies to the resource.",
            "type": "string",
            "format": "google-fieldmask",
            "pattern": "^(\\s*[^,\\s.]+(\\s*[,.]\\s*[^,\\s.]+)*)?$"
          }
        },
        "required": [
          "id",
          "trigger"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "UpdateWebhookRequest": {
        "description": "Request message for WebhookService.UpdateWebhook.",
        "type": "object",
        "properties": {
          "webhook": {
            "description": "Required. The webhook to update.",
            "$ref": "#/components/schemas/WebhookUpdate"
          },
          "id": {
            "description": "Required. The ID of the webhook to update.",
            "type": "string"
          },
          "update_mask": {
            "description": "Optional. The list of fields to update.",
            "type": "string",
            "format": "google-fieldmask",
            "pattern": "^(\\s*[^,\\s.]+(\\s*[,.]\\s*[^,\\s.]+)*)?$"
          }
        },
        "required": [
          "id",
          "webhook"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "UploadEnvironmentFileRequest": {
        "description": "Request for `UploadEnvironmentFile`.",
        "type": "object",
        "properties": {
          "overwrite": {
            "description": "Optional. Whether to overwrite the destination file if it already exists.",
            "type": "boolean"
          },
          "extract": {
            "description": "Optional. If true, treats the uploaded file as a tar/tar.gz archive and\nunpacks it into `path`.",
            "type": "boolean"
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "UploadEnvironmentFileResponse": {
        "description": "Response for `UploadEnvironmentFile`.",
        "type": "object",
        "properties": {
          "files": {
            "description": "List of files created or extracted in the environment.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnvironmentFile"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "UrlCitation": {
        "description": "A URL citation annotation.",
        "type": "object",
        "properties": {
          "type": {
            "const": "url_citation"
          },
          "url": {
            "description": "The URL.",
            "type": "string"
          },
          "title": {
            "description": "The title of the URL.",
            "type": "string"
          },
          "start_index": {
            "description": "Start of segment of the response that is attributed to this source.\n\nIndex indicates the start of the segment, measured in bytes.",
            "type": "integer",
            "format": "int32"
          },
          "end_index": {
            "description": "End of the attributed segment, exclusive.",
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "URLCitation"
      },
      "UrlContext": {
        "description": "A tool that can be used by the model to fetch URL context.",
        "type": "object",
        "properties": {
          "type": {
            "const": "url_context"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "URLContext",
        "x-codeSamples": [
          {
            "label": "url_context",
            "lang": "sh",
            "source": "curl -X POST https://generativelanguage.googleapis.com/v1beta/interactions \\\n  -H \"x-goog-api-key: $GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gemini-flash-latest\",\n    \"tools\": [{\n      \"type\": \"url_context\"\n    }],\n    \"input\": \"Summarize https://www.example.com\"\n  }'\n"
          },
          {
            "label": "url_context",
            "lang": "python",
            "source": "from google import genai\n\nclient = genai.Client()\nresponse = client.interactions.create(\n    model=\"gemini-flash-latest\",\n    tools=[{\"type\": \"url_context\"}],\n    input=\"Summarize https://www.example.com\",\n)\nprint(response.output_text)\n"
          },
          {
            "label": "url_context",
            "lang": "javascript",
            "source": "import {GoogleGenAI} from '@google/genai';\n\nconst ai = new GoogleGenAI({});\nconst interaction = await ai.interactions.create({\n  model: 'gemini-flash-latest',\n  tools: [{type: 'url_context'}],\n  input: 'Summarize https://www.example.com',\n});\nconsole.log(interaction.output_text);\n"
          },
          {
            "label": "url_context",
            "lang": "java",
            "source": "import com.google.genai.Client;\nimport com.google.genai.gaos.models.operations.CreateInteractionRequestBody;\nimport com.google.genai.gaos.models.operations.CreateInteractionResponse;\nimport com.google.genai.gaos.models.interactions.CreateModelInteraction;\nimport com.google.genai.gaos.models.interactions.Interaction;\nimport com.google.genai.gaos.models.interactions.InteractionsInput;\nimport com.google.genai.gaos.models.interactions.URLContext;\n\nClient client = new Client();\nCreateModelInteraction params =\n    CreateModelInteraction.builder()\n        .model(\"gemini-flash-latest\")\n        .tools(List.of(new URLContext()))\n        .input(InteractionsInput.of(\"Summarize https://www.example.com\"))\n        .build();\nCreateInteractionResponse response =\n    client.interactions.create(CreateInteractionRequestBody.of(params));\nInteraction interaction =\n    response.interaction().orElseThrow(() -> new RuntimeException(\"No interaction returned\"));\nSystem.out.println(interaction.outputText().orElse(\"\"));\n"
          },
          {
            "label": "url_context",
            "lang": "go",
            "source": "package main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n    \"google.golang.org/genai\"\n    gaos_interactions \"google.golang.org/genai/interactions/models/interactions\"\n    \"google.golang.org/genai/interactions/models/operations\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client, err := genai.NewClient(ctx, nil)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    tool := gaos_interactions.NewTool(gaos_interactions.URLContext{})\n\n    body := operations.NewCreateInteractionRequestBody(gaos_interactions.CreateModelInteraction{\n        Model: gaos_interactions.Model(\"gemini-flash-latest\"),\n        Input: genai.Ptr(gaos_interactions.NewInteractionsInput(\"Summarize https://www.example.com\")),\n        Tools: []gaos_interactions.Tool{tool},\n    })\n\n    req := operations.CreateInteractionRequest{\n        Body: body,\n    }\n\n    res, err := client.Interactions.Create(ctx, req)\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    if res.Interaction != nil && res.Interaction.OutputText != nil {\n        fmt.Println(*res.Interaction.OutputText)\n    }\n}\n"
          }
        ]
      },
      "UrlContextCallArguments": {
        "description": "The arguments to pass to the URL context.",
        "type": "object",
        "properties": {
          "urls": {
            "description": "The URLs to fetch.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "URLContextCallArguments"
      },
      "UrlContextCallDelta": {
        "type": "object",
        "properties": {
          "arguments": {
            "$ref": "#/components/schemas/UrlContextCallArguments"
          },
          "type": {
            "const": "url_context_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "arguments",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "URLContextCallDelta"
      },
      "UrlContextCallStep": {
        "description": "URL context call step.",
        "type": "object",
        "properties": {
          "arguments": {
            "description": "Required. The arguments to pass to the URL context.",
            "$ref": "#/components/schemas/UrlContextCallArguments"
          },
          "id": {
            "description": "Required. A unique ID for this specific tool call.",
            "type": "string"
          },
          "type": {
            "const": "url_context_call"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "arguments",
          "id",
          "type"
        ],
        "examples": [
          {
            "url_context_call": {
              "summary": "UrlContextCallStep",
              "value": {
                "type": "url_context_call",
                "arguments": {
                  "urls": [
                    "https://www.example.com"
                  ]
                },
                "id": "url_call_10219"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "URLContextCallStep"
      },
      "UrlContextResult": {
        "description": "The result of the URL context.",
        "type": "object",
        "properties": {
          "url": {
            "description": "The URL that was fetched.",
            "type": "string"
          },
          "status": {
            "description": "The status of the URL retrieval.",
            "type": "string",
            "enum": [
              "success",
              "error",
              "paywall",
              "unsafe"
            ],
            "x-google-enum-descriptions": [
              "Url retrieval is successful.",
              "Url retrieval is failed due to error.",
              "Url retrieval is failed because the content is behind paywall.",
              "Url retrieval is failed because the content is unsafe."
            ]
          }
        },
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "URLContextResult"
      },
      "UrlContextResultDelta": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UrlContextResult"
            }
          },
          "type": {
            "const": "url_context_result"
          },
          "is_error": {
            "type": "boolean"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "result",
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "URLContextResultDelta"
      },
      "UrlContextResultStep": {
        "description": "URL context result step.",
        "type": "object",
        "properties": {
          "result": {
            "description": "Required. The results of the URL context.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UrlContextResult"
            }
          },
          "call_id": {
            "description": "Required. ID to match the ID from the function call block.",
            "type": "string"
          },
          "type": {
            "const": "url_context_result"
          },
          "is_error": {
            "description": "Whether the URL context resulted in an error.",
            "type": "boolean"
          },
          "signature": {
            "description": "A signature hash for backend validation.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          }
        },
        "required": [
          "call_id",
          "result",
          "type"
        ],
        "examples": [
          {
            "url_context_result": {
              "summary": "UrlContextResultStep",
              "value": {
                "type": "url_context_result",
                "call_id": "url_call_10219",
                "result": [
                  {
                    "title": "Example Domain",
                    "url": "https://www.example.com",
                    "snippet": "This domain is for use in illustrative examples in documents."
                  }
                ]
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions",
        "x-speakeasy-name-override": "URLContextResultStep"
      },
      "Usage": {
        "description": "Statistics on the interaction request's token usage.",
        "type": "object",
        "properties": {
          "total_input_tokens": {
            "description": "Number of tokens in the prompt (context).",
            "type": "integer",
            "format": "int32"
          },
          "input_tokens_by_modality": {
            "description": "A breakdown of input token usage by modality.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModalityTokens"
            }
          },
          "total_cached_tokens": {
            "description": "Number of tokens in the cached part of the prompt (the cached content).",
            "type": "integer",
            "format": "int32"
          },
          "cached_tokens_by_modality": {
            "description": "A breakdown of cached token usage by modality.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModalityTokens"
            }
          },
          "total_output_tokens": {
            "description": "Total number of tokens across all the generated responses.",
            "type": "integer",
            "format": "int32"
          },
          "output_tokens_by_modality": {
            "description": "A breakdown of output token usage by modality.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModalityTokens"
            }
          },
          "total_tool_use_tokens": {
            "description": "Number of tokens present in tool-use prompt(s).",
            "type": "integer",
            "format": "int32"
          },
          "tool_use_tokens_by_modality": {
            "description": "A breakdown of tool-use token usage by modality.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModalityTokens"
            }
          },
          "total_thought_tokens": {
            "description": "Number of tokens of thoughts for thinking models.",
            "type": "integer",
            "format": "int32"
          },
          "total_tokens": {
            "description": "Total token count for the interaction request (prompt + responses + other\ninternal tokens).",
            "type": "integer",
            "format": "int32"
          },
          "grounding_tool_count": {
            "description": "Grounding tool count.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GroundingToolCount"
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "UserInputStep": {
        "description": "Input provided by the user.",
        "type": "object",
        "properties": {
          "type": {
            "const": "user_input"
          },
          "content": {
            "title": "ContentList",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Content"
            }
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "user_input": {
              "summary": "UserInputStep",
              "value": {
                "type": "user_input",
                "content": [
                  {
                    "type": "text",
                    "text": "What is the capital of France?"
                  }
                ]
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "VerbatimTranscriptionMode": {
        "description": "Configuration for verbatim transcription mode.",
        "type": "object",
        "properties": {
          "type": {
            "const": "verbatim"
          },
          "timestamp_granularities": {
            "description": "Optional. The granularity of timestamps to include in the transcription output.\nSupported values: \"word\". If empty, no timestamps are generated.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "diarization_mode": {
            "description": "Optional. Configures speaker diarization. Supported values: \"speaker\".",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "VideoConfig": {
        "description": "Configuration options for video generation.",
        "type": "object",
        "properties": {
          "task": {
            "description": "Optional task mode for video generation. If not specified, the model\nautomatically determines the appropriate mode based on the provided text\nprompt and input media.",
            "type": "string",
            "enum": [
              "text_to_video",
              "image_to_video",
              "reference_to_video",
              "edit",
              "extend"
            ],
            "x-google-enum-descriptions": [
              "Generates video solely from a text prompt.",
              "Generates video from one or two source images. The first image defines\nthe starting frame, and the optional second image defines the ending\nframe.",
              "Generates video using reference media (such as images, audio, or video).",
              "Modifies an existing input video.",
              "Extends an existing input video."
            ]
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "VideoContent": {
        "description": "A video content block.",
        "type": "object",
        "properties": {
          "type": {
            "const": "video"
          },
          "data": {
            "description": "The video content.",
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "uri": {
            "description": "The URI of the video.",
            "type": "string"
          },
          "processing": {
            "description": "How the model processes this video for understanding.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/MediaProcessing"
              },
              {
                "type": "string",
                "enum": [
                  "static",
                  "agentic"
                ],
                "x-google-enum-descriptions": [
                  "Fixed-rate frame extraction. All frames placed in context.",
                  "Model-driven dynamic navigation."
                ]
              }
            ]
          },
          "resolution": {
            "description": "The resolution of the media.",
            "$ref": "#/components/schemas/MediaResolution"
          },
          "name": {
            "description": "A user-defined name for this content block. Can be referenced by the model\nin the final response.",
            "type": "string"
          },
          "mime_type": {
            "description": "The mime type of the video.",
            "type": "string",
            "enum": [
              "video/mp4",
              "video/mpeg",
              "video/mpg",
              "video/mov",
              "video/avi",
              "video/x-flv",
              "video/webm",
              "video/wmv",
              "video/3gpp"
            ],
            "x-google-enum-descriptions": [
              "MP4 video format",
              "MPEG video format",
              "MPG video format",
              "MOV video format",
              "AVI video format",
              "FLV video format",
              "WebM video format",
              "WMV video format",
              "3GPP video format"
            ]
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "video": {
              "summary": "Video",
              "value": {
                "type": "video",
                "uri": "https://www.youtube.com/watch?v=9hE5-98ZeCg"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "VideoDelta": {
        "type": "object",
        "properties": {
          "type": {
            "const": "video"
          },
          "data": {
            "type": "string",
            "format": "byte",
            "x-speakeasy-base64-input-mode": "file"
          },
          "uri": {
            "type": "string"
          },
          "mime_type": {
            "type": "string",
            "enum": [
              "video/mp4",
              "video/mpeg",
              "video/mpg",
              "video/mov",
              "video/avi",
              "video/x-flv",
              "video/webm",
              "video/wmv",
              "video/3gpp",
              "video/jpeg2000"
            ],
            "x-google-enum-descriptions": [
              "MP4 video format",
              "MPEG video format",
              "MPG video format",
              "MOV video format",
              "AVI video format",
              "FLV video format",
              "WebM video format",
              "WMV video format",
              "3GPP video format",
              "JPEG 2000 video format"
            ]
          },
          "resolution": {
            "description": "The resolution of the media.",
            "$ref": "#/components/schemas/MediaResolution"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "VideoResponseFormat": {
        "description": "Configuration for video output format.",
        "type": "object",
        "properties": {
          "type": {
            "const": "video"
          },
          "delivery": {
            "description": "The delivery mode for the video output.",
            "type": "string",
            "enum": [
              "inline",
              "uri"
            ],
            "x-google-enum-descriptions": [
              "Video data is returned inline in the response.",
              "Video data is returned as a URI."
            ]
          },
          "aspect_ratio": {
            "description": "The aspect ratio for the video output.",
            "type": "string",
            "enum": [
              "16:9",
              "9:16"
            ],
            "x-google-enum-descriptions": [
              "16:9 aspect ratio.",
              "9:16 aspect ratio."
            ]
          },
          "duration": {
            "description": "The duration for the video output.",
            "type": "string",
            "format": "google-duration"
          },
          "resolution": {
            "description": "The video output resolution. Defaults to 720p.",
            "type": "string",
            "enum": [
              "360p",
              "720p",
              "1080p",
              "4k"
            ],
            "x-google-enum-descriptions": [
              "360p resolution.",
              "720p resolution.",
              "1080p resolution.",
              "4K resolution."
            ]
          }
        },
        "required": [
          "type"
        ],
        "examples": [
          {
            "video_response_format": {
              "summary": "Video Output",
              "value": {
                "type": "video",
                "aspect_ratio": "16:9",
                "delivery": "inline"
              }
            }
          }
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Voice": {
        "description": "A voice resource representing either a custom voice (created via\n`CreateVoice`) or a prebuilt system voice (returned by `ListVoices`).",
        "type": "object",
        "properties": {
          "type": {
            "description": "Required. The type of the voice. In `CreateVoice`, must be `\"replicated\"`\nor `\"prompted\"`. In `ListVoices` responses, may also be `\"prebuilt\"`.",
            "$ref": "#/components/schemas/VoiceType"
          },
          "id": {
            "description": "Output only. The unique identifier of the voice.\n\n* For Google-managed custom voices (`store = true`), this is a generated ID\n  with prefix `voice_` (for example, `voice_abc123def456`). Pass\n  `voices/{id}` as the `name` in `GetVoice` and `DeleteVoice`, and pass\n  `{id}` directly to `SpeechConfig.voice_config.voice` (or\n  `SpeechConfig.voice`) during speech synthesis.\n* For prebuilt catalog voices (`\"prebuilt\"` returned by `ListVoices`), this\n  is the speaker name (for example, `Puck` or `Charon`).\n* Unset when `CreateVoice` is called with `store = false`.",
            "type": "string",
            "readOnly": true
          },
          "model": {
            "description": "Optional. The model used to design or replicate the voice.\nIf omitted in `CreateVoice`, defaults to the latest supported voice design\nmodel. Returned in `CreateVoice`, `GetVoice`, and `ListVoices` responses\nfor custom voices (`\"prompted\"` and `\"replicated\"`); unset for `\"prebuilt\"`\nvoices. Created voices can be synthesized across any supported TTS\nsynthesis model.",
            "type": "string"
          },
          "key": {
            "description": "Output only. The client-managed voice replication key (with prefix\n`voicekey_`). Returned only by `CreateVoice` when `type` is `\"replicated\"`\nand `store` is `false`. Pass this key to `SpeechConfig.voice_config.voice`\n(or `SpeechConfig.voice`) during speech synthesis.",
            "type": "string",
            "readOnly": true
          },
          "replicated": {
            "description": "Input only. Parameters for replicated voice generation.\nRequired on input when `type` is `\"replicated\"`. Not returned in\nresponses.",
            "$ref": "#/components/schemas/ReplicatedVoice",
            "writeOnly": true
          },
          "expire_time": {
            "description": "Output only. The timestamp at which a custom stored voice (`store = true`)\nor replicated voice key (`store = false`) expires. For custom stored voices\n(`store = true`), this expiration time is extended when the voice is used\nfor speech synthesis or as a `base_voice` in `CreateVoice`. Unset for\nprebuilt catalog voices (`\"prebuilt\"`), which do not expire.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "display_name": {
            "description": "Optional. User-provided display name for a stored voice (`store = true`),\nor the catalog name for a prebuilt voice.",
            "type": "string"
          },
          "prompted": {
            "description": "Parameters for prompted voice generation.\nRequired in `CreateVoice` when `type` is `\"prompted\"`. Returned in\n`CreateVoice`, `GetVoice`, and `ListVoices` responses for prompted voices.",
            "$ref": "#/components/schemas/PromptedVoice"
          },
          "language_code": {
            "description": "Optional. Primary BCP-47 language tag (e.g. \"en-US\", \"fr-FR\").",
            "type": "string"
          },
          "region_code": {
            "description": "Optional. ISO 3166-1 alpha-2 or UN M.49 geographic region code (e.g. \"US\",\n\"GB\", \"001\").",
            "type": "string"
          },
          "accent": {
            "description": "Optional. Regional accent descriptor (e.g. \"American\", \"British\").",
            "type": "string"
          },
          "persona": {
            "description": "Optional. Intended persona or character archetype (e.g. \"Warm, Friendly\",\n\"Narrator\").",
            "type": "string"
          },
          "context": {
            "description": "Optional. Optimal usage context or domain (e.g. \"Conversational\",\n\"Audiobook\", \"News\").",
            "type": "string"
          },
          "gender": {
            "description": "Optional. Perceived voice gender presentation (e.g. \"female\", \"male\",\n\"neutral\").",
            "type": "string"
          },
          "pitch": {
            "description": "Optional. Voice pitch classification.",
            "$ref": "#/components/schemas/Pitch"
          },
          "description": {
            "description": "Optional. Descriptive summary of vocal timbre, personality, and tone.",
            "type": "string"
          },
          "usage": {
            "description": "Output only. Token usage statistics for the voice creation request.\nPopulated only in the response of `CreateVoice` when `type` is\n`\"prompted\"`; unset for `\"replicated\"` and in `GetVoice` and `ListVoices`\nresponses.",
            "$ref": "#/components/schemas/Usage",
            "readOnly": true
          },
          "sample_audio": {
            "description": "Output only. Sample audio (synthesizer prompt audio) generated for a\nprompted voice.\nPopulated only in `CreateVoice` and `GetVoice` responses when `type` is\n`\"prompted\"`; unset in `ListVoices` responses and for `\"replicated\"` or\n`\"prebuilt\"` voices.",
            "$ref": "#/components/schemas/AudioData",
            "readOnly": true
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "VoiceType": {
        "type": "string",
        "enum": [
          "replicated",
          "prompted",
          "prebuilt"
        ],
        "x-google-enum-descriptions": [
          "A custom voice replicated from a reference audio sample and speaker consent\nrecording.",
          "A custom voice generated from a natural-language text prompt (optionally\nediting or remixing a `base_voice`).",
          "A built-in system voice from Google's voice catalog (e.g., `Puck`,\n`Charon`). Returned in responses; cannot be specified as the type in\n`CreateVoice`."
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "Webhook": {
        "description": "A Webhook resource.",
        "type": "object",
        "properties": {
          "uri": {
            "description": "Required. The URI to which webhook events will be sent.",
            "type": "string"
          },
          "subscribed_events": {
            "description": "Required. The events that the webhook is subscribed to.\nAvailable events:\n- batch.succeeded\n- batch.expired\n- batch.failed\n- interaction.requires_action\n- interaction.completed\n- interaction.failed\n- video.generated",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "name": {
            "description": "Optional. The user-provided name of the webhook.",
            "type": "string"
          },
          "create_time": {
            "description": "Output only. The timestamp when the webhook was created.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "update_time": {
            "description": "Output only. The timestamp when the webhook was last updated.",
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "signing_secrets": {
            "description": "Output only. The signing secrets associated with this webhook.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SigningSecret"
            },
            "readOnly": true
          },
          "state": {
            "description": "Output only. The state of the webhook.",
            "type": "string",
            "enum": [
              "enabled",
              "disabled",
              "disabled_due_to_failed_deliveries"
            ],
            "readOnly": true,
            "x-google-enum-descriptions": [
              "The webhook is enabled.",
              "The webhook is disabled by the user.",
              "The webhook is disabled due to failed deliveries."
            ]
          },
          "new_signing_secret": {
            "description": "Output only. The new signing secret for the webhook. Only populated on create.",
            "type": "string",
            "readOnly": true
          },
          "id": {
            "description": "Output only. The ID of the webhook.",
            "type": "string",
            "readOnly": true
          }
        },
        "required": [
          "subscribed_events",
          "uri"
        ],
        "x-speakeasy-model-namespace": "interactions"
      },
      "WebhookConfig": {
        "description": "Message for configuring webhook events for a request.",
        "type": "object",
        "properties": {
          "uris": {
            "description": "Optional. If set, these webhook URIs will be used for webhook events instead of the\nregistered webhooks.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "user_metadata": {
            "description": "Optional. The user metadata that will be returned on each event emission to the\nwebhooks.",
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object."
            }
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "WebhookUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "description": "Optional. The user-provided name of the webhook.",
            "type": "string"
          },
          "uri": {
            "description": "Optional. The URI to which webhook events will be sent.",
            "type": "string"
          },
          "subscribed_events": {
            "description": "Optional. The events that the webhook is subscribed to.\nAvailable events:\n- batch.succeeded\n- batch.expired\n- batch.failed\n- interaction.requires_action\n- interaction.completed\n- interaction.failed\n- video.generated",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "description": "Optional. The state of the webhook.",
            "type": "string",
            "enum": [
              "enabled",
              "disabled",
              "disabled_due_to_failed_deliveries"
            ],
            "x-google-enum-descriptions": [
              "The webhook is enabled.",
              "The webhook is disabled by the user.",
              "The webhook is disabled due to failed deliveries."
            ]
          }
        },
        "x-speakeasy-model-namespace": "interactions"
      },
      "WordInfo": {
        "description": "Word-level ASR annotation for transcription output.\nCarries the word text, optional timing, and optional speaker attribution.",
        "type": "object",
        "properties": {
          "type": {
            "const": "word_info"
          },
          "text": {
            "description": "The transcribed word.",
            "type": "string"
          },
          "start_offset": {
            "description": "Start offset in time of the word relative to the start of the audio.\nPresent when timestamp_granularities contains \"word\".",
            "type": "string",
            "format": "google-duration"
          },
          "end_offset": {
            "description": "End offset in time of the word relative to the start of the audio.\nPresent when timestamp_granularities contains \"word\".",
            "type": "string",
            "format": "google-duration"
          },
          "speaker": {
            "description": "Optional. Speaker label for this word (e.g. \"spk_1\", \"spk_2\").\nPresent when diarization_mode is set in TranscriptionConfig.",
            "type": "string"
          },
          "start_index": {
            "description": "Start of segment of the response that is attributed to this source.\n\nIndex indicates the start of the segment, measured in bytes.",
            "type": "integer",
            "format": "int32"
          },
          "end_index": {
            "description": "End of the attributed segment, exclusive.",
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "type"
        ],
        "x-speakeasy-model-namespace": "interactions"
      }
    },
    "securitySchemes": {
      "googleGenAIAuth": {
        "type": "http",
        "scheme": "custom",
        "x-speakeasy-custom-security-scheme": {
          "schema": {
            "type": "object",
            "properties": {
              "accessToken": {
                "description": "OAuth access token sent as a bearer Authorization header.",
                "type": "string"
              },
              "apiKey": {
                "description": "Gemini API key sent as x-goog-api-key.",
                "type": "string"
              },
              "defaultHeaders": {
                "description": "Additional default headers to apply before request-specific headers and auth.",
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": []
          }
        }
      }
    }
  },
  "security": [
    {
      "googleGenAIAuth": []
    }
  ],
  "x-speakeasy-globals": {
    "parameters": [
      {
        "$ref": "#/components/parameters/api_version"
      },
      {
        "$ref": "#/components/parameters/google_genai_user_project"
      }
    ]
  },
  "x-speakeasy-retries": {
    "backoff": {
      "exponent": 2,
      "initialInterval": 500,
      "maxElapsedTime": 30000,
      "maxInterval": 8000
    },
    "retryConnectionErrors": true,
    "statusCodes": [
      408,
      409,
      429,
      "5XX"
    ],
    "strategy": "backoff"
  }
}
