1. Packages
  2. Packages
  3. Google Cloud (GCP) Classic
  4. API Docs
  5. vertex
  6. AiReasoningEngine
Viewing docs for Google Cloud v9.23.0
published on Thursday, May 7, 2026 by Pulumi
gcp logo
Viewing docs for Google Cloud v9.23.0
published on Thursday, May 7, 2026 by Pulumi

    ReasoningEngine provides a customizable runtime for models to determine which actions to take and in which order.

    To get more information about ReasoningEngine, see:

    Example Usage

    Vertex Ai Reasoning Engine Source Based Deployment

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    import * as std from "@pulumi/std";
    
    const reasoningEngine = new gcp.vertex.AiReasoningEngine("reasoning_engine", {
        displayName: "reasoning-engine",
        description: "A basic reasoning engine",
        region: "us-central1",
        spec: {
            sourceCodeSpec: {
                inlineSource: {
                    sourceArchive: std.filebase64({
                        input: "./test-fixtures/source.tar.gz",
                    }).then(invoke => invoke.result),
                },
                pythonSpec: {
                    entrypointModule: "simple_agent",
                    entrypointObject: "fixed_name_generator",
                    version: "3.14",
                },
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    import pulumi_std as std
    
    reasoning_engine = gcp.vertex.AiReasoningEngine("reasoning_engine",
        display_name="reasoning-engine",
        description="A basic reasoning engine",
        region="us-central1",
        spec={
            "source_code_spec": {
                "inline_source": {
                    "source_archive": std.filebase64(input="./test-fixtures/source.tar.gz").result,
                },
                "python_spec": {
                    "entrypoint_module": "simple_agent",
                    "entrypoint_object": "fixed_name_generator",
                    "version": "3.14",
                },
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/vertex"
    	"github.com/pulumi/pulumi-std/sdk/go/std"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		invokeFilebase64, err := std.Filebase64(ctx, &std.Filebase64Args{
    			Input: "./test-fixtures/source.tar.gz",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = vertex.NewAiReasoningEngine(ctx, "reasoning_engine", &vertex.AiReasoningEngineArgs{
    			DisplayName: pulumi.String("reasoning-engine"),
    			Description: pulumi.String("A basic reasoning engine"),
    			Region:      pulumi.String("us-central1"),
    			Spec: &vertex.AiReasoningEngineSpecArgs{
    				SourceCodeSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecArgs{
    					InlineSource: &vertex.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs{
    						SourceArchive: pulumi.String(invokeFilebase64.Result),
    					},
    					PythonSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs{
    						EntrypointModule: pulumi.String("simple_agent"),
    						EntrypointObject: pulumi.String("fixed_name_generator"),
    						Version:          pulumi.String("3.14"),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    using Std = Pulumi.Std;
    
    return await Deployment.RunAsync(() => 
    {
        var reasoningEngine = new Gcp.Vertex.AiReasoningEngine("reasoning_engine", new()
        {
            DisplayName = "reasoning-engine",
            Description = "A basic reasoning engine",
            Region = "us-central1",
            Spec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecArgs
            {
                SourceCodeSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecArgs
                {
                    InlineSource = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs
                    {
                        SourceArchive = Std.Index.Filebase64.Invoke(new()
                        {
                            Input = "./test-fixtures/source.tar.gz",
                        }).Apply(invoke => invoke.Result),
                    },
                    PythonSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs
                    {
                        EntrypointModule = "simple_agent",
                        EntrypointObject = "fixed_name_generator",
                        Version = "3.14",
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.vertex.AiReasoningEngine;
    import com.pulumi.gcp.vertex.AiReasoningEngineArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs;
    import com.pulumi.std.StdFunctions;
    import com.pulumi.std.inputs.Filebase64Args;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var reasoningEngine = new AiReasoningEngine("reasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("reasoning-engine")
                .description("A basic reasoning engine")
                .region("us-central1")
                .spec(AiReasoningEngineSpecArgs.builder()
                    .sourceCodeSpec(AiReasoningEngineSpecSourceCodeSpecArgs.builder()
                        .inlineSource(AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs.builder()
                            .sourceArchive(StdFunctions.filebase64(Filebase64Args.builder()
                                .input("./test-fixtures/source.tar.gz")
                                .build()).result())
                            .build())
                        .pythonSpec(AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs.builder()
                            .entrypointModule("simple_agent")
                            .entrypointObject("fixed_name_generator")
                            .version("3.14")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      reasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: reasoning_engine
        properties:
          displayName: reasoning-engine
          description: A basic reasoning engine
          region: us-central1
          spec:
            sourceCodeSpec:
              inlineSource:
                sourceArchive:
                  fn::invoke:
                    function: std:filebase64
                    arguments:
                      input: ./test-fixtures/source.tar.gz
                    return: result
              pythonSpec:
                entrypointModule: simple_agent
                entrypointObject: fixed_name_generator
                version: '3.14'
    
    Example coming soon!
    

    Vertex Ai Reasoning Engine Developer Connect Source

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const project = gcp.organizations.getProject({});
    const reasoningEngine = new gcp.vertex.AiReasoningEngine("reasoning_engine", {
        displayName: "reasoning-engine",
        description: "A basic reasoning engine",
        region: "us-central1",
        spec: {
            sourceCodeSpec: {
                developerConnectSource: {
                    config: {
                        gitRepositoryLink: project.then(project => `projects/${project.projectId}/locations/us-central1/connections/tpg-test-bot-github/gitRepositoryLinks/tpg-test-vertex-reasoning`),
                        dir: "source",
                        revision: "main",
                    },
                },
                pythonSpec: {
                    version: "3.14",
                    entrypointModule: "simple_agent",
                    entrypointObject: "fixed_name_generator",
                },
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    project = gcp.organizations.get_project()
    reasoning_engine = gcp.vertex.AiReasoningEngine("reasoning_engine",
        display_name="reasoning-engine",
        description="A basic reasoning engine",
        region="us-central1",
        spec={
            "source_code_spec": {
                "developer_connect_source": {
                    "config": {
                        "git_repository_link": f"projects/{project.project_id}/locations/us-central1/connections/tpg-test-bot-github/gitRepositoryLinks/tpg-test-vertex-reasoning",
                        "dir": "source",
                        "revision": "main",
                    },
                },
                "python_spec": {
                    "version": "3.14",
                    "entrypoint_module": "simple_agent",
                    "entrypoint_object": "fixed_name_generator",
                },
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/vertex"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = vertex.NewAiReasoningEngine(ctx, "reasoning_engine", &vertex.AiReasoningEngineArgs{
    			DisplayName: pulumi.String("reasoning-engine"),
    			Description: pulumi.String("A basic reasoning engine"),
    			Region:      pulumi.String("us-central1"),
    			Spec: &vertex.AiReasoningEngineSpecArgs{
    				SourceCodeSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecArgs{
    					DeveloperConnectSource: &vertex.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceArgs{
    						Config: &vertex.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfigArgs{
    							GitRepositoryLink: pulumi.Sprintf("projects/%v/locations/us-central1/connections/tpg-test-bot-github/gitRepositoryLinks/tpg-test-vertex-reasoning", project.ProjectId),
    							Dir:               pulumi.String("source"),
    							Revision:          pulumi.String("main"),
    						},
    					},
    					PythonSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs{
    						Version:          pulumi.String("3.14"),
    						EntrypointModule: pulumi.String("simple_agent"),
    						EntrypointObject: pulumi.String("fixed_name_generator"),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var project = Gcp.Organizations.GetProject.Invoke();
    
        var reasoningEngine = new Gcp.Vertex.AiReasoningEngine("reasoning_engine", new()
        {
            DisplayName = "reasoning-engine",
            Description = "A basic reasoning engine",
            Region = "us-central1",
            Spec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecArgs
            {
                SourceCodeSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecArgs
                {
                    DeveloperConnectSource = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceArgs
                    {
                        Config = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfigArgs
                        {
                            GitRepositoryLink = $"projects/{project.Apply(getProjectResult => getProjectResult.ProjectId)}/locations/us-central1/connections/tpg-test-bot-github/gitRepositoryLinks/tpg-test-vertex-reasoning",
                            Dir = "source",
                            Revision = "main",
                        },
                    },
                    PythonSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs
                    {
                        Version = "3.14",
                        EntrypointModule = "simple_agent",
                        EntrypointObject = "fixed_name_generator",
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.organizations.OrganizationsFunctions;
    import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
    import com.pulumi.gcp.vertex.AiReasoningEngine;
    import com.pulumi.gcp.vertex.AiReasoningEngineArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfigArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
                .build());
    
            var reasoningEngine = new AiReasoningEngine("reasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("reasoning-engine")
                .description("A basic reasoning engine")
                .region("us-central1")
                .spec(AiReasoningEngineSpecArgs.builder()
                    .sourceCodeSpec(AiReasoningEngineSpecSourceCodeSpecArgs.builder()
                        .developerConnectSource(AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceArgs.builder()
                            .config(AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfigArgs.builder()
                                .gitRepositoryLink(String.format("projects/%s/locations/us-central1/connections/tpg-test-bot-github/gitRepositoryLinks/tpg-test-vertex-reasoning", project.projectId()))
                                .dir("source")
                                .revision("main")
                                .build())
                            .build())
                        .pythonSpec(AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs.builder()
                            .version("3.14")
                            .entrypointModule("simple_agent")
                            .entrypointObject("fixed_name_generator")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      reasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: reasoning_engine
        properties:
          displayName: reasoning-engine
          description: A basic reasoning engine
          region: us-central1
          spec:
            sourceCodeSpec:
              developerConnectSource:
                config:
                  gitRepositoryLink: projects/${project.projectId}/locations/us-central1/connections/tpg-test-bot-github/gitRepositoryLinks/tpg-test-vertex-reasoning
                  dir: source
                  revision: main
              pythonSpec:
                version: '3.14'
                entrypointModule: simple_agent
                entrypointObject: fixed_name_generator
    variables:
      project:
        fn::invoke:
          function: gcp:organizations:getProject
          arguments: {}
    
    Example coming soon!
    

    Vertex Ai Reasoning Engine Image Spec

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    import * as std from "@pulumi/std";
    
    const reasoningEngine = new gcp.vertex.AiReasoningEngine("reasoning_engine", {
        displayName: "reasoning-engine",
        description: "Deployed with BYOC Dockerfile through Terraform",
        region: "us-central1",
        spec: {
            sourceCodeSpec: {
                inlineSource: {
                    sourceArchive: std.filebase64({
                        input: "./test-fixtures/agent_src.tar.gz",
                    }).then(invoke => invoke.result),
                },
                imageSpec: {
                    buildArgs: {},
                },
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    import pulumi_std as std
    
    reasoning_engine = gcp.vertex.AiReasoningEngine("reasoning_engine",
        display_name="reasoning-engine",
        description="Deployed with BYOC Dockerfile through Terraform",
        region="us-central1",
        spec={
            "source_code_spec": {
                "inline_source": {
                    "source_archive": std.filebase64(input="./test-fixtures/agent_src.tar.gz").result,
                },
                "image_spec": {
                    "build_args": {},
                },
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/vertex"
    	"github.com/pulumi/pulumi-std/sdk/go/std"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		invokeFilebase64, err := std.Filebase64(ctx, &std.Filebase64Args{
    			Input: "./test-fixtures/agent_src.tar.gz",
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = vertex.NewAiReasoningEngine(ctx, "reasoning_engine", &vertex.AiReasoningEngineArgs{
    			DisplayName: pulumi.String("reasoning-engine"),
    			Description: pulumi.String("Deployed with BYOC Dockerfile through Terraform"),
    			Region:      pulumi.String("us-central1"),
    			Spec: &vertex.AiReasoningEngineSpecArgs{
    				SourceCodeSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecArgs{
    					InlineSource: &vertex.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs{
    						SourceArchive: pulumi.String(invokeFilebase64.Result),
    					},
    					ImageSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecImageSpecArgs{
    						BuildArgs: pulumi.StringMap{},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    using Std = Pulumi.Std;
    
    return await Deployment.RunAsync(() => 
    {
        var reasoningEngine = new Gcp.Vertex.AiReasoningEngine("reasoning_engine", new()
        {
            DisplayName = "reasoning-engine",
            Description = "Deployed with BYOC Dockerfile through Terraform",
            Region = "us-central1",
            Spec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecArgs
            {
                SourceCodeSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecArgs
                {
                    InlineSource = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs
                    {
                        SourceArchive = Std.Index.Filebase64.Invoke(new()
                        {
                            Input = "./test-fixtures/agent_src.tar.gz",
                        }).Apply(invoke => invoke.Result),
                    },
                    ImageSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecImageSpecArgs
                    {
                        BuildArgs = null,
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.vertex.AiReasoningEngine;
    import com.pulumi.gcp.vertex.AiReasoningEngineArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecImageSpecArgs;
    import com.pulumi.std.StdFunctions;
    import com.pulumi.std.inputs.Filebase64Args;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var reasoningEngine = new AiReasoningEngine("reasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("reasoning-engine")
                .description("Deployed with BYOC Dockerfile through Terraform")
                .region("us-central1")
                .spec(AiReasoningEngineSpecArgs.builder()
                    .sourceCodeSpec(AiReasoningEngineSpecSourceCodeSpecArgs.builder()
                        .inlineSource(AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs.builder()
                            .sourceArchive(StdFunctions.filebase64(Filebase64Args.builder()
                                .input("./test-fixtures/agent_src.tar.gz")
                                .build()).result())
                            .build())
                        .imageSpec(AiReasoningEngineSpecSourceCodeSpecImageSpecArgs.builder()
                            .buildArgs(Map.ofEntries(
                            ))
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      reasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: reasoning_engine
        properties:
          displayName: reasoning-engine
          description: Deployed with BYOC Dockerfile through Terraform
          region: us-central1
          spec:
            sourceCodeSpec:
              inlineSource:
                sourceArchive:
                  fn::invoke:
                    function: std:filebase64
                    arguments:
                      input: ./test-fixtures/agent_src.tar.gz
                    return: result
              imageSpec:
                buildArgs: {}
    
    Example coming soon!
    

    Vertex Ai Reasoning Engine Byoc

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    import * as std from "@pulumi/std";
    
    const project = gcp.organizations.getProject({});
    const vertexArReader = new gcp.projects.IAMMember("vertex_ar_reader", {
        project: project.then(project => project.projectId),
        role: "roles/artifactregistry.reader",
        member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-aiplatform-re.iam.gserviceaccount.com`),
    });
    // Provision and retrieve the tenant service agent through another agent
    const tenantMdsAiReasoningEngine = new gcp.vertex.AiReasoningEngine("tenant_mds", {
        displayName: "reasoning-engine-mds",
        region: "us-central1",
        spec: {
            sourceCodeSpec: {
                inlineSource: {
                    sourceArchive: std.filebase64({
                        input: "./test-fixtures/mds_agent_src.tar.gz",
                    }).then(invoke => invoke.result),
                },
                pythonSpec: {
                    entrypointModule: "metadata_agent",
                    entrypointObject: "root_agent",
                },
            },
        },
    });
    const tenantMds = gcp.vertex.getAiReasoningEngineQueryOutput({
        region: "us-central1",
        reasoningEngineId: tenantMdsAiReasoningEngine.name,
    });
    const tenantArReader = new gcp.projects.IAMMember("tenant_ar_reader", {
        project: project.then(project => project.projectId),
        role: "roles/artifactregistry.reader",
        member: tenantMds.apply(tenantMds => std.jsondecodeOutput({
            input: tenantMds.output,
        })).apply(invoke => `serviceAccount:${invoke.result?.output}`),
    });
    const reasoningEngine = new gcp.vertex.AiReasoningEngine("reasoning_engine", {
        displayName: "reasoning-engine",
        description: "Deployed with BYOC through Terraform",
        region: "us-central1",
        spec: {
            containerSpec: {
                imageUri: project.then(project => `us-central1-docker.pkg.dev/${project.projectId}/vertex-byoc/byoc-agent:latest`),
            },
        },
    }, {
        dependsOn: [
            vertexArReader,
            tenantArReader,
        ],
    });
    
    import pulumi
    import pulumi_gcp as gcp
    import pulumi_std as std
    
    project = gcp.organizations.get_project()
    vertex_ar_reader = gcp.projects.IAMMember("vertex_ar_reader",
        project=project.project_id,
        role="roles/artifactregistry.reader",
        member=f"serviceAccount:service-{project.number}@gcp-sa-aiplatform-re.iam.gserviceaccount.com")
    # Provision and retrieve the tenant service agent through another agent
    tenant_mds_ai_reasoning_engine = gcp.vertex.AiReasoningEngine("tenant_mds",
        display_name="reasoning-engine-mds",
        region="us-central1",
        spec={
            "source_code_spec": {
                "inline_source": {
                    "source_archive": std.filebase64(input="./test-fixtures/mds_agent_src.tar.gz").result,
                },
                "python_spec": {
                    "entrypoint_module": "metadata_agent",
                    "entrypoint_object": "root_agent",
                },
            },
        })
    tenant_mds = gcp.vertex.get_ai_reasoning_engine_query_output(region="us-central1",
        reasoning_engine_id=tenant_mds_ai_reasoning_engine.name)
    tenant_ar_reader = gcp.projects.IAMMember("tenant_ar_reader",
        project=project.project_id,
        role="roles/artifactregistry.reader",
        member=tenant_mds.apply(lambda tenant_mds: std.jsondecode_output(input=tenant_mds.output)).apply(lambda invoke: f"serviceAccount:{invoke.result['output']}"))
    reasoning_engine = gcp.vertex.AiReasoningEngine("reasoning_engine",
        display_name="reasoning-engine",
        description="Deployed with BYOC through Terraform",
        region="us-central1",
        spec={
            "container_spec": {
                "image_uri": f"us-central1-docker.pkg.dev/{project.project_id}/vertex-byoc/byoc-agent:latest",
            },
        },
        opts = pulumi.ResourceOptions(depends_on=[
                vertex_ar_reader,
                tenant_ar_reader,
            ]))
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/projects"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/vertex"
    	"github.com/pulumi/pulumi-std/sdk/go/std"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
    project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{
    }, nil);
    if err != nil {
    return err
    }
    vertexArReader, err := projects.NewIAMMember(ctx, "vertex_ar_reader", &projects.IAMMemberArgs{
    Project: pulumi.String(pulumi.String(project.ProjectId)),
    Role: pulumi.String("roles/artifactregistry.reader"),
    Member: pulumi.Sprintf("serviceAccount:service-%v@gcp-sa-aiplatform-re.iam.gserviceaccount.com", project.Number),
    })
    if err != nil {
    return err
    }
    invokeFilebase64, err := std.Filebase64(ctx, &std.Filebase64Args{
    Input: "./test-fixtures/mds_agent_src.tar.gz",
    }, nil)
    if err != nil {
    return err
    }
    // Provision and retrieve the tenant service agent through another agent
    tenantMdsAiReasoningEngine, err := vertex.NewAiReasoningEngine(ctx, "tenant_mds", &vertex.AiReasoningEngineArgs{
    DisplayName: pulumi.String("reasoning-engine-mds"),
    Region: pulumi.String("us-central1"),
    Spec: &vertex.AiReasoningEngineSpecArgs{
    SourceCodeSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecArgs{
    InlineSource: &vertex.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs{
    SourceArchive: pulumi.String(invokeFilebase64.Result),
    },
    PythonSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs{
    EntrypointModule: pulumi.String("metadata_agent"),
    EntrypointObject: pulumi.String("root_agent"),
    },
    },
    },
    })
    if err != nil {
    return err
    }
    tenantMds := vertex.GetAiReasoningEngineQueryOutput(ctx, vertex.GetAiReasoningEngineQueryOutputArgs{
    Region: pulumi.String("us-central1"),
    ReasoningEngineId: tenantMdsAiReasoningEngine.Name,
    }, nil);
    invokeJsondecode1, err := std.Jsondecode(ctx, &std.JsondecodeArgs{
    Input: tenantMds.Output,
    }, nil)
    if err != nil {
    return err
    }
    tenantArReader, err := projects.NewIAMMember(ctx, "tenant_ar_reader", &projects.IAMMemberArgs{
    Project: pulumi.String(pulumi.String(project.ProjectId)),
    Role: pulumi.String("roles/artifactregistry.reader"),
    Member: tenantMds.ApplyT(func(tenantMds vertex.GetAiReasoningEngineQueryResult) (std.JsondecodeResult, error) {
    %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference)).(std.JsondecodeResultOutput).ApplyT(func(invoke std.JsondecodeResult) (string, error) {
    return fmt.Sprintf("serviceAccount:%v", invoke.Result.Output), nil
    }).(pulumi.StringOutput),
    })
    if err != nil {
    return err
    }
    _, err = vertex.NewAiReasoningEngine(ctx, "reasoning_engine", &vertex.AiReasoningEngineArgs{
    DisplayName: pulumi.String("reasoning-engine"),
    Description: pulumi.String("Deployed with BYOC through Terraform"),
    Region: pulumi.String("us-central1"),
    Spec: &vertex.AiReasoningEngineSpecArgs{
    ContainerSpec: &vertex.AiReasoningEngineSpecContainerSpecArgs{
    ImageUri: pulumi.Sprintf("us-central1-docker.pkg.dev/%v/vertex-byoc/byoc-agent:latest", project.ProjectId),
    },
    },
    }, pulumi.DependsOn([]pulumi.Resource{
    vertexArReader,
    tenantArReader,
    }))
    if err != nil {
    return err
    }
    return nil
    })
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    using Std = Pulumi.Std;
    
    return await Deployment.RunAsync(() => 
    {
        var project = Gcp.Organizations.GetProject.Invoke();
    
        var vertexArReader = new Gcp.Projects.IAMMember("vertex_ar_reader", new()
        {
            Project = project.Apply(getProjectResult => getProjectResult.ProjectId),
            Role = "roles/artifactregistry.reader",
            Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-aiplatform-re.iam.gserviceaccount.com",
        });
    
        // Provision and retrieve the tenant service agent through another agent
        var tenantMdsAiReasoningEngine = new Gcp.Vertex.AiReasoningEngine("tenant_mds", new()
        {
            DisplayName = "reasoning-engine-mds",
            Region = "us-central1",
            Spec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecArgs
            {
                SourceCodeSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecArgs
                {
                    InlineSource = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs
                    {
                        SourceArchive = Std.Index.Filebase64.Invoke(new()
                        {
                            Input = "./test-fixtures/mds_agent_src.tar.gz",
                        }).Apply(invoke => invoke.Result),
                    },
                    PythonSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs
                    {
                        EntrypointModule = "metadata_agent",
                        EntrypointObject = "root_agent",
                    },
                },
            },
        });
    
        var tenantMds = Gcp.Vertex.GetAiReasoningEngineQuery.Invoke(new()
        {
            Region = "us-central1",
            ReasoningEngineId = tenantMdsAiReasoningEngine.Name,
        });
    
        var tenantArReader = new Gcp.Projects.IAMMember("tenant_ar_reader", new()
        {
            Project = project.Apply(getProjectResult => getProjectResult.ProjectId),
            Role = "roles/artifactregistry.reader",
            Member = Std.Index.Jsondecode.Invoke(new()
            {
                Input = tenantMds.Apply(getAiReasoningEngineQueryResult => getAiReasoningEngineQueryResult.Output),
            }).Apply(invoke => $"serviceAccount:{invoke.Result?.Output}"),
        });
    
        var reasoningEngine = new Gcp.Vertex.AiReasoningEngine("reasoning_engine", new()
        {
            DisplayName = "reasoning-engine",
            Description = "Deployed with BYOC through Terraform",
            Region = "us-central1",
            Spec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecArgs
            {
                ContainerSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecContainerSpecArgs
                {
                    ImageUri = $"us-central1-docker.pkg.dev/{project.Apply(getProjectResult => getProjectResult.ProjectId)}/vertex-byoc/byoc-agent:latest",
                },
            },
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                vertexArReader,
                tenantArReader,
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.organizations.OrganizationsFunctions;
    import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
    import com.pulumi.gcp.projects.IAMMember;
    import com.pulumi.gcp.projects.IAMMemberArgs;
    import com.pulumi.gcp.vertex.AiReasoningEngine;
    import com.pulumi.gcp.vertex.AiReasoningEngineArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs;
    import com.pulumi.std.StdFunctions;
    import com.pulumi.std.inputs.Filebase64Args;
    import com.pulumi.gcp.vertex.VertexFunctions;
    import com.pulumi.gcp.vertex.inputs.GetAiReasoningEngineQueryArgs;
    import com.pulumi.std.inputs.JsondecodeArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecContainerSpecArgs;
    import com.pulumi.resources.CustomResourceOptions;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
                .build());
    
            var vertexArReader = new IAMMember("vertexArReader", IAMMemberArgs.builder()
                .project(project.projectId())
                .role("roles/artifactregistry.reader")
                .member(String.format("serviceAccount:service-%s@gcp-sa-aiplatform-re.iam.gserviceaccount.com", project.number()))
                .build());
    
            // Provision and retrieve the tenant service agent through another agent
            var tenantMdsAiReasoningEngine = new AiReasoningEngine("tenantMdsAiReasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("reasoning-engine-mds")
                .region("us-central1")
                .spec(AiReasoningEngineSpecArgs.builder()
                    .sourceCodeSpec(AiReasoningEngineSpecSourceCodeSpecArgs.builder()
                        .inlineSource(AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs.builder()
                            .sourceArchive(StdFunctions.filebase64(Filebase64Args.builder()
                                .input("./test-fixtures/mds_agent_src.tar.gz")
                                .build()).result())
                            .build())
                        .pythonSpec(AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs.builder()
                            .entrypointModule("metadata_agent")
                            .entrypointObject("root_agent")
                            .build())
                        .build())
                    .build())
                .build());
    
            final var tenantMds = VertexFunctions.getAiReasoningEngineQuery(GetAiReasoningEngineQueryArgs.builder()
                .region("us-central1")
                .reasoningEngineId(tenantMdsAiReasoningEngine.name())
                .build());
    
            var tenantArReader = new IAMMember("tenantArReader", IAMMemberArgs.builder()
                .project(project.projectId())
                .role("roles/artifactregistry.reader")
                .member(tenantMds.applyValue(_tenantMds -> StdFunctions.jsondecode(JsondecodeArgs.builder()
                    .input(_tenantMds.output())
                    .build())).applyValue(_invoke -> String.format("serviceAccount:%s", _invoke.result().output())))
                .build());
    
            var reasoningEngine = new AiReasoningEngine("reasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("reasoning-engine")
                .description("Deployed with BYOC through Terraform")
                .region("us-central1")
                .spec(AiReasoningEngineSpecArgs.builder()
                    .containerSpec(AiReasoningEngineSpecContainerSpecArgs.builder()
                        .imageUri(String.format("us-central1-docker.pkg.dev/%s/vertex-byoc/byoc-agent:latest", project.projectId()))
                        .build())
                    .build())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        vertexArReader,
                        tenantArReader)
                    .build());
    
        }
    }
    
    resources:
      reasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: reasoning_engine
        properties:
          displayName: reasoning-engine
          description: Deployed with BYOC through Terraform
          region: us-central1
          spec:
            containerSpec:
              imageUri: us-central1-docker.pkg.dev/${project.projectId}/vertex-byoc/byoc-agent:latest
        options:
          dependsOn:
            - ${vertexArReader}
            - ${tenantArReader}
      # Provision and retrieve the tenant service agent through another agent
      tenantMdsAiReasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: tenant_mds
        properties:
          displayName: reasoning-engine-mds
          region: us-central1
          spec:
            sourceCodeSpec:
              inlineSource:
                sourceArchive:
                  fn::invoke:
                    function: std:filebase64
                    arguments:
                      input: ./test-fixtures/mds_agent_src.tar.gz
                    return: result
              pythonSpec:
                entrypointModule: metadata_agent
                entrypointObject: root_agent
      vertexArReader:
        type: gcp:projects:IAMMember
        name: vertex_ar_reader
        properties:
          project: ${project.projectId}
          role: roles/artifactregistry.reader
          member: serviceAccount:service-${project.number}@gcp-sa-aiplatform-re.iam.gserviceaccount.com
      tenantArReader:
        type: gcp:projects:IAMMember
        name: tenant_ar_reader
        properties:
          project: ${project.projectId}
          role: roles/artifactregistry.reader
          member:
            fn::join:
              - ""
              - - 'serviceAccount:'
                - fn::invoke:
                    function: std:jsondecode
                    arguments:
                      input: ${tenantMds.output}
                    return: result.output
    variables:
      tenantMds:
        fn::invoke:
          function: gcp:vertex:getAiReasoningEngineQuery
          arguments:
            region: us-central1
            reasoningEngineId: ${tenantMdsAiReasoningEngine.name}
      project:
        fn::invoke:
          function: gcp:organizations:getProject
          arguments: {}
    
    Example coming soon!
    

    Vertex Ai Reasoning Engine Psc Interface

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    import * as time from "@pulumiverse/time";
    
    const bucket = new gcp.storage.Bucket("bucket", {
        name: "reasoning-engine",
        location: "us-central1",
        uniformBucketLevelAccess: true,
        forceDestroy: true,
    });
    const bucketObjRequirementsTxt = new gcp.storage.BucketObject("bucket_obj_requirements_txt", {
        name: "requirements.txt",
        bucket: bucket.id,
        source: new pulumi.asset.FileAsset("./test-fixtures/requirements_adk.txt"),
    });
    const bucketObjPickle = new gcp.storage.BucketObject("bucket_obj_pickle", {
        name: "code.pkl",
        bucket: bucket.id,
        source: new pulumi.asset.FileAsset("./test-fixtures/pickle_adk.pkl"),
    });
    const bucketObjDependenciesTarGz = new gcp.storage.BucketObject("bucket_obj_dependencies_tar_gz", {
        name: "dependencies.tar.gz",
        bucket: bucket.id,
        source: new pulumi.asset.FileAsset("./test-fixtures/dependencies_adk.tar.gz"),
    });
    const network = new gcp.compute.Network("network", {
        name: "network",
        autoCreateSubnetworks: false,
    });
    const subnetwork = new gcp.compute.Subnetwork("subnetwork", {
        name: "subnetwork",
        region: "us-central1",
        ipCidrRange: "10.0.0.0/16",
        network: network.id,
    });
    const networkAttachment = new gcp.compute.NetworkAttachment("network_attachment", {
        name: "network-attachment",
        region: "us-central1",
        connectionPreference: "ACCEPT_MANUAL",
        subnetworks: [subnetwork.id],
    });
    // Destroy network attachment 35 minutes after reasoning engine is deleted.
    // It guarantees that the network attachment has no more active PSC interfaces.
    const wait35Minutes = new time.Sleep("wait_35_minutes", {destroyDuration: "35m"}, {
        dependsOn: [networkAttachment],
    });
    const project = gcp.organizations.getProject({});
    // When PSC-I is configured, Agent deletion will fail,
    // although the agent will be deleted.
    // Bug at https://github.com/hashicorp/terraform-provider-google/issues/25637
    const reasoningEngine = new gcp.vertex.AiReasoningEngine("reasoning_engine", {
        displayName: "reasoning-engine",
        description: "A basic reasoning engine",
        region: "us-central1",
        spec: {
            agentFramework: "google-adk",
            packageSpec: {
                pythonVersion: "3.11",
                dependencyFilesGcsUri: pulumi.interpolate`${bucket.url}/${bucketObjDependenciesTarGz.name}`,
                pickleObjectGcsUri: pulumi.interpolate`${bucket.url}/${bucketObjPickle.name}`,
                requirementsGcsUri: pulumi.interpolate`${bucket.url}/${bucketObjRequirementsTxt.name}`,
            },
            deploymentSpec: {
                pscInterfaceConfig: {
                    networkAttachment: networkAttachment.id,
                    dnsPeeringConfigs: [{
                        domain: "example.com.",
                        targetProject: project.then(project => project.projectId),
                        targetNetwork: network.name,
                    }],
                },
            },
        },
    }, {
        dependsOn: [wait35Minutes],
    });
    
    import pulumi
    import pulumi_gcp as gcp
    import pulumiverse_time as time
    
    bucket = gcp.storage.Bucket("bucket",
        name="reasoning-engine",
        location="us-central1",
        uniform_bucket_level_access=True,
        force_destroy=True)
    bucket_obj_requirements_txt = gcp.storage.BucketObject("bucket_obj_requirements_txt",
        name="requirements.txt",
        bucket=bucket.id,
        source=pulumi.FileAsset("./test-fixtures/requirements_adk.txt"))
    bucket_obj_pickle = gcp.storage.BucketObject("bucket_obj_pickle",
        name="code.pkl",
        bucket=bucket.id,
        source=pulumi.FileAsset("./test-fixtures/pickle_adk.pkl"))
    bucket_obj_dependencies_tar_gz = gcp.storage.BucketObject("bucket_obj_dependencies_tar_gz",
        name="dependencies.tar.gz",
        bucket=bucket.id,
        source=pulumi.FileAsset("./test-fixtures/dependencies_adk.tar.gz"))
    network = gcp.compute.Network("network",
        name="network",
        auto_create_subnetworks=False)
    subnetwork = gcp.compute.Subnetwork("subnetwork",
        name="subnetwork",
        region="us-central1",
        ip_cidr_range="10.0.0.0/16",
        network=network.id)
    network_attachment = gcp.compute.NetworkAttachment("network_attachment",
        name="network-attachment",
        region="us-central1",
        connection_preference="ACCEPT_MANUAL",
        subnetworks=[subnetwork.id])
    # Destroy network attachment 35 minutes after reasoning engine is deleted.
    # It guarantees that the network attachment has no more active PSC interfaces.
    wait35_minutes = time.Sleep("wait_35_minutes", destroy_duration="35m",
    opts = pulumi.ResourceOptions(depends_on=[network_attachment]))
    project = gcp.organizations.get_project()
    # When PSC-I is configured, Agent deletion will fail,
    # although the agent will be deleted.
    # Bug at https://github.com/hashicorp/terraform-provider-google/issues/25637
    reasoning_engine = gcp.vertex.AiReasoningEngine("reasoning_engine",
        display_name="reasoning-engine",
        description="A basic reasoning engine",
        region="us-central1",
        spec={
            "agent_framework": "google-adk",
            "package_spec": {
                "python_version": "3.11",
                "dependency_files_gcs_uri": pulumi.Output.all(
                    url=bucket.url,
                    name=bucket_obj_dependencies_tar_gz.name
    ).apply(lambda resolved_outputs: f"{resolved_outputs['url']}/{resolved_outputs['name']}")
    ,
                "pickle_object_gcs_uri": pulumi.Output.all(
                    url=bucket.url,
                    name=bucket_obj_pickle.name
    ).apply(lambda resolved_outputs: f"{resolved_outputs['url']}/{resolved_outputs['name']}")
    ,
                "requirements_gcs_uri": pulumi.Output.all(
                    url=bucket.url,
                    name=bucket_obj_requirements_txt.name
    ).apply(lambda resolved_outputs: f"{resolved_outputs['url']}/{resolved_outputs['name']}")
    ,
            },
            "deployment_spec": {
                "psc_interface_config": {
                    "network_attachment": network_attachment.id,
                    "dns_peering_configs": [{
                        "domain": "example.com.",
                        "target_project": project.project_id,
                        "target_network": network.name,
                    }],
                },
            },
        },
        opts = pulumi.ResourceOptions(depends_on=[wait35_minutes]))
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/storage"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/vertex"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumiverse/pulumi-time/sdk/go/time"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		bucket, err := storage.NewBucket(ctx, "bucket", &storage.BucketArgs{
    			Name:                     pulumi.String("reasoning-engine"),
    			Location:                 pulumi.String("us-central1"),
    			UniformBucketLevelAccess: pulumi.Bool(true),
    			ForceDestroy:             pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		bucketObjRequirementsTxt, err := storage.NewBucketObject(ctx, "bucket_obj_requirements_txt", &storage.BucketObjectArgs{
    			Name:   pulumi.String("requirements.txt"),
    			Bucket: bucket.ID(),
    			Source: pulumi.NewFileAsset("./test-fixtures/requirements_adk.txt"),
    		})
    		if err != nil {
    			return err
    		}
    		bucketObjPickle, err := storage.NewBucketObject(ctx, "bucket_obj_pickle", &storage.BucketObjectArgs{
    			Name:   pulumi.String("code.pkl"),
    			Bucket: bucket.ID(),
    			Source: pulumi.NewFileAsset("./test-fixtures/pickle_adk.pkl"),
    		})
    		if err != nil {
    			return err
    		}
    		bucketObjDependenciesTarGz, err := storage.NewBucketObject(ctx, "bucket_obj_dependencies_tar_gz", &storage.BucketObjectArgs{
    			Name:   pulumi.String("dependencies.tar.gz"),
    			Bucket: bucket.ID(),
    			Source: pulumi.NewFileAsset("./test-fixtures/dependencies_adk.tar.gz"),
    		})
    		if err != nil {
    			return err
    		}
    		network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{
    			Name:                  pulumi.String("network"),
    			AutoCreateSubnetworks: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		subnetwork, err := compute.NewSubnetwork(ctx, "subnetwork", &compute.SubnetworkArgs{
    			Name:        pulumi.String("subnetwork"),
    			Region:      pulumi.String("us-central1"),
    			IpCidrRange: pulumi.String("10.0.0.0/16"),
    			Network:     network.ID(),
    		})
    		if err != nil {
    			return err
    		}
    		networkAttachment, err := compute.NewNetworkAttachment(ctx, "network_attachment", &compute.NetworkAttachmentArgs{
    			Name:                 pulumi.String("network-attachment"),
    			Region:               pulumi.String("us-central1"),
    			ConnectionPreference: pulumi.String("ACCEPT_MANUAL"),
    			Subnetworks: pulumi.StringArray{
    				subnetwork.ID(),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Destroy network attachment 35 minutes after reasoning engine is deleted.
    		// It guarantees that the network attachment has no more active PSC interfaces.
    		wait35Minutes, err := time.NewSleep(ctx, "wait_35_minutes", &time.SleepArgs{
    			DestroyDuration: pulumi.String("35m"),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			networkAttachment,
    		}))
    		if err != nil {
    			return err
    		}
    		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
    		if err != nil {
    			return err
    		}
    		// When PSC-I is configured, Agent deletion will fail,
    		// although the agent will be deleted.
    		// Bug at https://github.com/hashicorp/terraform-provider-google/issues/25637
    		_, err = vertex.NewAiReasoningEngine(ctx, "reasoning_engine", &vertex.AiReasoningEngineArgs{
    			DisplayName: pulumi.String("reasoning-engine"),
    			Description: pulumi.String("A basic reasoning engine"),
    			Region:      pulumi.String("us-central1"),
    			Spec: &vertex.AiReasoningEngineSpecArgs{
    				AgentFramework: pulumi.String("google-adk"),
    				PackageSpec: &vertex.AiReasoningEngineSpecPackageSpecArgs{
    					PythonVersion: pulumi.String("3.11"),
    					DependencyFilesGcsUri: pulumi.All(bucket.Url, bucketObjDependenciesTarGz.Name).ApplyT(func(_args []interface{}) (string, error) {
    						url := _args[0].(string)
    						name := _args[1].(string)
    						return fmt.Sprintf("%v/%v", url, name), nil
    					}).(pulumi.StringOutput),
    					PickleObjectGcsUri: pulumi.All(bucket.Url, bucketObjPickle.Name).ApplyT(func(_args []interface{}) (string, error) {
    						url := _args[0].(string)
    						name := _args[1].(string)
    						return fmt.Sprintf("%v/%v", url, name), nil
    					}).(pulumi.StringOutput),
    					RequirementsGcsUri: pulumi.All(bucket.Url, bucketObjRequirementsTxt.Name).ApplyT(func(_args []interface{}) (string, error) {
    						url := _args[0].(string)
    						name := _args[1].(string)
    						return fmt.Sprintf("%v/%v", url, name), nil
    					}).(pulumi.StringOutput),
    				},
    				DeploymentSpec: &vertex.AiReasoningEngineSpecDeploymentSpecArgs{
    					PscInterfaceConfig: &vertex.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigArgs{
    						NetworkAttachment: networkAttachment.ID(),
    						DnsPeeringConfigs: vertex.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArray{
    							&vertex.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArgs{
    								Domain:        pulumi.String("example.com."),
    								TargetProject: pulumi.String(project.ProjectId),
    								TargetNetwork: network.Name,
    							},
    						},
    					},
    				},
    			},
    		}, pulumi.DependsOn([]pulumi.Resource{
    			wait35Minutes,
    		}))
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    using Time = Pulumiverse.Time;
    
    return await Deployment.RunAsync(() => 
    {
        var bucket = new Gcp.Storage.Bucket("bucket", new()
        {
            Name = "reasoning-engine",
            Location = "us-central1",
            UniformBucketLevelAccess = true,
            ForceDestroy = true,
        });
    
        var bucketObjRequirementsTxt = new Gcp.Storage.BucketObject("bucket_obj_requirements_txt", new()
        {
            Name = "requirements.txt",
            Bucket = bucket.Id,
            Source = new FileAsset("./test-fixtures/requirements_adk.txt"),
        });
    
        var bucketObjPickle = new Gcp.Storage.BucketObject("bucket_obj_pickle", new()
        {
            Name = "code.pkl",
            Bucket = bucket.Id,
            Source = new FileAsset("./test-fixtures/pickle_adk.pkl"),
        });
    
        var bucketObjDependenciesTarGz = new Gcp.Storage.BucketObject("bucket_obj_dependencies_tar_gz", new()
        {
            Name = "dependencies.tar.gz",
            Bucket = bucket.Id,
            Source = new FileAsset("./test-fixtures/dependencies_adk.tar.gz"),
        });
    
        var network = new Gcp.Compute.Network("network", new()
        {
            Name = "network",
            AutoCreateSubnetworks = false,
        });
    
        var subnetwork = new Gcp.Compute.Subnetwork("subnetwork", new()
        {
            Name = "subnetwork",
            Region = "us-central1",
            IpCidrRange = "10.0.0.0/16",
            Network = network.Id,
        });
    
        var networkAttachment = new Gcp.Compute.NetworkAttachment("network_attachment", new()
        {
            Name = "network-attachment",
            Region = "us-central1",
            ConnectionPreference = "ACCEPT_MANUAL",
            Subnetworks = new[]
            {
                subnetwork.Id,
            },
        });
    
        // Destroy network attachment 35 minutes after reasoning engine is deleted.
        // It guarantees that the network attachment has no more active PSC interfaces.
        var wait35Minutes = new Time.Index.Sleep("wait_35_minutes", new()
        {
            DestroyDuration = "35m",
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                networkAttachment,
            },
        });
    
        var project = Gcp.Organizations.GetProject.Invoke();
    
        // When PSC-I is configured, Agent deletion will fail,
        // although the agent will be deleted.
        // Bug at https://github.com/hashicorp/terraform-provider-google/issues/25637
        var reasoningEngine = new Gcp.Vertex.AiReasoningEngine("reasoning_engine", new()
        {
            DisplayName = "reasoning-engine",
            Description = "A basic reasoning engine",
            Region = "us-central1",
            Spec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecArgs
            {
                AgentFramework = "google-adk",
                PackageSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecPackageSpecArgs
                {
                    PythonVersion = "3.11",
                    DependencyFilesGcsUri = Output.Tuple(bucket.Url, bucketObjDependenciesTarGz.Name).Apply(values =>
                    {
                        var url = values.Item1;
                        var name = values.Item2;
                        return $"{url}/{name}";
                    }),
                    PickleObjectGcsUri = Output.Tuple(bucket.Url, bucketObjPickle.Name).Apply(values =>
                    {
                        var url = values.Item1;
                        var name = values.Item2;
                        return $"{url}/{name}";
                    }),
                    RequirementsGcsUri = Output.Tuple(bucket.Url, bucketObjRequirementsTxt.Name).Apply(values =>
                    {
                        var url = values.Item1;
                        var name = values.Item2;
                        return $"{url}/{name}";
                    }),
                },
                DeploymentSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecArgs
                {
                    PscInterfaceConfig = new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigArgs
                    {
                        NetworkAttachment = networkAttachment.Id,
                        DnsPeeringConfigs = new[]
                        {
                            new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArgs
                            {
                                Domain = "example.com.",
                                TargetProject = project.Apply(getProjectResult => getProjectResult.ProjectId),
                                TargetNetwork = network.Name,
                            },
                        },
                    },
                },
            },
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                wait35Minutes,
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.storage.Bucket;
    import com.pulumi.gcp.storage.BucketArgs;
    import com.pulumi.gcp.storage.BucketObject;
    import com.pulumi.gcp.storage.BucketObjectArgs;
    import com.pulumi.gcp.compute.Network;
    import com.pulumi.gcp.compute.NetworkArgs;
    import com.pulumi.gcp.compute.Subnetwork;
    import com.pulumi.gcp.compute.SubnetworkArgs;
    import com.pulumi.gcp.compute.NetworkAttachment;
    import com.pulumi.gcp.compute.NetworkAttachmentArgs;
    import com.pulumiverse.time.Sleep;
    import com.pulumiverse.time.SleepArgs;
    import com.pulumi.gcp.organizations.OrganizationsFunctions;
    import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
    import com.pulumi.gcp.vertex.AiReasoningEngine;
    import com.pulumi.gcp.vertex.AiReasoningEngineArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecPackageSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecDeploymentSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigArgs;
    import com.pulumi.asset.FileAsset;
    import com.pulumi.resources.CustomResourceOptions;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var bucket = new Bucket("bucket", BucketArgs.builder()
                .name("reasoning-engine")
                .location("us-central1")
                .uniformBucketLevelAccess(true)
                .forceDestroy(true)
                .build());
    
            var bucketObjRequirementsTxt = new BucketObject("bucketObjRequirementsTxt", BucketObjectArgs.builder()
                .name("requirements.txt")
                .bucket(bucket.id())
                .source(new FileAsset("./test-fixtures/requirements_adk.txt"))
                .build());
    
            var bucketObjPickle = new BucketObject("bucketObjPickle", BucketObjectArgs.builder()
                .name("code.pkl")
                .bucket(bucket.id())
                .source(new FileAsset("./test-fixtures/pickle_adk.pkl"))
                .build());
    
            var bucketObjDependenciesTarGz = new BucketObject("bucketObjDependenciesTarGz", BucketObjectArgs.builder()
                .name("dependencies.tar.gz")
                .bucket(bucket.id())
                .source(new FileAsset("./test-fixtures/dependencies_adk.tar.gz"))
                .build());
    
            var network = new Network("network", NetworkArgs.builder()
                .name("network")
                .autoCreateSubnetworks(false)
                .build());
    
            var subnetwork = new Subnetwork("subnetwork", SubnetworkArgs.builder()
                .name("subnetwork")
                .region("us-central1")
                .ipCidrRange("10.0.0.0/16")
                .network(network.id())
                .build());
    
            var networkAttachment = new NetworkAttachment("networkAttachment", NetworkAttachmentArgs.builder()
                .name("network-attachment")
                .region("us-central1")
                .connectionPreference("ACCEPT_MANUAL")
                .subnetworks(subnetwork.id())
                .build());
    
            // Destroy network attachment 35 minutes after reasoning engine is deleted.
            // It guarantees that the network attachment has no more active PSC interfaces.
            var wait35Minutes = new Sleep("wait35Minutes", SleepArgs.builder()
                .destroyDuration("35m")
                .build(), CustomResourceOptions.builder()
                    .dependsOn(networkAttachment)
                    .build());
    
            final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
                .build());
    
            // When PSC-I is configured, Agent deletion will fail,
            // although the agent will be deleted.
            // Bug at https://github.com/hashicorp/terraform-provider-google/issues/25637
            var reasoningEngine = new AiReasoningEngine("reasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("reasoning-engine")
                .description("A basic reasoning engine")
                .region("us-central1")
                .spec(AiReasoningEngineSpecArgs.builder()
                    .agentFramework("google-adk")
                    .packageSpec(AiReasoningEngineSpecPackageSpecArgs.builder()
                        .pythonVersion("3.11")
                        .dependencyFilesGcsUri(Output.tuple(bucket.url(), bucketObjDependenciesTarGz.name()).applyValue(values -> {
                            var url = values.t1;
                            var name = values.t2;
                            return String.format("%s/%s", url,name);
                        }))
                        .pickleObjectGcsUri(Output.tuple(bucket.url(), bucketObjPickle.name()).applyValue(values -> {
                            var url = values.t1;
                            var name = values.t2;
                            return String.format("%s/%s", url,name);
                        }))
                        .requirementsGcsUri(Output.tuple(bucket.url(), bucketObjRequirementsTxt.name()).applyValue(values -> {
                            var url = values.t1;
                            var name = values.t2;
                            return String.format("%s/%s", url,name);
                        }))
                        .build())
                    .deploymentSpec(AiReasoningEngineSpecDeploymentSpecArgs.builder()
                        .pscInterfaceConfig(AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigArgs.builder()
                            .networkAttachment(networkAttachment.id())
                            .dnsPeeringConfigs(AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArgs.builder()
                                .domain("example.com.")
                                .targetProject(project.projectId())
                                .targetNetwork(network.name())
                                .build())
                            .build())
                        .build())
                    .build())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(wait35Minutes)
                    .build());
    
        }
    }
    
    resources:
      # When PSC-I is configured, Agent deletion will fail,
      # although the agent will be deleted.
      # Bug at https://github.com/hashicorp/terraform-provider-google/issues/25637
      reasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: reasoning_engine
        properties:
          displayName: reasoning-engine
          description: A basic reasoning engine
          region: us-central1
          spec:
            agentFramework: google-adk
            packageSpec:
              pythonVersion: '3.11'
              dependencyFilesGcsUri: ${bucket.url}/${bucketObjDependenciesTarGz.name}
              pickleObjectGcsUri: ${bucket.url}/${bucketObjPickle.name}
              requirementsGcsUri: ${bucket.url}/${bucketObjRequirementsTxt.name}
            deploymentSpec:
              pscInterfaceConfig:
                networkAttachment: ${networkAttachment.id}
                dnsPeeringConfigs:
                  - domain: example.com.
                    targetProject: ${project.projectId}
                    targetNetwork: ${network.name}
        options:
          dependsOn:
            - ${wait35Minutes}
      bucketObjRequirementsTxt:
        type: gcp:storage:BucketObject
        name: bucket_obj_requirements_txt
        properties:
          name: requirements.txt
          bucket: ${bucket.id}
          source:
            fn::FileAsset: ./test-fixtures/requirements_adk.txt
      bucketObjPickle:
        type: gcp:storage:BucketObject
        name: bucket_obj_pickle
        properties:
          name: code.pkl
          bucket: ${bucket.id}
          source:
            fn::FileAsset: ./test-fixtures/pickle_adk.pkl
      bucketObjDependenciesTarGz:
        type: gcp:storage:BucketObject
        name: bucket_obj_dependencies_tar_gz
        properties:
          name: dependencies.tar.gz
          bucket: ${bucket.id}
          source:
            fn::FileAsset: ./test-fixtures/dependencies_adk.tar.gz
      bucket:
        type: gcp:storage:Bucket
        properties:
          name: reasoning-engine
          location: us-central1
          uniformBucketLevelAccess: true
          forceDestroy: true
      # Destroy network attachment 35 minutes after reasoning engine is deleted.
      # It guarantees that the network attachment has no more active PSC interfaces.
      wait35Minutes:
        type: time:Sleep
        name: wait_35_minutes
        properties:
          destroyDuration: 35m
        options:
          dependsOn:
            - ${networkAttachment}
      networkAttachment:
        type: gcp:compute:NetworkAttachment
        name: network_attachment
        properties:
          name: network-attachment
          region: us-central1
          connectionPreference: ACCEPT_MANUAL
          subnetworks:
            - ${subnetwork.id}
      subnetwork:
        type: gcp:compute:Subnetwork
        properties:
          name: subnetwork
          region: us-central1
          ipCidrRange: 10.0.0.0/16
          network: ${network.id}
      network:
        type: gcp:compute:Network
        properties:
          name: network
          autoCreateSubnetworks: false
    variables:
      project:
        fn::invoke:
          function: gcp:organizations:getProject
          arguments: {}
    
    Example coming soon!
    

    Vertex Ai Reasoning Engine Full

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    import * as time from "@pulumiverse/time";
    
    const classMethods = [{
        apiMode: "async",
        description: null,
        name: "async_query",
        parameters: {
            type: "object",
            required: [],
            properties: {},
        },
    }];
    const secret = new gcp.secretmanager.Secret("secret", {
        secretId: "secret",
        replication: {
            auto: {},
        },
    });
    const secretVersion = new gcp.secretmanager.SecretVersion("secret_version", {
        secret: secret.id,
        secretData: "test",
    });
    const serviceAccount = new gcp.serviceaccount.Account("service_account", {accountId: "sa"});
    const secretAccess = new gcp.secretmanager.SecretIamMember("secret_access", {
        secretId: secret.id,
        role: "roles/secretmanager.secretAccessor",
        member: serviceAccount.member,
    });
    const project = gcp.organizations.getProject({});
    const saIamObjectViewer = new gcp.projects.IAMMember("sa_iam_object_viewer", {
        role: "roles/storage.objectViewer",
        project: project.then(project => project.id),
        member: serviceAccount.member,
    });
    const saIamAiPlatformUser = new gcp.projects.IAMMember("sa_iam_ai_platform_user", {
        role: "roles/aiplatform.user",
        project: project.then(project => project.id),
        member: serviceAccount.member,
    });
    const saIamViewer = new gcp.projects.IAMMember("sa_iam_viewer", {
        role: "roles/viewer",
        project: project.then(project => project.id),
        member: serviceAccount.member,
    });
    // Ensure we wait enough time for IAM permissions to be propagated
    const wait5Minutes = new time.Sleep("wait_5_minutes", {createDuration: "5m"}, {
        dependsOn: [
            saIamAiPlatformUser,
            saIamObjectViewer,
            saIamViewer,
            secretAccess,
            secretVersion,
        ],
    });
    const bucket = new gcp.storage.Bucket("bucket", {
        name: "reasoning-engine",
        location: "us-central1",
        uniformBucketLevelAccess: true,
        forceDestroy: true,
    });
    const bucketObjRequirementsTxt = new gcp.storage.BucketObject("bucket_obj_requirements_txt", {
        name: "requirements.txt",
        bucket: bucket.id,
        source: new pulumi.asset.FileAsset("./test-fixtures/requirements_adk.txt"),
    });
    const bucketObjPickle = new gcp.storage.BucketObject("bucket_obj_pickle", {
        name: "code.pkl",
        bucket: bucket.id,
        source: new pulumi.asset.FileAsset("./test-fixtures/pickle_adk.pkl"),
    });
    const bucketObjDependenciesTarGz = new gcp.storage.BucketObject("bucket_obj_dependencies_tar_gz", {
        name: "dependencies.tar.gz",
        bucket: bucket.id,
        source: new pulumi.asset.FileAsset("./test-fixtures/dependencies_adk.tar.gz"),
    });
    const reasoningEngine = new gcp.vertex.AiReasoningEngine("reasoning_engine", {
        displayName: "reasoning-engine",
        description: "A basic reasoning engine",
        region: "us-central1",
        encryptionSpec: {
            kmsKeyName: "example-key",
        },
        spec: {
            agentFramework: "google-adk",
            classMethods: JSON.stringify(classMethods),
            serviceAccount: serviceAccount.email,
            deploymentSpec: {
                minInstances: 1,
                maxInstances: 3,
                containerConcurrency: 5,
                resourceLimits: {
                    cpu: "4",
                    memory: "4Gi",
                },
                envs: [
                    {
                        name: "var_1",
                        value: "value_2",
                    },
                    {
                        name: "var_2",
                        value: "value_2",
                    },
                ],
                secretEnvs: [
                    {
                        name: "secret_var_1",
                        secretRef: {
                            secret: secret.secretId,
                            version: "latest",
                        },
                    },
                    {
                        name: "secret_var_2",
                        secretRef: {
                            secret: secret.secretId,
                            version: "latest",
                        },
                    },
                ],
            },
            packageSpec: {
                dependencyFilesGcsUri: pulumi.interpolate`${bucket.url}/${bucketObjDependenciesTarGz.name}`,
                pickleObjectGcsUri: pulumi.interpolate`${bucket.url}/${bucketObjPickle.name}`,
                pythonVersion: "3.11",
                requirementsGcsUri: pulumi.interpolate`${bucket.url}/${bucketObjRequirementsTxt.name}`,
            },
        },
    }, {
        dependsOn: [wait5Minutes],
    });
    
    import pulumi
    import json
    import pulumi_gcp as gcp
    import pulumiverse_time as time
    
    class_methods = [{
        "apiMode": "async",
        "description": None,
        "name": "async_query",
        "parameters": {
            "type": "object",
            "required": [],
            "properties": {},
        },
    }]
    secret = gcp.secretmanager.Secret("secret",
        secret_id="secret",
        replication={
            "auto": {},
        })
    secret_version = gcp.secretmanager.SecretVersion("secret_version",
        secret=secret.id,
        secret_data="test")
    service_account = gcp.serviceaccount.Account("service_account", account_id="sa")
    secret_access = gcp.secretmanager.SecretIamMember("secret_access",
        secret_id=secret.id,
        role="roles/secretmanager.secretAccessor",
        member=service_account.member)
    project = gcp.organizations.get_project()
    sa_iam_object_viewer = gcp.projects.IAMMember("sa_iam_object_viewer",
        role="roles/storage.objectViewer",
        project=project.id,
        member=service_account.member)
    sa_iam_ai_platform_user = gcp.projects.IAMMember("sa_iam_ai_platform_user",
        role="roles/aiplatform.user",
        project=project.id,
        member=service_account.member)
    sa_iam_viewer = gcp.projects.IAMMember("sa_iam_viewer",
        role="roles/viewer",
        project=project.id,
        member=service_account.member)
    # Ensure we wait enough time for IAM permissions to be propagated
    wait5_minutes = time.Sleep("wait_5_minutes", create_duration="5m",
    opts = pulumi.ResourceOptions(depends_on=[
            sa_iam_ai_platform_user,
            sa_iam_object_viewer,
            sa_iam_viewer,
            secret_access,
            secret_version,
        ]))
    bucket = gcp.storage.Bucket("bucket",
        name="reasoning-engine",
        location="us-central1",
        uniform_bucket_level_access=True,
        force_destroy=True)
    bucket_obj_requirements_txt = gcp.storage.BucketObject("bucket_obj_requirements_txt",
        name="requirements.txt",
        bucket=bucket.id,
        source=pulumi.FileAsset("./test-fixtures/requirements_adk.txt"))
    bucket_obj_pickle = gcp.storage.BucketObject("bucket_obj_pickle",
        name="code.pkl",
        bucket=bucket.id,
        source=pulumi.FileAsset("./test-fixtures/pickle_adk.pkl"))
    bucket_obj_dependencies_tar_gz = gcp.storage.BucketObject("bucket_obj_dependencies_tar_gz",
        name="dependencies.tar.gz",
        bucket=bucket.id,
        source=pulumi.FileAsset("./test-fixtures/dependencies_adk.tar.gz"))
    reasoning_engine = gcp.vertex.AiReasoningEngine("reasoning_engine",
        display_name="reasoning-engine",
        description="A basic reasoning engine",
        region="us-central1",
        encryption_spec={
            "kms_key_name": "example-key",
        },
        spec={
            "agent_framework": "google-adk",
            "class_methods": json.dumps(class_methods),
            "service_account": service_account.email,
            "deployment_spec": {
                "min_instances": 1,
                "max_instances": 3,
                "container_concurrency": 5,
                "resource_limits": {
                    "cpu": "4",
                    "memory": "4Gi",
                },
                "envs": [
                    {
                        "name": "var_1",
                        "value": "value_2",
                    },
                    {
                        "name": "var_2",
                        "value": "value_2",
                    },
                ],
                "secret_envs": [
                    {
                        "name": "secret_var_1",
                        "secret_ref": {
                            "secret": secret.secret_id,
                            "version": "latest",
                        },
                    },
                    {
                        "name": "secret_var_2",
                        "secret_ref": {
                            "secret": secret.secret_id,
                            "version": "latest",
                        },
                    },
                ],
            },
            "package_spec": {
                "dependency_files_gcs_uri": pulumi.Output.all(
                    url=bucket.url,
                    name=bucket_obj_dependencies_tar_gz.name
    ).apply(lambda resolved_outputs: f"{resolved_outputs['url']}/{resolved_outputs['name']}")
    ,
                "pickle_object_gcs_uri": pulumi.Output.all(
                    url=bucket.url,
                    name=bucket_obj_pickle.name
    ).apply(lambda resolved_outputs: f"{resolved_outputs['url']}/{resolved_outputs['name']}")
    ,
                "python_version": "3.11",
                "requirements_gcs_uri": pulumi.Output.all(
                    url=bucket.url,
                    name=bucket_obj_requirements_txt.name
    ).apply(lambda resolved_outputs: f"{resolved_outputs['url']}/{resolved_outputs['name']}")
    ,
            },
        },
        opts = pulumi.ResourceOptions(depends_on=[wait5_minutes]))
    
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/projects"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/secretmanager"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/serviceaccount"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/storage"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/vertex"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumiverse/pulumi-time/sdk/go/time"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		classMethods := []map[string]interface{}{
    			map[string]interface{}{
    				"apiMode":     "async",
    				"description": nil,
    				"name":        "async_query",
    				"parameters": map[string]interface{}{
    					"type":       "object",
    					"required":   []interface{}{},
    					"properties": map[string]interface{}{},
    				},
    			},
    		}
    		secret, err := secretmanager.NewSecret(ctx, "secret", &secretmanager.SecretArgs{
    			SecretId: pulumi.String("secret"),
    			Replication: &secretmanager.SecretReplicationArgs{
    				Auto: &secretmanager.SecretReplicationAutoArgs{},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		secretVersion, err := secretmanager.NewSecretVersion(ctx, "secret_version", &secretmanager.SecretVersionArgs{
    			Secret:     secret.ID(),
    			SecretData: pulumi.String("test"),
    		})
    		if err != nil {
    			return err
    		}
    		serviceAccount, err := serviceaccount.NewAccount(ctx, "service_account", &serviceaccount.AccountArgs{
    			AccountId: pulumi.String("sa"),
    		})
    		if err != nil {
    			return err
    		}
    		secretAccess, err := secretmanager.NewSecretIamMember(ctx, "secret_access", &secretmanager.SecretIamMemberArgs{
    			SecretId: secret.ID(),
    			Role:     pulumi.String("roles/secretmanager.secretAccessor"),
    			Member:   serviceAccount.Member,
    		})
    		if err != nil {
    			return err
    		}
    		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
    		if err != nil {
    			return err
    		}
    		saIamObjectViewer, err := projects.NewIAMMember(ctx, "sa_iam_object_viewer", &projects.IAMMemberArgs{
    			Role:    pulumi.String("roles/storage.objectViewer"),
    			Project: pulumi.String(pulumi.String(project.Id)),
    			Member:  serviceAccount.Member,
    		})
    		if err != nil {
    			return err
    		}
    		saIamAiPlatformUser, err := projects.NewIAMMember(ctx, "sa_iam_ai_platform_user", &projects.IAMMemberArgs{
    			Role:    pulumi.String("roles/aiplatform.user"),
    			Project: pulumi.String(pulumi.String(project.Id)),
    			Member:  serviceAccount.Member,
    		})
    		if err != nil {
    			return err
    		}
    		saIamViewer, err := projects.NewIAMMember(ctx, "sa_iam_viewer", &projects.IAMMemberArgs{
    			Role:    pulumi.String("roles/viewer"),
    			Project: pulumi.String(pulumi.String(project.Id)),
    			Member:  serviceAccount.Member,
    		})
    		if err != nil {
    			return err
    		}
    		// Ensure we wait enough time for IAM permissions to be propagated
    		wait5Minutes, err := time.NewSleep(ctx, "wait_5_minutes", &time.SleepArgs{
    			CreateDuration: pulumi.String("5m"),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			saIamAiPlatformUser,
    			saIamObjectViewer,
    			saIamViewer,
    			secretAccess,
    			secretVersion,
    		}))
    		if err != nil {
    			return err
    		}
    		bucket, err := storage.NewBucket(ctx, "bucket", &storage.BucketArgs{
    			Name:                     pulumi.String("reasoning-engine"),
    			Location:                 pulumi.String("us-central1"),
    			UniformBucketLevelAccess: pulumi.Bool(true),
    			ForceDestroy:             pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		bucketObjRequirementsTxt, err := storage.NewBucketObject(ctx, "bucket_obj_requirements_txt", &storage.BucketObjectArgs{
    			Name:   pulumi.String("requirements.txt"),
    			Bucket: bucket.ID(),
    			Source: pulumi.NewFileAsset("./test-fixtures/requirements_adk.txt"),
    		})
    		if err != nil {
    			return err
    		}
    		bucketObjPickle, err := storage.NewBucketObject(ctx, "bucket_obj_pickle", &storage.BucketObjectArgs{
    			Name:   pulumi.String("code.pkl"),
    			Bucket: bucket.ID(),
    			Source: pulumi.NewFileAsset("./test-fixtures/pickle_adk.pkl"),
    		})
    		if err != nil {
    			return err
    		}
    		bucketObjDependenciesTarGz, err := storage.NewBucketObject(ctx, "bucket_obj_dependencies_tar_gz", &storage.BucketObjectArgs{
    			Name:   pulumi.String("dependencies.tar.gz"),
    			Bucket: bucket.ID(),
    			Source: pulumi.NewFileAsset("./test-fixtures/dependencies_adk.tar.gz"),
    		})
    		if err != nil {
    			return err
    		}
    		tmpJSON0, err := json.Marshal(classMethods)
    		if err != nil {
    			return err
    		}
    		json0 := string(tmpJSON0)
    		_, err = vertex.NewAiReasoningEngine(ctx, "reasoning_engine", &vertex.AiReasoningEngineArgs{
    			DisplayName: pulumi.String("reasoning-engine"),
    			Description: pulumi.String("A basic reasoning engine"),
    			Region:      pulumi.String("us-central1"),
    			EncryptionSpec: &vertex.AiReasoningEngineEncryptionSpecArgs{
    				KmsKeyName: pulumi.String("example-key"),
    			},
    			Spec: &vertex.AiReasoningEngineSpecArgs{
    				AgentFramework: pulumi.String("google-adk"),
    				ClassMethods:   pulumi.String(pulumi.String(json0)),
    				ServiceAccount: serviceAccount.Email,
    				DeploymentSpec: &vertex.AiReasoningEngineSpecDeploymentSpecArgs{
    					MinInstances:         pulumi.Int(1),
    					MaxInstances:         pulumi.Int(3),
    					ContainerConcurrency: pulumi.Int(5),
    					ResourceLimits: pulumi.StringMap{
    						"cpu":    pulumi.String("4"),
    						"memory": pulumi.String("4Gi"),
    					},
    					Envs: vertex.AiReasoningEngineSpecDeploymentSpecEnvArray{
    						&vertex.AiReasoningEngineSpecDeploymentSpecEnvArgs{
    							Name:  pulumi.String("var_1"),
    							Value: pulumi.String("value_2"),
    						},
    						&vertex.AiReasoningEngineSpecDeploymentSpecEnvArgs{
    							Name:  pulumi.String("var_2"),
    							Value: pulumi.String("value_2"),
    						},
    					},
    					SecretEnvs: vertex.AiReasoningEngineSpecDeploymentSpecSecretEnvArray{
    						&vertex.AiReasoningEngineSpecDeploymentSpecSecretEnvArgs{
    							Name: pulumi.String("secret_var_1"),
    							SecretRef: &vertex.AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs{
    								Secret:  secret.SecretId,
    								Version: pulumi.String("latest"),
    							},
    						},
    						&vertex.AiReasoningEngineSpecDeploymentSpecSecretEnvArgs{
    							Name: pulumi.String("secret_var_2"),
    							SecretRef: &vertex.AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs{
    								Secret:  secret.SecretId,
    								Version: pulumi.String("latest"),
    							},
    						},
    					},
    				},
    				PackageSpec: &vertex.AiReasoningEngineSpecPackageSpecArgs{
    					DependencyFilesGcsUri: pulumi.All(bucket.Url, bucketObjDependenciesTarGz.Name).ApplyT(func(_args []interface{}) (string, error) {
    						url := _args[0].(string)
    						name := _args[1].(string)
    						return fmt.Sprintf("%v/%v", url, name), nil
    					}).(pulumi.StringOutput),
    					PickleObjectGcsUri: pulumi.All(bucket.Url, bucketObjPickle.Name).ApplyT(func(_args []interface{}) (string, error) {
    						url := _args[0].(string)
    						name := _args[1].(string)
    						return fmt.Sprintf("%v/%v", url, name), nil
    					}).(pulumi.StringOutput),
    					PythonVersion: pulumi.String("3.11"),
    					RequirementsGcsUri: pulumi.All(bucket.Url, bucketObjRequirementsTxt.Name).ApplyT(func(_args []interface{}) (string, error) {
    						url := _args[0].(string)
    						name := _args[1].(string)
    						return fmt.Sprintf("%v/%v", url, name), nil
    					}).(pulumi.StringOutput),
    				},
    			},
    		}, pulumi.DependsOn([]pulumi.Resource{
    			wait5Minutes,
    		}))
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.Json;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    using Time = Pulumiverse.Time;
    
    return await Deployment.RunAsync(() => 
    {
        var classMethods = new[]
        {
            
            {
                { "apiMode", "async" },
                { "description", null },
                { "name", "async_query" },
                { "parameters", 
                {
                    { "type", "object" },
                    { "required", new[] {} },
                    { "properties", null },
                } },
            },
        };
    
        var secret = new Gcp.SecretManager.Secret("secret", new()
        {
            SecretId = "secret",
            Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs
            {
                Auto = null,
            },
        });
    
        var secretVersion = new Gcp.SecretManager.SecretVersion("secret_version", new()
        {
            Secret = secret.Id,
            SecretData = "test",
        });
    
        var serviceAccount = new Gcp.ServiceAccount.Account("service_account", new()
        {
            AccountId = "sa",
        });
    
        var secretAccess = new Gcp.SecretManager.SecretIamMember("secret_access", new()
        {
            SecretId = secret.Id,
            Role = "roles/secretmanager.secretAccessor",
            Member = serviceAccount.Member,
        });
    
        var project = Gcp.Organizations.GetProject.Invoke();
    
        var saIamObjectViewer = new Gcp.Projects.IAMMember("sa_iam_object_viewer", new()
        {
            Role = "roles/storage.objectViewer",
            Project = project.Apply(getProjectResult => getProjectResult.Id),
            Member = serviceAccount.Member,
        });
    
        var saIamAiPlatformUser = new Gcp.Projects.IAMMember("sa_iam_ai_platform_user", new()
        {
            Role = "roles/aiplatform.user",
            Project = project.Apply(getProjectResult => getProjectResult.Id),
            Member = serviceAccount.Member,
        });
    
        var saIamViewer = new Gcp.Projects.IAMMember("sa_iam_viewer", new()
        {
            Role = "roles/viewer",
            Project = project.Apply(getProjectResult => getProjectResult.Id),
            Member = serviceAccount.Member,
        });
    
        // Ensure we wait enough time for IAM permissions to be propagated
        var wait5Minutes = new Time.Index.Sleep("wait_5_minutes", new()
        {
            CreateDuration = "5m",
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                saIamAiPlatformUser,
                saIamObjectViewer,
                saIamViewer,
                secretAccess,
                secretVersion,
            },
        });
    
        var bucket = new Gcp.Storage.Bucket("bucket", new()
        {
            Name = "reasoning-engine",
            Location = "us-central1",
            UniformBucketLevelAccess = true,
            ForceDestroy = true,
        });
    
        var bucketObjRequirementsTxt = new Gcp.Storage.BucketObject("bucket_obj_requirements_txt", new()
        {
            Name = "requirements.txt",
            Bucket = bucket.Id,
            Source = new FileAsset("./test-fixtures/requirements_adk.txt"),
        });
    
        var bucketObjPickle = new Gcp.Storage.BucketObject("bucket_obj_pickle", new()
        {
            Name = "code.pkl",
            Bucket = bucket.Id,
            Source = new FileAsset("./test-fixtures/pickle_adk.pkl"),
        });
    
        var bucketObjDependenciesTarGz = new Gcp.Storage.BucketObject("bucket_obj_dependencies_tar_gz", new()
        {
            Name = "dependencies.tar.gz",
            Bucket = bucket.Id,
            Source = new FileAsset("./test-fixtures/dependencies_adk.tar.gz"),
        });
    
        var reasoningEngine = new Gcp.Vertex.AiReasoningEngine("reasoning_engine", new()
        {
            DisplayName = "reasoning-engine",
            Description = "A basic reasoning engine",
            Region = "us-central1",
            EncryptionSpec = new Gcp.Vertex.Inputs.AiReasoningEngineEncryptionSpecArgs
            {
                KmsKeyName = "example-key",
            },
            Spec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecArgs
            {
                AgentFramework = "google-adk",
                ClassMethods = JsonSerializer.Serialize(classMethods),
                ServiceAccount = serviceAccount.Email,
                DeploymentSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecArgs
                {
                    MinInstances = 1,
                    MaxInstances = 3,
                    ContainerConcurrency = 5,
                    ResourceLimits = 
                    {
                        { "cpu", "4" },
                        { "memory", "4Gi" },
                    },
                    Envs = new[]
                    {
                        new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecEnvArgs
                        {
                            Name = "var_1",
                            Value = "value_2",
                        },
                        new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecEnvArgs
                        {
                            Name = "var_2",
                            Value = "value_2",
                        },
                    },
                    SecretEnvs = new[]
                    {
                        new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecSecretEnvArgs
                        {
                            Name = "secret_var_1",
                            SecretRef = new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs
                            {
                                Secret = secret.SecretId,
                                Version = "latest",
                            },
                        },
                        new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecSecretEnvArgs
                        {
                            Name = "secret_var_2",
                            SecretRef = new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs
                            {
                                Secret = secret.SecretId,
                                Version = "latest",
                            },
                        },
                    },
                },
                PackageSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecPackageSpecArgs
                {
                    DependencyFilesGcsUri = Output.Tuple(bucket.Url, bucketObjDependenciesTarGz.Name).Apply(values =>
                    {
                        var url = values.Item1;
                        var name = values.Item2;
                        return $"{url}/{name}";
                    }),
                    PickleObjectGcsUri = Output.Tuple(bucket.Url, bucketObjPickle.Name).Apply(values =>
                    {
                        var url = values.Item1;
                        var name = values.Item2;
                        return $"{url}/{name}";
                    }),
                    PythonVersion = "3.11",
                    RequirementsGcsUri = Output.Tuple(bucket.Url, bucketObjRequirementsTxt.Name).Apply(values =>
                    {
                        var url = values.Item1;
                        var name = values.Item2;
                        return $"{url}/{name}";
                    }),
                },
            },
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                wait5Minutes,
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.secretmanager.Secret;
    import com.pulumi.gcp.secretmanager.SecretArgs;
    import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
    import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
    import com.pulumi.gcp.secretmanager.SecretVersion;
    import com.pulumi.gcp.secretmanager.SecretVersionArgs;
    import com.pulumi.gcp.serviceaccount.Account;
    import com.pulumi.gcp.serviceaccount.AccountArgs;
    import com.pulumi.gcp.secretmanager.SecretIamMember;
    import com.pulumi.gcp.secretmanager.SecretIamMemberArgs;
    import com.pulumi.gcp.organizations.OrganizationsFunctions;
    import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
    import com.pulumi.gcp.projects.IAMMember;
    import com.pulumi.gcp.projects.IAMMemberArgs;
    import com.pulumiverse.time.Sleep;
    import com.pulumiverse.time.SleepArgs;
    import com.pulumi.gcp.storage.Bucket;
    import com.pulumi.gcp.storage.BucketArgs;
    import com.pulumi.gcp.storage.BucketObject;
    import com.pulumi.gcp.storage.BucketObjectArgs;
    import com.pulumi.gcp.vertex.AiReasoningEngine;
    import com.pulumi.gcp.vertex.AiReasoningEngineArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineEncryptionSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecDeploymentSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineSpecPackageSpecArgs;
    import com.pulumi.asset.FileAsset;
    import static com.pulumi.codegen.internal.Serialization.*;
    import com.pulumi.resources.CustomResourceOptions;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var classMethods = List.of(Map.ofEntries(
                Map.entry("apiMode", "async"),
                Map.entry("description", null),
                Map.entry("name", "async_query"),
                Map.entry("parameters", Map.ofEntries(
                    Map.entry("type", "object"),
                    Map.entry("required", List.of()),
                    Map.entry("properties", Map.ofEntries(
                    ))
                ))
            ));
    
            var secret = new Secret("secret", SecretArgs.builder()
                .secretId("secret")
                .replication(SecretReplicationArgs.builder()
                    .auto(SecretReplicationAutoArgs.builder()
                        .build())
                    .build())
                .build());
    
            var secretVersion = new SecretVersion("secretVersion", SecretVersionArgs.builder()
                .secret(secret.id())
                .secretData("test")
                .build());
    
            var serviceAccount = new Account("serviceAccount", AccountArgs.builder()
                .accountId("sa")
                .build());
    
            var secretAccess = new SecretIamMember("secretAccess", SecretIamMemberArgs.builder()
                .secretId(secret.id())
                .role("roles/secretmanager.secretAccessor")
                .member(serviceAccount.member())
                .build());
    
            final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
                .build());
    
            var saIamObjectViewer = new IAMMember("saIamObjectViewer", IAMMemberArgs.builder()
                .role("roles/storage.objectViewer")
                .project(project.id())
                .member(serviceAccount.member())
                .build());
    
            var saIamAiPlatformUser = new IAMMember("saIamAiPlatformUser", IAMMemberArgs.builder()
                .role("roles/aiplatform.user")
                .project(project.id())
                .member(serviceAccount.member())
                .build());
    
            var saIamViewer = new IAMMember("saIamViewer", IAMMemberArgs.builder()
                .role("roles/viewer")
                .project(project.id())
                .member(serviceAccount.member())
                .build());
    
            // Ensure we wait enough time for IAM permissions to be propagated
            var wait5Minutes = new Sleep("wait5Minutes", SleepArgs.builder()
                .createDuration("5m")
                .build(), CustomResourceOptions.builder()
                    .dependsOn(                
                        saIamAiPlatformUser,
                        saIamObjectViewer,
                        saIamViewer,
                        secretAccess,
                        secretVersion)
                    .build());
    
            var bucket = new Bucket("bucket", BucketArgs.builder()
                .name("reasoning-engine")
                .location("us-central1")
                .uniformBucketLevelAccess(true)
                .forceDestroy(true)
                .build());
    
            var bucketObjRequirementsTxt = new BucketObject("bucketObjRequirementsTxt", BucketObjectArgs.builder()
                .name("requirements.txt")
                .bucket(bucket.id())
                .source(new FileAsset("./test-fixtures/requirements_adk.txt"))
                .build());
    
            var bucketObjPickle = new BucketObject("bucketObjPickle", BucketObjectArgs.builder()
                .name("code.pkl")
                .bucket(bucket.id())
                .source(new FileAsset("./test-fixtures/pickle_adk.pkl"))
                .build());
    
            var bucketObjDependenciesTarGz = new BucketObject("bucketObjDependenciesTarGz", BucketObjectArgs.builder()
                .name("dependencies.tar.gz")
                .bucket(bucket.id())
                .source(new FileAsset("./test-fixtures/dependencies_adk.tar.gz"))
                .build());
    
            var reasoningEngine = new AiReasoningEngine("reasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("reasoning-engine")
                .description("A basic reasoning engine")
                .region("us-central1")
                .encryptionSpec(AiReasoningEngineEncryptionSpecArgs.builder()
                    .kmsKeyName("example-key")
                    .build())
                .spec(AiReasoningEngineSpecArgs.builder()
                    .agentFramework("google-adk")
                    .classMethods(serializeJson(
                        classMethods))
                    .serviceAccount(serviceAccount.email())
                    .deploymentSpec(AiReasoningEngineSpecDeploymentSpecArgs.builder()
                        .minInstances(1)
                        .maxInstances(3)
                        .containerConcurrency(5)
                        .resourceLimits(Map.ofEntries(
                            Map.entry("cpu", "4"),
                            Map.entry("memory", "4Gi")
                        ))
                        .envs(                    
                            AiReasoningEngineSpecDeploymentSpecEnvArgs.builder()
                                .name("var_1")
                                .value("value_2")
                                .build(),
                            AiReasoningEngineSpecDeploymentSpecEnvArgs.builder()
                                .name("var_2")
                                .value("value_2")
                                .build())
                        .secretEnvs(                    
                            AiReasoningEngineSpecDeploymentSpecSecretEnvArgs.builder()
                                .name("secret_var_1")
                                .secretRef(AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs.builder()
                                    .secret(secret.secretId())
                                    .version("latest")
                                    .build())
                                .build(),
                            AiReasoningEngineSpecDeploymentSpecSecretEnvArgs.builder()
                                .name("secret_var_2")
                                .secretRef(AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs.builder()
                                    .secret(secret.secretId())
                                    .version("latest")
                                    .build())
                                .build())
                        .build())
                    .packageSpec(AiReasoningEngineSpecPackageSpecArgs.builder()
                        .dependencyFilesGcsUri(Output.tuple(bucket.url(), bucketObjDependenciesTarGz.name()).applyValue(values -> {
                            var url = values.t1;
                            var name = values.t2;
                            return String.format("%s/%s", url,name);
                        }))
                        .pickleObjectGcsUri(Output.tuple(bucket.url(), bucketObjPickle.name()).applyValue(values -> {
                            var url = values.t1;
                            var name = values.t2;
                            return String.format("%s/%s", url,name);
                        }))
                        .pythonVersion("3.11")
                        .requirementsGcsUri(Output.tuple(bucket.url(), bucketObjRequirementsTxt.name()).applyValue(values -> {
                            var url = values.t1;
                            var name = values.t2;
                            return String.format("%s/%s", url,name);
                        }))
                        .build())
                    .build())
                .build(), CustomResourceOptions.builder()
                    .dependsOn(wait5Minutes)
                    .build());
    
        }
    }
    
    resources:
      reasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: reasoning_engine
        properties:
          displayName: reasoning-engine
          description: A basic reasoning engine
          region: us-central1
          encryptionSpec:
            kmsKeyName: example-key
          spec:
            agentFramework: google-adk
            classMethods:
              fn::toJSON: ${classMethods}
            serviceAccount: ${serviceAccount.email}
            deploymentSpec:
              minInstances: 1
              maxInstances: 3
              containerConcurrency: 5
              resourceLimits:
                cpu: '4'
                memory: 4Gi
              envs:
                - name: var_1
                  value: value_2
                - name: var_2
                  value: value_2
              secretEnvs:
                - name: secret_var_1
                  secretRef:
                    secret: ${secret.secretId}
                    version: latest
                - name: secret_var_2
                  secretRef:
                    secret: ${secret.secretId}
                    version: latest
            packageSpec:
              dependencyFilesGcsUri: ${bucket.url}/${bucketObjDependenciesTarGz.name}
              pickleObjectGcsUri: ${bucket.url}/${bucketObjPickle.name}
              pythonVersion: '3.11'
              requirementsGcsUri: ${bucket.url}/${bucketObjRequirementsTxt.name}
        options:
          dependsOn:
            - ${wait5Minutes}
      # Ensure we wait enough time for IAM permissions to be propagated
      wait5Minutes:
        type: time:Sleep
        name: wait_5_minutes
        properties:
          createDuration: 5m
        options:
          dependsOn:
            - ${saIamAiPlatformUser}
            - ${saIamObjectViewer}
            - ${saIamViewer}
            - ${secretAccess}
            - ${secretVersion}
      secretVersion:
        type: gcp:secretmanager:SecretVersion
        name: secret_version
        properties:
          secret: ${secret.id}
          secretData: test
      secret:
        type: gcp:secretmanager:Secret
        properties:
          secretId: secret
          replication:
            auto: {}
      secretAccess:
        type: gcp:secretmanager:SecretIamMember
        name: secret_access
        properties:
          secretId: ${secret.id}
          role: roles/secretmanager.secretAccessor
          member: ${serviceAccount.member}
      bucket:
        type: gcp:storage:Bucket
        properties:
          name: reasoning-engine
          location: us-central1
          uniformBucketLevelAccess: true
          forceDestroy: true
      bucketObjRequirementsTxt:
        type: gcp:storage:BucketObject
        name: bucket_obj_requirements_txt
        properties:
          name: requirements.txt
          bucket: ${bucket.id}
          source:
            fn::FileAsset: ./test-fixtures/requirements_adk.txt
      bucketObjPickle:
        type: gcp:storage:BucketObject
        name: bucket_obj_pickle
        properties:
          name: code.pkl
          bucket: ${bucket.id}
          source:
            fn::FileAsset: ./test-fixtures/pickle_adk.pkl
      bucketObjDependenciesTarGz:
        type: gcp:storage:BucketObject
        name: bucket_obj_dependencies_tar_gz
        properties:
          name: dependencies.tar.gz
          bucket: ${bucket.id}
          source:
            fn::FileAsset: ./test-fixtures/dependencies_adk.tar.gz
      serviceAccount:
        type: gcp:serviceaccount:Account
        name: service_account
        properties:
          accountId: sa
      saIamObjectViewer:
        type: gcp:projects:IAMMember
        name: sa_iam_object_viewer
        properties:
          role: roles/storage.objectViewer
          project: ${project.id}
          member: ${serviceAccount.member}
      saIamAiPlatformUser:
        type: gcp:projects:IAMMember
        name: sa_iam_ai_platform_user
        properties:
          role: roles/aiplatform.user
          project: ${project.id}
          member: ${serviceAccount.member}
      saIamViewer:
        type: gcp:projects:IAMMember
        name: sa_iam_viewer
        properties:
          role: roles/viewer
          project: ${project.id}
          member: ${serviceAccount.member}
    variables:
      classMethods:
        - apiMode: async
          description: null
          name: async_query
          parameters:
            type: object
            required: []
            properties: {}
      project:
        fn::invoke:
          function: gcp:organizations:getProject
          arguments: {}
    
    Example coming soon!
    

    Vertex Ai Reasoning Engine Context Spec

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const project = gcp.organizations.getProject({});
    const reasoningEngine = new gcp.vertex.AiReasoningEngine("reasoning_engine", {
        displayName: "re-ctx-spec",
        description: "Reasoning engine with context spec",
        region: "us-central1",
        contextSpec: {
            memoryBankConfig: {
                generationConfig: {
                    model: project.then(project => `projects/${project.projectId}/locations/us-central1/publishers/google/models/gemini-2.5-flash`),
                },
                similaritySearchConfig: {
                    embeddingModel: project.then(project => `projects/${project.projectId}/locations/us-central1/publishers/google/models/text-embedding-005`),
                },
                disableMemoryRevisions: false,
                ttlConfig: {
                    defaultTtl: "86400s",
                },
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    project = gcp.organizations.get_project()
    reasoning_engine = gcp.vertex.AiReasoningEngine("reasoning_engine",
        display_name="re-ctx-spec",
        description="Reasoning engine with context spec",
        region="us-central1",
        context_spec={
            "memory_bank_config": {
                "generation_config": {
                    "model": f"projects/{project.project_id}/locations/us-central1/publishers/google/models/gemini-2.5-flash",
                },
                "similarity_search_config": {
                    "embedding_model": f"projects/{project.project_id}/locations/us-central1/publishers/google/models/text-embedding-005",
                },
                "disable_memory_revisions": False,
                "ttl_config": {
                    "default_ttl": "86400s",
                },
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/vertex"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = vertex.NewAiReasoningEngine(ctx, "reasoning_engine", &vertex.AiReasoningEngineArgs{
    			DisplayName: pulumi.String("re-ctx-spec"),
    			Description: pulumi.String("Reasoning engine with context spec"),
    			Region:      pulumi.String("us-central1"),
    			ContextSpec: &vertex.AiReasoningEngineContextSpecArgs{
    				MemoryBankConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigArgs{
    					GenerationConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs{
    						Model: pulumi.Sprintf("projects/%v/locations/us-central1/publishers/google/models/gemini-2.5-flash", project.ProjectId),
    					},
    					SimilaritySearchConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs{
    						EmbeddingModel: pulumi.Sprintf("projects/%v/locations/us-central1/publishers/google/models/text-embedding-005", project.ProjectId),
    					},
    					DisableMemoryRevisions: pulumi.Bool(false),
    					TtlConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs{
    						DefaultTtl: pulumi.String("86400s"),
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var project = Gcp.Organizations.GetProject.Invoke();
    
        var reasoningEngine = new Gcp.Vertex.AiReasoningEngine("reasoning_engine", new()
        {
            DisplayName = "re-ctx-spec",
            Description = "Reasoning engine with context spec",
            Region = "us-central1",
            ContextSpec = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecArgs
            {
                MemoryBankConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigArgs
                {
                    GenerationConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs
                    {
                        Model = $"projects/{project.Apply(getProjectResult => getProjectResult.ProjectId)}/locations/us-central1/publishers/google/models/gemini-2.5-flash",
                    },
                    SimilaritySearchConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs
                    {
                        EmbeddingModel = $"projects/{project.Apply(getProjectResult => getProjectResult.ProjectId)}/locations/us-central1/publishers/google/models/text-embedding-005",
                    },
                    DisableMemoryRevisions = false,
                    TtlConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs
                    {
                        DefaultTtl = "86400s",
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.organizations.OrganizationsFunctions;
    import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
    import com.pulumi.gcp.vertex.AiReasoningEngine;
    import com.pulumi.gcp.vertex.AiReasoningEngineArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
                .build());
    
            var reasoningEngine = new AiReasoningEngine("reasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("re-ctx-spec")
                .description("Reasoning engine with context spec")
                .region("us-central1")
                .contextSpec(AiReasoningEngineContextSpecArgs.builder()
                    .memoryBankConfig(AiReasoningEngineContextSpecMemoryBankConfigArgs.builder()
                        .generationConfig(AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs.builder()
                            .model(String.format("projects/%s/locations/us-central1/publishers/google/models/gemini-2.5-flash", project.projectId()))
                            .build())
                        .similaritySearchConfig(AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs.builder()
                            .embeddingModel(String.format("projects/%s/locations/us-central1/publishers/google/models/text-embedding-005", project.projectId()))
                            .build())
                        .disableMemoryRevisions(false)
                        .ttlConfig(AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs.builder()
                            .defaultTtl("86400s")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      reasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: reasoning_engine
        properties:
          displayName: re-ctx-spec
          description: Reasoning engine with context spec
          region: us-central1
          contextSpec:
            memoryBankConfig:
              generationConfig:
                model: projects/${project.projectId}/locations/us-central1/publishers/google/models/gemini-2.5-flash
              similaritySearchConfig:
                embeddingModel: projects/${project.projectId}/locations/us-central1/publishers/google/models/text-embedding-005
              disableMemoryRevisions: false
              ttlConfig:
                defaultTtl: 86400s
    variables:
      project:
        fn::invoke:
          function: gcp:organizations:getProject
          arguments: {}
    
    Example coming soon!
    

    Vertex Ai Reasoning Engine Granular Ttl

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const project = gcp.organizations.getProject({});
    const reasoningEngine = new gcp.vertex.AiReasoningEngine("reasoning_engine", {
        displayName: "re-gran-ttl",
        description: "Reasoning engine with granular ttl",
        region: "us-central1",
        contextSpec: {
            memoryBankConfig: {
                generationConfig: {
                    model: project.then(project => `projects/${project.projectId}/locations/us-central1/publishers/google/models/gemini-2.5-flash`),
                },
                similaritySearchConfig: {
                    embeddingModel: project.then(project => `projects/${project.projectId}/locations/us-central1/publishers/google/models/text-embedding-005`),
                },
                disableMemoryRevisions: false,
                ttlConfig: {
                    memoryRevisionDefaultTtl: "86400s",
                    granularTtlConfig: {
                        createTtl: "86400s",
                        generateCreatedTtl: "86400s",
                        generateUpdatedTtl: "86400s",
                    },
                },
            },
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    project = gcp.organizations.get_project()
    reasoning_engine = gcp.vertex.AiReasoningEngine("reasoning_engine",
        display_name="re-gran-ttl",
        description="Reasoning engine with granular ttl",
        region="us-central1",
        context_spec={
            "memory_bank_config": {
                "generation_config": {
                    "model": f"projects/{project.project_id}/locations/us-central1/publishers/google/models/gemini-2.5-flash",
                },
                "similarity_search_config": {
                    "embedding_model": f"projects/{project.project_id}/locations/us-central1/publishers/google/models/text-embedding-005",
                },
                "disable_memory_revisions": False,
                "ttl_config": {
                    "memory_revision_default_ttl": "86400s",
                    "granular_ttl_config": {
                        "create_ttl": "86400s",
                        "generate_created_ttl": "86400s",
                        "generate_updated_ttl": "86400s",
                    },
                },
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
    	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/vertex"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = vertex.NewAiReasoningEngine(ctx, "reasoning_engine", &vertex.AiReasoningEngineArgs{
    			DisplayName: pulumi.String("re-gran-ttl"),
    			Description: pulumi.String("Reasoning engine with granular ttl"),
    			Region:      pulumi.String("us-central1"),
    			ContextSpec: &vertex.AiReasoningEngineContextSpecArgs{
    				MemoryBankConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigArgs{
    					GenerationConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs{
    						Model: pulumi.Sprintf("projects/%v/locations/us-central1/publishers/google/models/gemini-2.5-flash", project.ProjectId),
    					},
    					SimilaritySearchConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs{
    						EmbeddingModel: pulumi.Sprintf("projects/%v/locations/us-central1/publishers/google/models/text-embedding-005", project.ProjectId),
    					},
    					DisableMemoryRevisions: pulumi.Bool(false),
    					TtlConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs{
    						MemoryRevisionDefaultTtl: pulumi.String("86400s"),
    						GranularTtlConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfigArgs{
    							CreateTtl:          pulumi.String("86400s"),
    							GenerateCreatedTtl: pulumi.String("86400s"),
    							GenerateUpdatedTtl: pulumi.String("86400s"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var project = Gcp.Organizations.GetProject.Invoke();
    
        var reasoningEngine = new Gcp.Vertex.AiReasoningEngine("reasoning_engine", new()
        {
            DisplayName = "re-gran-ttl",
            Description = "Reasoning engine with granular ttl",
            Region = "us-central1",
            ContextSpec = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecArgs
            {
                MemoryBankConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigArgs
                {
                    GenerationConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs
                    {
                        Model = $"projects/{project.Apply(getProjectResult => getProjectResult.ProjectId)}/locations/us-central1/publishers/google/models/gemini-2.5-flash",
                    },
                    SimilaritySearchConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs
                    {
                        EmbeddingModel = $"projects/{project.Apply(getProjectResult => getProjectResult.ProjectId)}/locations/us-central1/publishers/google/models/text-embedding-005",
                    },
                    DisableMemoryRevisions = false,
                    TtlConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs
                    {
                        MemoryRevisionDefaultTtl = "86400s",
                        GranularTtlConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfigArgs
                        {
                            CreateTtl = "86400s",
                            GenerateCreatedTtl = "86400s",
                            GenerateUpdatedTtl = "86400s",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.organizations.OrganizationsFunctions;
    import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
    import com.pulumi.gcp.vertex.AiReasoningEngine;
    import com.pulumi.gcp.vertex.AiReasoningEngineArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs;
    import com.pulumi.gcp.vertex.inputs.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfigArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
                .build());
    
            var reasoningEngine = new AiReasoningEngine("reasoningEngine", AiReasoningEngineArgs.builder()
                .displayName("re-gran-ttl")
                .description("Reasoning engine with granular ttl")
                .region("us-central1")
                .contextSpec(AiReasoningEngineContextSpecArgs.builder()
                    .memoryBankConfig(AiReasoningEngineContextSpecMemoryBankConfigArgs.builder()
                        .generationConfig(AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs.builder()
                            .model(String.format("projects/%s/locations/us-central1/publishers/google/models/gemini-2.5-flash", project.projectId()))
                            .build())
                        .similaritySearchConfig(AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs.builder()
                            .embeddingModel(String.format("projects/%s/locations/us-central1/publishers/google/models/text-embedding-005", project.projectId()))
                            .build())
                        .disableMemoryRevisions(false)
                        .ttlConfig(AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs.builder()
                            .memoryRevisionDefaultTtl("86400s")
                            .granularTtlConfig(AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfigArgs.builder()
                                .createTtl("86400s")
                                .generateCreatedTtl("86400s")
                                .generateUpdatedTtl("86400s")
                                .build())
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      reasoningEngine:
        type: gcp:vertex:AiReasoningEngine
        name: reasoning_engine
        properties:
          displayName: re-gran-ttl
          description: Reasoning engine with granular ttl
          region: us-central1
          contextSpec:
            memoryBankConfig:
              generationConfig:
                model: projects/${project.projectId}/locations/us-central1/publishers/google/models/gemini-2.5-flash
              similaritySearchConfig:
                embeddingModel: projects/${project.projectId}/locations/us-central1/publishers/google/models/text-embedding-005
              disableMemoryRevisions: false
              ttlConfig:
                memoryRevisionDefaultTtl: 86400s
                granularTtlConfig:
                  createTtl: 86400s
                  generateCreatedTtl: 86400s
                  generateUpdatedTtl: 86400s
    variables:
      project:
        fn::invoke:
          function: gcp:organizations:getProject
          arguments: {}
    
    Example coming soon!
    

    Create AiReasoningEngine Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new AiReasoningEngine(name: string, args: AiReasoningEngineArgs, opts?: CustomResourceOptions);
    @overload
    def AiReasoningEngine(resource_name: str,
                          args: AiReasoningEngineArgs,
                          opts: Optional[ResourceOptions] = None)
    
    @overload
    def AiReasoningEngine(resource_name: str,
                          opts: Optional[ResourceOptions] = None,
                          display_name: Optional[str] = None,
                          context_spec: Optional[AiReasoningEngineContextSpecArgs] = None,
                          deletion_policy: Optional[str] = None,
                          description: Optional[str] = None,
                          encryption_spec: Optional[AiReasoningEngineEncryptionSpecArgs] = None,
                          labels: Optional[Mapping[str, str]] = None,
                          project: Optional[str] = None,
                          region: Optional[str] = None,
                          spec: Optional[AiReasoningEngineSpecArgs] = None)
    func NewAiReasoningEngine(ctx *Context, name string, args AiReasoningEngineArgs, opts ...ResourceOption) (*AiReasoningEngine, error)
    public AiReasoningEngine(string name, AiReasoningEngineArgs args, CustomResourceOptions? opts = null)
    public AiReasoningEngine(String name, AiReasoningEngineArgs args)
    public AiReasoningEngine(String name, AiReasoningEngineArgs args, CustomResourceOptions options)
    
    type: gcp:vertex:AiReasoningEngine
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    
    resource "gcp_vertex_aireasoningengine" "name" {
        # resource properties
    }

    Parameters

    name string
    The unique name of the resource.
    args AiReasoningEngineArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args AiReasoningEngineArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args AiReasoningEngineArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args AiReasoningEngineArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args AiReasoningEngineArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var aiReasoningEngineResource = new Gcp.Vertex.AiReasoningEngine("aiReasoningEngineResource", new()
    {
        DisplayName = "string",
        ContextSpec = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecArgs
        {
            MemoryBankConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigArgs
            {
                DisableMemoryRevisions = false,
                GenerationConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs
                {
                    Model = "string",
                },
                SimilaritySearchConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs
                {
                    EmbeddingModel = "string",
                },
                TtlConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs
                {
                    DefaultTtl = "string",
                    GranularTtlConfig = new Gcp.Vertex.Inputs.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfigArgs
                    {
                        CreateTtl = "string",
                        GenerateCreatedTtl = "string",
                        GenerateUpdatedTtl = "string",
                    },
                    MemoryRevisionDefaultTtl = "string",
                },
            },
        },
        DeletionPolicy = "string",
        Description = "string",
        EncryptionSpec = new Gcp.Vertex.Inputs.AiReasoningEngineEncryptionSpecArgs
        {
            KmsKeyName = "string",
        },
        Labels = 
        {
            { "string", "string" },
        },
        Project = "string",
        Region = "string",
        Spec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecArgs
        {
            AgentFramework = "string",
            ClassMethods = "string",
            ContainerSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecContainerSpecArgs
            {
                ImageUri = "string",
            },
            DeploymentSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecArgs
            {
                ContainerConcurrency = 0,
                Envs = new[]
                {
                    new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecEnvArgs
                    {
                        Name = "string",
                        Value = "string",
                    },
                },
                MaxInstances = 0,
                MinInstances = 0,
                PscInterfaceConfig = new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigArgs
                {
                    DnsPeeringConfigs = new[]
                    {
                        new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArgs
                        {
                            Domain = "string",
                            TargetNetwork = "string",
                            TargetProject = "string",
                        },
                    },
                    NetworkAttachment = "string",
                },
                ResourceLimits = 
                {
                    { "string", "string" },
                },
                SecretEnvs = new[]
                {
                    new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecSecretEnvArgs
                    {
                        Name = "string",
                        SecretRef = new Gcp.Vertex.Inputs.AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs
                        {
                            Secret = "string",
                            Version = "string",
                        },
                    },
                },
            },
            EffectiveIdentity = "string",
            IdentityType = "string",
            PackageSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecPackageSpecArgs
            {
                DependencyFilesGcsUri = "string",
                PickleObjectGcsUri = "string",
                PythonVersion = "string",
                RequirementsGcsUri = "string",
            },
            ServiceAccount = "string",
            SourceCodeSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecArgs
            {
                DeveloperConnectSource = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceArgs
                {
                    Config = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfigArgs
                    {
                        Dir = "string",
                        GitRepositoryLink = "string",
                        Revision = "string",
                    },
                },
                ImageSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecImageSpecArgs
                {
                    BuildArgs = 
                    {
                        { "string", "string" },
                    },
                },
                InlineSource = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs
                {
                    SourceArchive = "string",
                },
                PythonSpec = new Gcp.Vertex.Inputs.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs
                {
                    EntrypointModule = "string",
                    EntrypointObject = "string",
                    RequirementsFile = "string",
                    Version = "string",
                },
            },
        },
    });
    
    example, err := vertex.NewAiReasoningEngine(ctx, "aiReasoningEngineResource", &vertex.AiReasoningEngineArgs{
    	DisplayName: pulumi.String("string"),
    	ContextSpec: &vertex.AiReasoningEngineContextSpecArgs{
    		MemoryBankConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigArgs{
    			DisableMemoryRevisions: pulumi.Bool(false),
    			GenerationConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs{
    				Model: pulumi.String("string"),
    			},
    			SimilaritySearchConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs{
    				EmbeddingModel: pulumi.String("string"),
    			},
    			TtlConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs{
    				DefaultTtl: pulumi.String("string"),
    				GranularTtlConfig: &vertex.AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfigArgs{
    					CreateTtl:          pulumi.String("string"),
    					GenerateCreatedTtl: pulumi.String("string"),
    					GenerateUpdatedTtl: pulumi.String("string"),
    				},
    				MemoryRevisionDefaultTtl: pulumi.String("string"),
    			},
    		},
    	},
    	DeletionPolicy: pulumi.String("string"),
    	Description:    pulumi.String("string"),
    	EncryptionSpec: &vertex.AiReasoningEngineEncryptionSpecArgs{
    		KmsKeyName: pulumi.String("string"),
    	},
    	Labels: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	Project: pulumi.String("string"),
    	Region:  pulumi.String("string"),
    	Spec: &vertex.AiReasoningEngineSpecArgs{
    		AgentFramework: pulumi.String("string"),
    		ClassMethods:   pulumi.String("string"),
    		ContainerSpec: &vertex.AiReasoningEngineSpecContainerSpecArgs{
    			ImageUri: pulumi.String("string"),
    		},
    		DeploymentSpec: &vertex.AiReasoningEngineSpecDeploymentSpecArgs{
    			ContainerConcurrency: pulumi.Int(0),
    			Envs: vertex.AiReasoningEngineSpecDeploymentSpecEnvArray{
    				&vertex.AiReasoningEngineSpecDeploymentSpecEnvArgs{
    					Name:  pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    			MaxInstances: pulumi.Int(0),
    			MinInstances: pulumi.Int(0),
    			PscInterfaceConfig: &vertex.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigArgs{
    				DnsPeeringConfigs: vertex.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArray{
    					&vertex.AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArgs{
    						Domain:        pulumi.String("string"),
    						TargetNetwork: pulumi.String("string"),
    						TargetProject: pulumi.String("string"),
    					},
    				},
    				NetworkAttachment: pulumi.String("string"),
    			},
    			ResourceLimits: pulumi.StringMap{
    				"string": pulumi.String("string"),
    			},
    			SecretEnvs: vertex.AiReasoningEngineSpecDeploymentSpecSecretEnvArray{
    				&vertex.AiReasoningEngineSpecDeploymentSpecSecretEnvArgs{
    					Name: pulumi.String("string"),
    					SecretRef: &vertex.AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs{
    						Secret:  pulumi.String("string"),
    						Version: pulumi.String("string"),
    					},
    				},
    			},
    		},
    		EffectiveIdentity: pulumi.String("string"),
    		IdentityType:      pulumi.String("string"),
    		PackageSpec: &vertex.AiReasoningEngineSpecPackageSpecArgs{
    			DependencyFilesGcsUri: pulumi.String("string"),
    			PickleObjectGcsUri:    pulumi.String("string"),
    			PythonVersion:         pulumi.String("string"),
    			RequirementsGcsUri:    pulumi.String("string"),
    		},
    		ServiceAccount: pulumi.String("string"),
    		SourceCodeSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecArgs{
    			DeveloperConnectSource: &vertex.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceArgs{
    				Config: &vertex.AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfigArgs{
    					Dir:               pulumi.String("string"),
    					GitRepositoryLink: pulumi.String("string"),
    					Revision:          pulumi.String("string"),
    				},
    			},
    			ImageSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecImageSpecArgs{
    				BuildArgs: pulumi.StringMap{
    					"string": pulumi.String("string"),
    				},
    			},
    			InlineSource: &vertex.AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs{
    				SourceArchive: pulumi.String("string"),
    			},
    			PythonSpec: &vertex.AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs{
    				EntrypointModule: pulumi.String("string"),
    				EntrypointObject: pulumi.String("string"),
    				RequirementsFile: pulumi.String("string"),
    				Version:          pulumi.String("string"),
    			},
    		},
    	},
    })
    
    resource "gcp_vertex_aireasoningengine" "aiReasoningEngineResource" {
      display_name = "string"
      context_spec = {
        memory_bank_config = {
          disable_memory_revisions = false
          generation_config = {
            model = "string"
          }
          similarity_search_config = {
            embedding_model = "string"
          }
          ttl_config = {
            default_ttl = "string"
            granular_ttl_config = {
              create_ttl           = "string"
              generate_created_ttl = "string"
              generate_updated_ttl = "string"
            }
            memory_revision_default_ttl = "string"
          }
        }
      }
      deletion_policy = "string"
      description     = "string"
      encryption_spec = {
        kms_key_name = "string"
      }
      labels = {
        "string" = "string"
      }
      project = "string"
      region  = "string"
      spec = {
        agent_framework = "string"
        class_methods   = "string"
        container_spec = {
          image_uri = "string"
        }
        deployment_spec = {
          container_concurrency = 0
          envs = [{
            "name"  = "string"
            "value" = "string"
          }]
          max_instances = 0
          min_instances = 0
          psc_interface_config = {
            dns_peering_configs = [{
              "domain"        = "string"
              "targetNetwork" = "string"
              "targetProject" = "string"
            }]
            network_attachment = "string"
          }
          resource_limits = {
            "string" = "string"
          }
          secret_envs = [{
            "name" = "string"
            "secretRef" = {
              "secret"  = "string"
              "version" = "string"
            }
          }]
        }
        effective_identity = "string"
        identity_type      = "string"
        package_spec = {
          dependency_files_gcs_uri = "string"
          pickle_object_gcs_uri    = "string"
          python_version           = "string"
          requirements_gcs_uri     = "string"
        }
        service_account = "string"
        source_code_spec = {
          developer_connect_source = {
            config = {
              dir                 = "string"
              git_repository_link = "string"
              revision            = "string"
            }
          }
          image_spec = {
            build_args = {
              "string" = "string"
            }
          }
          inline_source = {
            source_archive = "string"
          }
          python_spec = {
            entrypoint_module = "string"
            entrypoint_object = "string"
            requirements_file = "string"
            version           = "string"
          }
        }
      }
    }
    
    var aiReasoningEngineResource = new AiReasoningEngine("aiReasoningEngineResource", AiReasoningEngineArgs.builder()
        .displayName("string")
        .contextSpec(AiReasoningEngineContextSpecArgs.builder()
            .memoryBankConfig(AiReasoningEngineContextSpecMemoryBankConfigArgs.builder()
                .disableMemoryRevisions(false)
                .generationConfig(AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs.builder()
                    .model("string")
                    .build())
                .similaritySearchConfig(AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs.builder()
                    .embeddingModel("string")
                    .build())
                .ttlConfig(AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs.builder()
                    .defaultTtl("string")
                    .granularTtlConfig(AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfigArgs.builder()
                        .createTtl("string")
                        .generateCreatedTtl("string")
                        .generateUpdatedTtl("string")
                        .build())
                    .memoryRevisionDefaultTtl("string")
                    .build())
                .build())
            .build())
        .deletionPolicy("string")
        .description("string")
        .encryptionSpec(AiReasoningEngineEncryptionSpecArgs.builder()
            .kmsKeyName("string")
            .build())
        .labels(Map.of("string", "string"))
        .project("string")
        .region("string")
        .spec(AiReasoningEngineSpecArgs.builder()
            .agentFramework("string")
            .classMethods("string")
            .containerSpec(AiReasoningEngineSpecContainerSpecArgs.builder()
                .imageUri("string")
                .build())
            .deploymentSpec(AiReasoningEngineSpecDeploymentSpecArgs.builder()
                .containerConcurrency(0)
                .envs(AiReasoningEngineSpecDeploymentSpecEnvArgs.builder()
                    .name("string")
                    .value("string")
                    .build())
                .maxInstances(0)
                .minInstances(0)
                .pscInterfaceConfig(AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigArgs.builder()
                    .dnsPeeringConfigs(AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArgs.builder()
                        .domain("string")
                        .targetNetwork("string")
                        .targetProject("string")
                        .build())
                    .networkAttachment("string")
                    .build())
                .resourceLimits(Map.of("string", "string"))
                .secretEnvs(AiReasoningEngineSpecDeploymentSpecSecretEnvArgs.builder()
                    .name("string")
                    .secretRef(AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs.builder()
                        .secret("string")
                        .version("string")
                        .build())
                    .build())
                .build())
            .effectiveIdentity("string")
            .identityType("string")
            .packageSpec(AiReasoningEngineSpecPackageSpecArgs.builder()
                .dependencyFilesGcsUri("string")
                .pickleObjectGcsUri("string")
                .pythonVersion("string")
                .requirementsGcsUri("string")
                .build())
            .serviceAccount("string")
            .sourceCodeSpec(AiReasoningEngineSpecSourceCodeSpecArgs.builder()
                .developerConnectSource(AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceArgs.builder()
                    .config(AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfigArgs.builder()
                        .dir("string")
                        .gitRepositoryLink("string")
                        .revision("string")
                        .build())
                    .build())
                .imageSpec(AiReasoningEngineSpecSourceCodeSpecImageSpecArgs.builder()
                    .buildArgs(Map.of("string", "string"))
                    .build())
                .inlineSource(AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs.builder()
                    .sourceArchive("string")
                    .build())
                .pythonSpec(AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs.builder()
                    .entrypointModule("string")
                    .entrypointObject("string")
                    .requirementsFile("string")
                    .version("string")
                    .build())
                .build())
            .build())
        .build());
    
    ai_reasoning_engine_resource = gcp.vertex.AiReasoningEngine("aiReasoningEngineResource",
        display_name="string",
        context_spec={
            "memory_bank_config": {
                "disable_memory_revisions": False,
                "generation_config": {
                    "model": "string",
                },
                "similarity_search_config": {
                    "embedding_model": "string",
                },
                "ttl_config": {
                    "default_ttl": "string",
                    "granular_ttl_config": {
                        "create_ttl": "string",
                        "generate_created_ttl": "string",
                        "generate_updated_ttl": "string",
                    },
                    "memory_revision_default_ttl": "string",
                },
            },
        },
        deletion_policy="string",
        description="string",
        encryption_spec={
            "kms_key_name": "string",
        },
        labels={
            "string": "string",
        },
        project="string",
        region="string",
        spec={
            "agent_framework": "string",
            "class_methods": "string",
            "container_spec": {
                "image_uri": "string",
            },
            "deployment_spec": {
                "container_concurrency": 0,
                "envs": [{
                    "name": "string",
                    "value": "string",
                }],
                "max_instances": 0,
                "min_instances": 0,
                "psc_interface_config": {
                    "dns_peering_configs": [{
                        "domain": "string",
                        "target_network": "string",
                        "target_project": "string",
                    }],
                    "network_attachment": "string",
                },
                "resource_limits": {
                    "string": "string",
                },
                "secret_envs": [{
                    "name": "string",
                    "secret_ref": {
                        "secret": "string",
                        "version": "string",
                    },
                }],
            },
            "effective_identity": "string",
            "identity_type": "string",
            "package_spec": {
                "dependency_files_gcs_uri": "string",
                "pickle_object_gcs_uri": "string",
                "python_version": "string",
                "requirements_gcs_uri": "string",
            },
            "service_account": "string",
            "source_code_spec": {
                "developer_connect_source": {
                    "config": {
                        "dir": "string",
                        "git_repository_link": "string",
                        "revision": "string",
                    },
                },
                "image_spec": {
                    "build_args": {
                        "string": "string",
                    },
                },
                "inline_source": {
                    "source_archive": "string",
                },
                "python_spec": {
                    "entrypoint_module": "string",
                    "entrypoint_object": "string",
                    "requirements_file": "string",
                    "version": "string",
                },
            },
        })
    
    const aiReasoningEngineResource = new gcp.vertex.AiReasoningEngine("aiReasoningEngineResource", {
        displayName: "string",
        contextSpec: {
            memoryBankConfig: {
                disableMemoryRevisions: false,
                generationConfig: {
                    model: "string",
                },
                similaritySearchConfig: {
                    embeddingModel: "string",
                },
                ttlConfig: {
                    defaultTtl: "string",
                    granularTtlConfig: {
                        createTtl: "string",
                        generateCreatedTtl: "string",
                        generateUpdatedTtl: "string",
                    },
                    memoryRevisionDefaultTtl: "string",
                },
            },
        },
        deletionPolicy: "string",
        description: "string",
        encryptionSpec: {
            kmsKeyName: "string",
        },
        labels: {
            string: "string",
        },
        project: "string",
        region: "string",
        spec: {
            agentFramework: "string",
            classMethods: "string",
            containerSpec: {
                imageUri: "string",
            },
            deploymentSpec: {
                containerConcurrency: 0,
                envs: [{
                    name: "string",
                    value: "string",
                }],
                maxInstances: 0,
                minInstances: 0,
                pscInterfaceConfig: {
                    dnsPeeringConfigs: [{
                        domain: "string",
                        targetNetwork: "string",
                        targetProject: "string",
                    }],
                    networkAttachment: "string",
                },
                resourceLimits: {
                    string: "string",
                },
                secretEnvs: [{
                    name: "string",
                    secretRef: {
                        secret: "string",
                        version: "string",
                    },
                }],
            },
            effectiveIdentity: "string",
            identityType: "string",
            packageSpec: {
                dependencyFilesGcsUri: "string",
                pickleObjectGcsUri: "string",
                pythonVersion: "string",
                requirementsGcsUri: "string",
            },
            serviceAccount: "string",
            sourceCodeSpec: {
                developerConnectSource: {
                    config: {
                        dir: "string",
                        gitRepositoryLink: "string",
                        revision: "string",
                    },
                },
                imageSpec: {
                    buildArgs: {
                        string: "string",
                    },
                },
                inlineSource: {
                    sourceArchive: "string",
                },
                pythonSpec: {
                    entrypointModule: "string",
                    entrypointObject: "string",
                    requirementsFile: "string",
                    version: "string",
                },
            },
        },
    });
    
    type: gcp:vertex:AiReasoningEngine
    properties:
        contextSpec:
            memoryBankConfig:
                disableMemoryRevisions: false
                generationConfig:
                    model: string
                similaritySearchConfig:
                    embeddingModel: string
                ttlConfig:
                    defaultTtl: string
                    granularTtlConfig:
                        createTtl: string
                        generateCreatedTtl: string
                        generateUpdatedTtl: string
                    memoryRevisionDefaultTtl: string
        deletionPolicy: string
        description: string
        displayName: string
        encryptionSpec:
            kmsKeyName: string
        labels:
            string: string
        project: string
        region: string
        spec:
            agentFramework: string
            classMethods: string
            containerSpec:
                imageUri: string
            deploymentSpec:
                containerConcurrency: 0
                envs:
                    - name: string
                      value: string
                maxInstances: 0
                minInstances: 0
                pscInterfaceConfig:
                    dnsPeeringConfigs:
                        - domain: string
                          targetNetwork: string
                          targetProject: string
                    networkAttachment: string
                resourceLimits:
                    string: string
                secretEnvs:
                    - name: string
                      secretRef:
                        secret: string
                        version: string
            effectiveIdentity: string
            identityType: string
            packageSpec:
                dependencyFilesGcsUri: string
                pickleObjectGcsUri: string
                pythonVersion: string
                requirementsGcsUri: string
            serviceAccount: string
            sourceCodeSpec:
                developerConnectSource:
                    config:
                        dir: string
                        gitRepositoryLink: string
                        revision: string
                imageSpec:
                    buildArgs:
                        string: string
                inlineSource:
                    sourceArchive: string
                pythonSpec:
                    entrypointModule: string
                    entrypointObject: string
                    requirementsFile: string
                    version: string
    

    AiReasoningEngine Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The AiReasoningEngine resource accepts the following input properties:

    DisplayName string
    The display name of the ReasoningEngine.
    ContextSpec AiReasoningEngineContextSpec
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    DeletionPolicy string
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    Description string
    The description of the ReasoningEngine.
    EncryptionSpec AiReasoningEngineEncryptionSpec
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    Labels Dictionary<string, string>

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    Region string
    The region of the reasoning engine. eg us-central1
    Spec AiReasoningEngineSpec
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    DisplayName string
    The display name of the ReasoningEngine.
    ContextSpec AiReasoningEngineContextSpecArgs
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    DeletionPolicy string
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    Description string
    The description of the ReasoningEngine.
    EncryptionSpec AiReasoningEngineEncryptionSpecArgs
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    Labels map[string]string

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    Region string
    The region of the reasoning engine. eg us-central1
    Spec AiReasoningEngineSpecArgs
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    display_name string
    The display name of the ReasoningEngine.
    context_spec object
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    deletion_policy string
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description string
    The description of the ReasoningEngine.
    encryption_spec object
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels map(string)

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region string
    The region of the reasoning engine. eg us-central1
    spec object
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    displayName String
    The display name of the ReasoningEngine.
    contextSpec AiReasoningEngineContextSpec
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    deletionPolicy String
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description String
    The description of the ReasoningEngine.
    encryptionSpec AiReasoningEngineEncryptionSpec
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels Map<String,String>

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region String
    The region of the reasoning engine. eg us-central1
    spec AiReasoningEngineSpec
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    displayName string
    The display name of the ReasoningEngine.
    contextSpec AiReasoningEngineContextSpec
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    deletionPolicy string
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description string
    The description of the ReasoningEngine.
    encryptionSpec AiReasoningEngineEncryptionSpec
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels {[key: string]: string}

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region string
    The region of the reasoning engine. eg us-central1
    spec AiReasoningEngineSpec
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    display_name str
    The display name of the ReasoningEngine.
    context_spec AiReasoningEngineContextSpecArgs
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    deletion_policy str
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description str
    The description of the ReasoningEngine.
    encryption_spec AiReasoningEngineEncryptionSpecArgs
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels Mapping[str, str]

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region str
    The region of the reasoning engine. eg us-central1
    spec AiReasoningEngineSpecArgs
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    displayName String
    The display name of the ReasoningEngine.
    contextSpec Property Map
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    deletionPolicy String
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description String
    The description of the ReasoningEngine.
    encryptionSpec Property Map
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels Map<String>

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    region String
    The region of the reasoning engine. eg us-central1
    spec Property Map
    Optional. Configurations of the ReasoningEngine. Structure is documented below.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the AiReasoningEngine resource produces the following output properties:

    CreateTime string
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    UpdateTime string
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    CreateTime string
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    UpdateTime string
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    create_time string
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    effective_labels map(string)
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id string
    The provider-assigned unique ID for this managed resource.
    name string
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    pulumi_labels map(string)
    The combination of labels configured directly on the resource and default labels configured on the provider.
    update_time string
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    createTime String
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    updateTime String
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    createTime string
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id string
    The provider-assigned unique ID for this managed resource.
    name string
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    updateTime string
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    create_time str
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id str
    The provider-assigned unique ID for this managed resource.
    name str
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    update_time str
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    createTime String
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    updateTime String
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.

    Look up Existing AiReasoningEngine Resource

    Get an existing AiReasoningEngine resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: AiReasoningEngineState, opts?: CustomResourceOptions): AiReasoningEngine
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            context_spec: Optional[AiReasoningEngineContextSpecArgs] = None,
            create_time: Optional[str] = None,
            deletion_policy: Optional[str] = None,
            description: Optional[str] = None,
            display_name: Optional[str] = None,
            effective_labels: Optional[Mapping[str, str]] = None,
            encryption_spec: Optional[AiReasoningEngineEncryptionSpecArgs] = None,
            labels: Optional[Mapping[str, str]] = None,
            name: Optional[str] = None,
            project: Optional[str] = None,
            pulumi_labels: Optional[Mapping[str, str]] = None,
            region: Optional[str] = None,
            spec: Optional[AiReasoningEngineSpecArgs] = None,
            update_time: Optional[str] = None) -> AiReasoningEngine
    func GetAiReasoningEngine(ctx *Context, name string, id IDInput, state *AiReasoningEngineState, opts ...ResourceOption) (*AiReasoningEngine, error)
    public static AiReasoningEngine Get(string name, Input<string> id, AiReasoningEngineState? state, CustomResourceOptions? opts = null)
    public static AiReasoningEngine get(String name, Output<String> id, AiReasoningEngineState state, CustomResourceOptions options)
    resources:  _:    type: gcp:vertex:AiReasoningEngine    get:      id: ${id}
    import {
      to = gcp_vertex_aireasoningengine.example
      id = "${id}"
    }
    
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    ContextSpec AiReasoningEngineContextSpec
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    CreateTime string
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    DeletionPolicy string
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    Description string
    The description of the ReasoningEngine.
    DisplayName string
    The display name of the ReasoningEngine.
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EncryptionSpec AiReasoningEngineEncryptionSpec
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    Labels Dictionary<string, string>

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    Name string
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    Region string
    The region of the reasoning engine. eg us-central1
    Spec AiReasoningEngineSpec
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    UpdateTime string
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    ContextSpec AiReasoningEngineContextSpecArgs
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    CreateTime string
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    DeletionPolicy string
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    Description string
    The description of the ReasoningEngine.
    DisplayName string
    The display name of the ReasoningEngine.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EncryptionSpec AiReasoningEngineEncryptionSpecArgs
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    Labels map[string]string

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    Name string
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    Region string
    The region of the reasoning engine. eg us-central1
    Spec AiReasoningEngineSpecArgs
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    UpdateTime string
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    context_spec object
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    create_time string
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    deletion_policy string
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description string
    The description of the ReasoningEngine.
    display_name string
    The display name of the ReasoningEngine.
    effective_labels map(string)
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    encryption_spec object
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels map(string)

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    name string
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumi_labels map(string)
    The combination of labels configured directly on the resource and default labels configured on the provider.
    region string
    The region of the reasoning engine. eg us-central1
    spec object
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    update_time string
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    contextSpec AiReasoningEngineContextSpec
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    createTime String
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    deletionPolicy String
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description String
    The description of the ReasoningEngine.
    displayName String
    The display name of the ReasoningEngine.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    encryptionSpec AiReasoningEngineEncryptionSpec
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels Map<String,String>

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    name String
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    region String
    The region of the reasoning engine. eg us-central1
    spec AiReasoningEngineSpec
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    updateTime String
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    contextSpec AiReasoningEngineContextSpec
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    createTime string
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    deletionPolicy string
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description string
    The description of the ReasoningEngine.
    displayName string
    The display name of the ReasoningEngine.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    encryptionSpec AiReasoningEngineEncryptionSpec
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels {[key: string]: string}

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    name string
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    region string
    The region of the reasoning engine. eg us-central1
    spec AiReasoningEngineSpec
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    updateTime string
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    context_spec AiReasoningEngineContextSpecArgs
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    create_time str
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    deletion_policy str
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description str
    The description of the ReasoningEngine.
    display_name str
    The display name of the ReasoningEngine.
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    encryption_spec AiReasoningEngineEncryptionSpecArgs
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels Mapping[str, str]

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    name str
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    region str
    The region of the reasoning engine. eg us-central1
    spec AiReasoningEngineSpecArgs
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    update_time str
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    contextSpec Property Map
    (Optional, Beta) Optional. Configuration for how Agent Engine sub-resources should manage context. Structure is documented below.
    createTime String
    The timestamp of when the Index was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
    deletionPolicy String
    Optional. The deletion policy for the reasoning engine. Setting this to FORCE allows the reasoning engine to be deleted regardless of child undeleted resources.
    description String
    The description of the ReasoningEngine.
    displayName String
    The display name of the ReasoningEngine.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    encryptionSpec Property Map
    Optional. Customer-managed encryption key spec for a ReasoningEngine. If set, this ReasoningEngine and all sub-resources of this ReasoningEngine will be secured by this key. Structure is documented below.
    labels Map<String>

    The labels associated with this ReasoningEngine. You can use these to organize and group your ReasoningEngines.

    Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field effectiveLabels for all of the labels present on the resource.

    name String
    The generated name of the ReasoningEngine, in the format projects/{project}/locations/{location}/reasoningEngines/{reasoningEngine}
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    region String
    The region of the reasoning engine. eg us-central1
    spec Property Map
    Optional. Configurations of the ReasoningEngine. Structure is documented below.
    updateTime String
    The timestamp of when the Index was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.

    Supporting Types

    AiReasoningEngineContextSpec, AiReasoningEngineContextSpecArgs

    MemoryBankConfig AiReasoningEngineContextSpecMemoryBankConfig
    Specification for a Memory Bank, which manages memories for the Agent Engine. Structure is documented below.
    MemoryBankConfig AiReasoningEngineContextSpecMemoryBankConfig
    Specification for a Memory Bank, which manages memories for the Agent Engine. Structure is documented below.
    memory_bank_config object
    Specification for a Memory Bank, which manages memories for the Agent Engine. Structure is documented below.
    memoryBankConfig AiReasoningEngineContextSpecMemoryBankConfig
    Specification for a Memory Bank, which manages memories for the Agent Engine. Structure is documented below.
    memoryBankConfig AiReasoningEngineContextSpecMemoryBankConfig
    Specification for a Memory Bank, which manages memories for the Agent Engine. Structure is documented below.
    memory_bank_config AiReasoningEngineContextSpecMemoryBankConfig
    Specification for a Memory Bank, which manages memories for the Agent Engine. Structure is documented below.
    memoryBankConfig Property Map
    Specification for a Memory Bank, which manages memories for the Agent Engine. Structure is documented below.

    AiReasoningEngineContextSpecMemoryBankConfig, AiReasoningEngineContextSpecMemoryBankConfigArgs

    DisableMemoryRevisions bool
    If true, no memory revisions will be created for any requests to the Memory Bank.
    GenerationConfig AiReasoningEngineContextSpecMemoryBankConfigGenerationConfig
    Configuration for how to generate memories for the Memory Bank. Structure is documented below.
    SimilaritySearchConfig AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig
    Configuration for how to perform similarity search on memories. Structure is documented below.
    TtlConfig AiReasoningEngineContextSpecMemoryBankConfigTtlConfig
    Configuration for automatic TTL ("time-to-live") of the memories in the Memory Bank. Structure is documented below.
    DisableMemoryRevisions bool
    If true, no memory revisions will be created for any requests to the Memory Bank.
    GenerationConfig AiReasoningEngineContextSpecMemoryBankConfigGenerationConfig
    Configuration for how to generate memories for the Memory Bank. Structure is documented below.
    SimilaritySearchConfig AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig
    Configuration for how to perform similarity search on memories. Structure is documented below.
    TtlConfig AiReasoningEngineContextSpecMemoryBankConfigTtlConfig
    Configuration for automatic TTL ("time-to-live") of the memories in the Memory Bank. Structure is documented below.
    disable_memory_revisions bool
    If true, no memory revisions will be created for any requests to the Memory Bank.
    generation_config object
    Configuration for how to generate memories for the Memory Bank. Structure is documented below.
    similarity_search_config object
    Configuration for how to perform similarity search on memories. Structure is documented below.
    ttl_config object
    Configuration for automatic TTL ("time-to-live") of the memories in the Memory Bank. Structure is documented below.
    disableMemoryRevisions Boolean
    If true, no memory revisions will be created for any requests to the Memory Bank.
    generationConfig AiReasoningEngineContextSpecMemoryBankConfigGenerationConfig
    Configuration for how to generate memories for the Memory Bank. Structure is documented below.
    similaritySearchConfig AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig
    Configuration for how to perform similarity search on memories. Structure is documented below.
    ttlConfig AiReasoningEngineContextSpecMemoryBankConfigTtlConfig
    Configuration for automatic TTL ("time-to-live") of the memories in the Memory Bank. Structure is documented below.
    disableMemoryRevisions boolean
    If true, no memory revisions will be created for any requests to the Memory Bank.
    generationConfig AiReasoningEngineContextSpecMemoryBankConfigGenerationConfig
    Configuration for how to generate memories for the Memory Bank. Structure is documented below.
    similaritySearchConfig AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig
    Configuration for how to perform similarity search on memories. Structure is documented below.
    ttlConfig AiReasoningEngineContextSpecMemoryBankConfigTtlConfig
    Configuration for automatic TTL ("time-to-live") of the memories in the Memory Bank. Structure is documented below.
    disable_memory_revisions bool
    If true, no memory revisions will be created for any requests to the Memory Bank.
    generation_config AiReasoningEngineContextSpecMemoryBankConfigGenerationConfig
    Configuration for how to generate memories for the Memory Bank. Structure is documented below.
    similarity_search_config AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig
    Configuration for how to perform similarity search on memories. Structure is documented below.
    ttl_config AiReasoningEngineContextSpecMemoryBankConfigTtlConfig
    Configuration for automatic TTL ("time-to-live") of the memories in the Memory Bank. Structure is documented below.
    disableMemoryRevisions Boolean
    If true, no memory revisions will be created for any requests to the Memory Bank.
    generationConfig Property Map
    Configuration for how to generate memories for the Memory Bank. Structure is documented below.
    similaritySearchConfig Property Map
    Configuration for how to perform similarity search on memories. Structure is documented below.
    ttlConfig Property Map
    Configuration for automatic TTL ("time-to-live") of the memories in the Memory Bank. Structure is documented below.

    AiReasoningEngineContextSpecMemoryBankConfigGenerationConfig, AiReasoningEngineContextSpecMemoryBankConfigGenerationConfigArgs

    Model string
    The model used to generate memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    Model string
    The model used to generate memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    model string
    The model used to generate memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    model String
    The model used to generate memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    model string
    The model used to generate memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    model str
    The model used to generate memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    model String
    The model used to generate memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.

    AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig, AiReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfigArgs

    EmbeddingModel string
    The model used to generate embeddings to lookup similar memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    EmbeddingModel string
    The model used to generate embeddings to lookup similar memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    embedding_model string
    The model used to generate embeddings to lookup similar memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    embeddingModel String
    The model used to generate embeddings to lookup similar memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    embeddingModel string
    The model used to generate embeddings to lookup similar memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    embedding_model str
    The model used to generate embeddings to lookup similar memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.
    embeddingModel String
    The model used to generate embeddings to lookup similar memories. Format: projects/{project}/locations/{location}/publishers/google/models/{model}.

    AiReasoningEngineContextSpecMemoryBankConfigTtlConfig, AiReasoningEngineContextSpecMemoryBankConfigTtlConfigArgs

    DefaultTtl string
    The default TTL duration of the memories in the Memory Bank.
    GranularTtlConfig AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfig
    The granular TTL configuration of the memories in the Memory Bank. Structure is documented below.
    MemoryRevisionDefaultTtl string
    The default TTL duration of the memory revisions in the Memory Bank.
    DefaultTtl string
    The default TTL duration of the memories in the Memory Bank.
    GranularTtlConfig AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfig
    The granular TTL configuration of the memories in the Memory Bank. Structure is documented below.
    MemoryRevisionDefaultTtl string
    The default TTL duration of the memory revisions in the Memory Bank.
    default_ttl string
    The default TTL duration of the memories in the Memory Bank.
    granular_ttl_config object
    The granular TTL configuration of the memories in the Memory Bank. Structure is documented below.
    memory_revision_default_ttl string
    The default TTL duration of the memory revisions in the Memory Bank.
    defaultTtl String
    The default TTL duration of the memories in the Memory Bank.
    granularTtlConfig AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfig
    The granular TTL configuration of the memories in the Memory Bank. Structure is documented below.
    memoryRevisionDefaultTtl String
    The default TTL duration of the memory revisions in the Memory Bank.
    defaultTtl string
    The default TTL duration of the memories in the Memory Bank.
    granularTtlConfig AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfig
    The granular TTL configuration of the memories in the Memory Bank. Structure is documented below.
    memoryRevisionDefaultTtl string
    The default TTL duration of the memory revisions in the Memory Bank.
    default_ttl str
    The default TTL duration of the memories in the Memory Bank.
    granular_ttl_config AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfig
    The granular TTL configuration of the memories in the Memory Bank. Structure is documented below.
    memory_revision_default_ttl str
    The default TTL duration of the memory revisions in the Memory Bank.
    defaultTtl String
    The default TTL duration of the memories in the Memory Bank.
    granularTtlConfig Property Map
    The granular TTL configuration of the memories in the Memory Bank. Structure is documented below.
    memoryRevisionDefaultTtl String
    The default TTL duration of the memory revisions in the Memory Bank.

    AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfig, AiReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfigArgs

    CreateTtl string
    The TTL duration for memories uploaded via CreateMemory.
    GenerateCreatedTtl string
    The TTL duration for memories newly generated via GenerateMemories.
    GenerateUpdatedTtl string
    The TTL duration for memories updated via GenerateMemories.
    CreateTtl string
    The TTL duration for memories uploaded via CreateMemory.
    GenerateCreatedTtl string
    The TTL duration for memories newly generated via GenerateMemories.
    GenerateUpdatedTtl string
    The TTL duration for memories updated via GenerateMemories.
    create_ttl string
    The TTL duration for memories uploaded via CreateMemory.
    generate_created_ttl string
    The TTL duration for memories newly generated via GenerateMemories.
    generate_updated_ttl string
    The TTL duration for memories updated via GenerateMemories.
    createTtl String
    The TTL duration for memories uploaded via CreateMemory.
    generateCreatedTtl String
    The TTL duration for memories newly generated via GenerateMemories.
    generateUpdatedTtl String
    The TTL duration for memories updated via GenerateMemories.
    createTtl string
    The TTL duration for memories uploaded via CreateMemory.
    generateCreatedTtl string
    The TTL duration for memories newly generated via GenerateMemories.
    generateUpdatedTtl string
    The TTL duration for memories updated via GenerateMemories.
    create_ttl str
    The TTL duration for memories uploaded via CreateMemory.
    generate_created_ttl str
    The TTL duration for memories newly generated via GenerateMemories.
    generate_updated_ttl str
    The TTL duration for memories updated via GenerateMemories.
    createTtl String
    The TTL duration for memories uploaded via CreateMemory.
    generateCreatedTtl String
    The TTL duration for memories newly generated via GenerateMemories.
    generateUpdatedTtl String
    The TTL duration for memories updated via GenerateMemories.

    AiReasoningEngineEncryptionSpec, AiReasoningEngineEncryptionSpecArgs

    KmsKeyName string
    Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. The key needs to be in the same region as where the compute resource is created.
    KmsKeyName string
    Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. The key needs to be in the same region as where the compute resource is created.
    kms_key_name string
    Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. The key needs to be in the same region as where the compute resource is created.
    kmsKeyName String
    Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. The key needs to be in the same region as where the compute resource is created.
    kmsKeyName string
    Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. The key needs to be in the same region as where the compute resource is created.
    kms_key_name str
    Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. The key needs to be in the same region as where the compute resource is created.
    kmsKeyName String
    Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. The key needs to be in the same region as where the compute resource is created.

    AiReasoningEngineSpec, AiReasoningEngineSpecArgs

    AgentFramework string
    Optional. The OSS agent framework used to develop the agent.
    ClassMethods string
    Optional. Declarations for object class methods in OpenAPI specification format.
    ContainerSpec AiReasoningEngineSpecContainerSpec
    Deploy from a container image with a defined entrypoint and commands. Structure is documented below.
    DeploymentSpec AiReasoningEngineSpecDeploymentSpec
    Optional. The specification of a Reasoning Engine deployment. Structure is documented below.
    EffectiveIdentity string
    (Output) The identity to use for the Reasoning Engine.
    IdentityType string
    Optional. The identity type to use for the Reasoning Engine. If not specified, the serviceAccount field will be used if set, otherwise the default Vertex AI Reasoning Engine Service Agent in the project will be used. Possible values:

    • SERVICE_ACCOUNT: Use a custom service account if the serviceAccount field is set, otherwise use the default Vertex AI Reasoning Engine Service Agent in the project.
    • AGENT_IDENTITY: Use Agent Identity. The serviceAccount field must not be set. Possible values are: SERVICE_ACCOUNT, AGENT_IDENTITY.
    PackageSpec AiReasoningEngineSpecPackageSpec
    Optional. User provided package spec of the ReasoningEngine. Ignored when users directly specify a deployment image through deploymentSpec.first_party_image_override, but keeping the fieldBehavior to avoid introducing breaking changes. Structure is documented below.
    ServiceAccount string
    Optional. The service account that the Reasoning Engine artifact runs as. It should have "roles/storage.objectViewer" for reading the user project's Cloud Storage and "roles/aiplatform.user" for using Vertex extensions. If not specified, the Vertex AI Reasoning Engine service Agent in the project will be used.
    SourceCodeSpec AiReasoningEngineSpecSourceCodeSpec
    Specification for deploying from source code. Structure is documented below.
    AgentFramework string
    Optional. The OSS agent framework used to develop the agent.
    ClassMethods string
    Optional. Declarations for object class methods in OpenAPI specification format.
    ContainerSpec AiReasoningEngineSpecContainerSpec
    Deploy from a container image with a defined entrypoint and commands. Structure is documented below.
    DeploymentSpec AiReasoningEngineSpecDeploymentSpec
    Optional. The specification of a Reasoning Engine deployment. Structure is documented below.
    EffectiveIdentity string
    (Output) The identity to use for the Reasoning Engine.
    IdentityType string
    Optional. The identity type to use for the Reasoning Engine. If not specified, the serviceAccount field will be used if set, otherwise the default Vertex AI Reasoning Engine Service Agent in the project will be used. Possible values:

    • SERVICE_ACCOUNT: Use a custom service account if the serviceAccount field is set, otherwise use the default Vertex AI Reasoning Engine Service Agent in the project.
    • AGENT_IDENTITY: Use Agent Identity. The serviceAccount field must not be set. Possible values are: SERVICE_ACCOUNT, AGENT_IDENTITY.
    PackageSpec AiReasoningEngineSpecPackageSpec
    Optional. User provided package spec of the ReasoningEngine. Ignored when users directly specify a deployment image through deploymentSpec.first_party_image_override, but keeping the fieldBehavior to avoid introducing breaking changes. Structure is documented below.
    ServiceAccount string
    Optional. The service account that the Reasoning Engine artifact runs as. It should have "roles/storage.objectViewer" for reading the user project's Cloud Storage and "roles/aiplatform.user" for using Vertex extensions. If not specified, the Vertex AI Reasoning Engine service Agent in the project will be used.
    SourceCodeSpec AiReasoningEngineSpecSourceCodeSpec
    Specification for deploying from source code. Structure is documented below.
    agent_framework string
    Optional. The OSS agent framework used to develop the agent.
    class_methods string
    Optional. Declarations for object class methods in OpenAPI specification format.
    container_spec object
    Deploy from a container image with a defined entrypoint and commands. Structure is documented below.
    deployment_spec object
    Optional. The specification of a Reasoning Engine deployment. Structure is documented below.
    effective_identity string
    (Output) The identity to use for the Reasoning Engine.
    identity_type string
    Optional. The identity type to use for the Reasoning Engine. If not specified, the serviceAccount field will be used if set, otherwise the default Vertex AI Reasoning Engine Service Agent in the project will be used. Possible values:

    • SERVICE_ACCOUNT: Use a custom service account if the serviceAccount field is set, otherwise use the default Vertex AI Reasoning Engine Service Agent in the project.
    • AGENT_IDENTITY: Use Agent Identity. The serviceAccount field must not be set. Possible values are: SERVICE_ACCOUNT, AGENT_IDENTITY.
    package_spec object
    Optional. User provided package spec of the ReasoningEngine. Ignored when users directly specify a deployment image through deploymentSpec.first_party_image_override, but keeping the fieldBehavior to avoid introducing breaking changes. Structure is documented below.
    service_account string
    Optional. The service account that the Reasoning Engine artifact runs as. It should have "roles/storage.objectViewer" for reading the user project's Cloud Storage and "roles/aiplatform.user" for using Vertex extensions. If not specified, the Vertex AI Reasoning Engine service Agent in the project will be used.
    source_code_spec object
    Specification for deploying from source code. Structure is documented below.
    agentFramework String
    Optional. The OSS agent framework used to develop the agent.
    classMethods String
    Optional. Declarations for object class methods in OpenAPI specification format.
    containerSpec AiReasoningEngineSpecContainerSpec
    Deploy from a container image with a defined entrypoint and commands. Structure is documented below.
    deploymentSpec AiReasoningEngineSpecDeploymentSpec
    Optional. The specification of a Reasoning Engine deployment. Structure is documented below.
    effectiveIdentity String
    (Output) The identity to use for the Reasoning Engine.
    identityType String
    Optional. The identity type to use for the Reasoning Engine. If not specified, the serviceAccount field will be used if set, otherwise the default Vertex AI Reasoning Engine Service Agent in the project will be used. Possible values:

    • SERVICE_ACCOUNT: Use a custom service account if the serviceAccount field is set, otherwise use the default Vertex AI Reasoning Engine Service Agent in the project.
    • AGENT_IDENTITY: Use Agent Identity. The serviceAccount field must not be set. Possible values are: SERVICE_ACCOUNT, AGENT_IDENTITY.
    packageSpec AiReasoningEngineSpecPackageSpec
    Optional. User provided package spec of the ReasoningEngine. Ignored when users directly specify a deployment image through deploymentSpec.first_party_image_override, but keeping the fieldBehavior to avoid introducing breaking changes. Structure is documented below.
    serviceAccount String
    Optional. The service account that the Reasoning Engine artifact runs as. It should have "roles/storage.objectViewer" for reading the user project's Cloud Storage and "roles/aiplatform.user" for using Vertex extensions. If not specified, the Vertex AI Reasoning Engine service Agent in the project will be used.
    sourceCodeSpec AiReasoningEngineSpecSourceCodeSpec
    Specification for deploying from source code. Structure is documented below.
    agentFramework string
    Optional. The OSS agent framework used to develop the agent.
    classMethods string
    Optional. Declarations for object class methods in OpenAPI specification format.
    containerSpec AiReasoningEngineSpecContainerSpec
    Deploy from a container image with a defined entrypoint and commands. Structure is documented below.
    deploymentSpec AiReasoningEngineSpecDeploymentSpec
    Optional. The specification of a Reasoning Engine deployment. Structure is documented below.
    effectiveIdentity string
    (Output) The identity to use for the Reasoning Engine.
    identityType string
    Optional. The identity type to use for the Reasoning Engine. If not specified, the serviceAccount field will be used if set, otherwise the default Vertex AI Reasoning Engine Service Agent in the project will be used. Possible values:

    • SERVICE_ACCOUNT: Use a custom service account if the serviceAccount field is set, otherwise use the default Vertex AI Reasoning Engine Service Agent in the project.
    • AGENT_IDENTITY: Use Agent Identity. The serviceAccount field must not be set. Possible values are: SERVICE_ACCOUNT, AGENT_IDENTITY.
    packageSpec AiReasoningEngineSpecPackageSpec
    Optional. User provided package spec of the ReasoningEngine. Ignored when users directly specify a deployment image through deploymentSpec.first_party_image_override, but keeping the fieldBehavior to avoid introducing breaking changes. Structure is documented below.
    serviceAccount string
    Optional. The service account that the Reasoning Engine artifact runs as. It should have "roles/storage.objectViewer" for reading the user project's Cloud Storage and "roles/aiplatform.user" for using Vertex extensions. If not specified, the Vertex AI Reasoning Engine service Agent in the project will be used.
    sourceCodeSpec AiReasoningEngineSpecSourceCodeSpec
    Specification for deploying from source code. Structure is documented below.
    agent_framework str
    Optional. The OSS agent framework used to develop the agent.
    class_methods str
    Optional. Declarations for object class methods in OpenAPI specification format.
    container_spec AiReasoningEngineSpecContainerSpec
    Deploy from a container image with a defined entrypoint and commands. Structure is documented below.
    deployment_spec AiReasoningEngineSpecDeploymentSpec
    Optional. The specification of a Reasoning Engine deployment. Structure is documented below.
    effective_identity str
    (Output) The identity to use for the Reasoning Engine.
    identity_type str
    Optional. The identity type to use for the Reasoning Engine. If not specified, the serviceAccount field will be used if set, otherwise the default Vertex AI Reasoning Engine Service Agent in the project will be used. Possible values:

    • SERVICE_ACCOUNT: Use a custom service account if the serviceAccount field is set, otherwise use the default Vertex AI Reasoning Engine Service Agent in the project.
    • AGENT_IDENTITY: Use Agent Identity. The serviceAccount field must not be set. Possible values are: SERVICE_ACCOUNT, AGENT_IDENTITY.
    package_spec AiReasoningEngineSpecPackageSpec
    Optional. User provided package spec of the ReasoningEngine. Ignored when users directly specify a deployment image through deploymentSpec.first_party_image_override, but keeping the fieldBehavior to avoid introducing breaking changes. Structure is documented below.
    service_account str
    Optional. The service account that the Reasoning Engine artifact runs as. It should have "roles/storage.objectViewer" for reading the user project's Cloud Storage and "roles/aiplatform.user" for using Vertex extensions. If not specified, the Vertex AI Reasoning Engine service Agent in the project will be used.
    source_code_spec AiReasoningEngineSpecSourceCodeSpec
    Specification for deploying from source code. Structure is documented below.
    agentFramework String
    Optional. The OSS agent framework used to develop the agent.
    classMethods String
    Optional. Declarations for object class methods in OpenAPI specification format.
    containerSpec Property Map
    Deploy from a container image with a defined entrypoint and commands. Structure is documented below.
    deploymentSpec Property Map
    Optional. The specification of a Reasoning Engine deployment. Structure is documented below.
    effectiveIdentity String
    (Output) The identity to use for the Reasoning Engine.
    identityType String
    Optional. The identity type to use for the Reasoning Engine. If not specified, the serviceAccount field will be used if set, otherwise the default Vertex AI Reasoning Engine Service Agent in the project will be used. Possible values:

    • SERVICE_ACCOUNT: Use a custom service account if the serviceAccount field is set, otherwise use the default Vertex AI Reasoning Engine Service Agent in the project.
    • AGENT_IDENTITY: Use Agent Identity. The serviceAccount field must not be set. Possible values are: SERVICE_ACCOUNT, AGENT_IDENTITY.
    packageSpec Property Map
    Optional. User provided package spec of the ReasoningEngine. Ignored when users directly specify a deployment image through deploymentSpec.first_party_image_override, but keeping the fieldBehavior to avoid introducing breaking changes. Structure is documented below.
    serviceAccount String
    Optional. The service account that the Reasoning Engine artifact runs as. It should have "roles/storage.objectViewer" for reading the user project's Cloud Storage and "roles/aiplatform.user" for using Vertex extensions. If not specified, the Vertex AI Reasoning Engine service Agent in the project will be used.
    sourceCodeSpec Property Map
    Specification for deploying from source code. Structure is documented below.

    AiReasoningEngineSpecContainerSpec, AiReasoningEngineSpecContainerSpecArgs

    ImageUri string
    The Artifact Registry Docker image URI (e.g., us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag) of the container image that is to be run on each worker replica.
    ImageUri string
    The Artifact Registry Docker image URI (e.g., us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag) of the container image that is to be run on each worker replica.
    image_uri string
    The Artifact Registry Docker image URI (e.g., us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag) of the container image that is to be run on each worker replica.
    imageUri String
    The Artifact Registry Docker image URI (e.g., us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag) of the container image that is to be run on each worker replica.
    imageUri string
    The Artifact Registry Docker image URI (e.g., us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag) of the container image that is to be run on each worker replica.
    image_uri str
    The Artifact Registry Docker image URI (e.g., us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag) of the container image that is to be run on each worker replica.
    imageUri String
    The Artifact Registry Docker image URI (e.g., us-central1-docker.pkg.dev/my-project/my-repo/my-image:tag) of the container image that is to be run on each worker replica.

    AiReasoningEngineSpecDeploymentSpec, AiReasoningEngineSpecDeploymentSpecArgs

    ContainerConcurrency int
    Optional. Concurrency for each container and agent server. Recommended value: 2 * cpu + 1. Defaults to 9.
    Envs List<AiReasoningEngineSpecDeploymentSpecEnv>
    Optional. Environment variables to be set with the Reasoning Engine deployment. Structure is documented below.
    MaxInstances int
    Optional. The maximum number of application instances that can be launched to handle increased traffic. Defaults to 100. Range: [1, 1000]. If VPC-SC or PSC-I is enabled, the acceptable range is [1, 100].
    MinInstances int
    Optional. The minimum number of application instances that will be kept running at all times. Defaults to 1. Range: [0, 10].
    PscInterfaceConfig AiReasoningEngineSpecDeploymentSpecPscInterfaceConfig
    Optional. Configuration for PSC-Interface. Structure is documented below.
    ResourceLimits Dictionary<string, string>
    Optional. Resource limits for each container. Only 'cpu' and 'memory' keys are supported. Defaults to {"cpu": "4", "memory": "4Gi"}. The only supported values for CPU are '1', '2', '4', '6' and '8'. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. The only supported values for memory are '1Gi', '2Gi', ... '32 Gi'. For more information, go to https://cloud.google.com/run/docs/configuring/memory-limits.
    SecretEnvs List<AiReasoningEngineSpecDeploymentSpecSecretEnv>
    Optional. Environment variables where the value is a secret in Cloud Secret Manager. To use this feature, add 'Secret Manager Secret Accessor' role (roles/secretmanager.secretAccessor) to AI Platform Reasoning Engine service Agent. Structure is documented below.
    ContainerConcurrency int
    Optional. Concurrency for each container and agent server. Recommended value: 2 * cpu + 1. Defaults to 9.
    Envs []AiReasoningEngineSpecDeploymentSpecEnv
    Optional. Environment variables to be set with the Reasoning Engine deployment. Structure is documented below.
    MaxInstances int
    Optional. The maximum number of application instances that can be launched to handle increased traffic. Defaults to 100. Range: [1, 1000]. If VPC-SC or PSC-I is enabled, the acceptable range is [1, 100].
    MinInstances int
    Optional. The minimum number of application instances that will be kept running at all times. Defaults to 1. Range: [0, 10].
    PscInterfaceConfig AiReasoningEngineSpecDeploymentSpecPscInterfaceConfig
    Optional. Configuration for PSC-Interface. Structure is documented below.
    ResourceLimits map[string]string
    Optional. Resource limits for each container. Only 'cpu' and 'memory' keys are supported. Defaults to {"cpu": "4", "memory": "4Gi"}. The only supported values for CPU are '1', '2', '4', '6' and '8'. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. The only supported values for memory are '1Gi', '2Gi', ... '32 Gi'. For more information, go to https://cloud.google.com/run/docs/configuring/memory-limits.
    SecretEnvs []AiReasoningEngineSpecDeploymentSpecSecretEnv
    Optional. Environment variables where the value is a secret in Cloud Secret Manager. To use this feature, add 'Secret Manager Secret Accessor' role (roles/secretmanager.secretAccessor) to AI Platform Reasoning Engine service Agent. Structure is documented below.
    container_concurrency number
    Optional. Concurrency for each container and agent server. Recommended value: 2 * cpu + 1. Defaults to 9.
    envs list(object)
    Optional. Environment variables to be set with the Reasoning Engine deployment. Structure is documented below.
    max_instances number
    Optional. The maximum number of application instances that can be launched to handle increased traffic. Defaults to 100. Range: [1, 1000]. If VPC-SC or PSC-I is enabled, the acceptable range is [1, 100].
    min_instances number
    Optional. The minimum number of application instances that will be kept running at all times. Defaults to 1. Range: [0, 10].
    psc_interface_config object
    Optional. Configuration for PSC-Interface. Structure is documented below.
    resource_limits map(string)
    Optional. Resource limits for each container. Only 'cpu' and 'memory' keys are supported. Defaults to {"cpu": "4", "memory": "4Gi"}. The only supported values for CPU are '1', '2', '4', '6' and '8'. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. The only supported values for memory are '1Gi', '2Gi', ... '32 Gi'. For more information, go to https://cloud.google.com/run/docs/configuring/memory-limits.
    secret_envs list(object)
    Optional. Environment variables where the value is a secret in Cloud Secret Manager. To use this feature, add 'Secret Manager Secret Accessor' role (roles/secretmanager.secretAccessor) to AI Platform Reasoning Engine service Agent. Structure is documented below.
    containerConcurrency Integer
    Optional. Concurrency for each container and agent server. Recommended value: 2 * cpu + 1. Defaults to 9.
    envs List<AiReasoningEngineSpecDeploymentSpecEnv>
    Optional. Environment variables to be set with the Reasoning Engine deployment. Structure is documented below.
    maxInstances Integer
    Optional. The maximum number of application instances that can be launched to handle increased traffic. Defaults to 100. Range: [1, 1000]. If VPC-SC or PSC-I is enabled, the acceptable range is [1, 100].
    minInstances Integer
    Optional. The minimum number of application instances that will be kept running at all times. Defaults to 1. Range: [0, 10].
    pscInterfaceConfig AiReasoningEngineSpecDeploymentSpecPscInterfaceConfig
    Optional. Configuration for PSC-Interface. Structure is documented below.
    resourceLimits Map<String,String>
    Optional. Resource limits for each container. Only 'cpu' and 'memory' keys are supported. Defaults to {"cpu": "4", "memory": "4Gi"}. The only supported values for CPU are '1', '2', '4', '6' and '8'. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. The only supported values for memory are '1Gi', '2Gi', ... '32 Gi'. For more information, go to https://cloud.google.com/run/docs/configuring/memory-limits.
    secretEnvs List<AiReasoningEngineSpecDeploymentSpecSecretEnv>
    Optional. Environment variables where the value is a secret in Cloud Secret Manager. To use this feature, add 'Secret Manager Secret Accessor' role (roles/secretmanager.secretAccessor) to AI Platform Reasoning Engine service Agent. Structure is documented below.
    containerConcurrency number
    Optional. Concurrency for each container and agent server. Recommended value: 2 * cpu + 1. Defaults to 9.
    envs AiReasoningEngineSpecDeploymentSpecEnv[]
    Optional. Environment variables to be set with the Reasoning Engine deployment. Structure is documented below.
    maxInstances number
    Optional. The maximum number of application instances that can be launched to handle increased traffic. Defaults to 100. Range: [1, 1000]. If VPC-SC or PSC-I is enabled, the acceptable range is [1, 100].
    minInstances number
    Optional. The minimum number of application instances that will be kept running at all times. Defaults to 1. Range: [0, 10].
    pscInterfaceConfig AiReasoningEngineSpecDeploymentSpecPscInterfaceConfig
    Optional. Configuration for PSC-Interface. Structure is documented below.
    resourceLimits {[key: string]: string}
    Optional. Resource limits for each container. Only 'cpu' and 'memory' keys are supported. Defaults to {"cpu": "4", "memory": "4Gi"}. The only supported values for CPU are '1', '2', '4', '6' and '8'. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. The only supported values for memory are '1Gi', '2Gi', ... '32 Gi'. For more information, go to https://cloud.google.com/run/docs/configuring/memory-limits.
    secretEnvs AiReasoningEngineSpecDeploymentSpecSecretEnv[]
    Optional. Environment variables where the value is a secret in Cloud Secret Manager. To use this feature, add 'Secret Manager Secret Accessor' role (roles/secretmanager.secretAccessor) to AI Platform Reasoning Engine service Agent. Structure is documented below.
    container_concurrency int
    Optional. Concurrency for each container and agent server. Recommended value: 2 * cpu + 1. Defaults to 9.
    envs Sequence[AiReasoningEngineSpecDeploymentSpecEnv]
    Optional. Environment variables to be set with the Reasoning Engine deployment. Structure is documented below.
    max_instances int
    Optional. The maximum number of application instances that can be launched to handle increased traffic. Defaults to 100. Range: [1, 1000]. If VPC-SC or PSC-I is enabled, the acceptable range is [1, 100].
    min_instances int
    Optional. The minimum number of application instances that will be kept running at all times. Defaults to 1. Range: [0, 10].
    psc_interface_config AiReasoningEngineSpecDeploymentSpecPscInterfaceConfig
    Optional. Configuration for PSC-Interface. Structure is documented below.
    resource_limits Mapping[str, str]
    Optional. Resource limits for each container. Only 'cpu' and 'memory' keys are supported. Defaults to {"cpu": "4", "memory": "4Gi"}. The only supported values for CPU are '1', '2', '4', '6' and '8'. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. The only supported values for memory are '1Gi', '2Gi', ... '32 Gi'. For more information, go to https://cloud.google.com/run/docs/configuring/memory-limits.
    secret_envs Sequence[AiReasoningEngineSpecDeploymentSpecSecretEnv]
    Optional. Environment variables where the value is a secret in Cloud Secret Manager. To use this feature, add 'Secret Manager Secret Accessor' role (roles/secretmanager.secretAccessor) to AI Platform Reasoning Engine service Agent. Structure is documented below.
    containerConcurrency Number
    Optional. Concurrency for each container and agent server. Recommended value: 2 * cpu + 1. Defaults to 9.
    envs List<Property Map>
    Optional. Environment variables to be set with the Reasoning Engine deployment. Structure is documented below.
    maxInstances Number
    Optional. The maximum number of application instances that can be launched to handle increased traffic. Defaults to 100. Range: [1, 1000]. If VPC-SC or PSC-I is enabled, the acceptable range is [1, 100].
    minInstances Number
    Optional. The minimum number of application instances that will be kept running at all times. Defaults to 1. Range: [0, 10].
    pscInterfaceConfig Property Map
    Optional. Configuration for PSC-Interface. Structure is documented below.
    resourceLimits Map<String>
    Optional. Resource limits for each container. Only 'cpu' and 'memory' keys are supported. Defaults to {"cpu": "4", "memory": "4Gi"}. The only supported values for CPU are '1', '2', '4', '6' and '8'. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. The only supported values for memory are '1Gi', '2Gi', ... '32 Gi'. For more information, go to https://cloud.google.com/run/docs/configuring/memory-limits.
    secretEnvs List<Property Map>
    Optional. Environment variables where the value is a secret in Cloud Secret Manager. To use this feature, add 'Secret Manager Secret Accessor' role (roles/secretmanager.secretAccessor) to AI Platform Reasoning Engine service Agent. Structure is documented below.

    AiReasoningEngineSpecDeploymentSpecEnv, AiReasoningEngineSpecDeploymentSpecEnvArgs

    Name string
    The name of the environment variable. Must be a valid C identifier.
    Value string
    Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
    Name string
    The name of the environment variable. Must be a valid C identifier.
    Value string
    Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
    name string
    The name of the environment variable. Must be a valid C identifier.
    value string
    Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
    name String
    The name of the environment variable. Must be a valid C identifier.
    value String
    Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
    name string
    The name of the environment variable. Must be a valid C identifier.
    value string
    Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
    name str
    The name of the environment variable. Must be a valid C identifier.
    value str
    Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
    name String
    The name of the environment variable. Must be a valid C identifier.
    value String
    Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.

    AiReasoningEngineSpecDeploymentSpecPscInterfaceConfig, AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigArgs

    DnsPeeringConfigs List<AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfig>
    Optional. DNS peering configurations. When specified, Vertex AI will attempt to configure DNS peering zones in the tenant project VPC to resolve the specified domains using the target network's Cloud DNS. The user must grant the dns.peer role to the Vertex AI service Agent on the target project. Structure is documented below.
    NetworkAttachment string
    Optional. The name of the Compute Engine network attachment to attach to the resource within the region and user project. To specify this field, you must have already created a network attachment. This field is only used for resources using PSC-Interface.
    DnsPeeringConfigs []AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfig
    Optional. DNS peering configurations. When specified, Vertex AI will attempt to configure DNS peering zones in the tenant project VPC to resolve the specified domains using the target network's Cloud DNS. The user must grant the dns.peer role to the Vertex AI service Agent on the target project. Structure is documented below.
    NetworkAttachment string
    Optional. The name of the Compute Engine network attachment to attach to the resource within the region and user project. To specify this field, you must have already created a network attachment. This field is only used for resources using PSC-Interface.
    dns_peering_configs list(object)
    Optional. DNS peering configurations. When specified, Vertex AI will attempt to configure DNS peering zones in the tenant project VPC to resolve the specified domains using the target network's Cloud DNS. The user must grant the dns.peer role to the Vertex AI service Agent on the target project. Structure is documented below.
    network_attachment string
    Optional. The name of the Compute Engine network attachment to attach to the resource within the region and user project. To specify this field, you must have already created a network attachment. This field is only used for resources using PSC-Interface.
    dnsPeeringConfigs List<AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfig>
    Optional. DNS peering configurations. When specified, Vertex AI will attempt to configure DNS peering zones in the tenant project VPC to resolve the specified domains using the target network's Cloud DNS. The user must grant the dns.peer role to the Vertex AI service Agent on the target project. Structure is documented below.
    networkAttachment String
    Optional. The name of the Compute Engine network attachment to attach to the resource within the region and user project. To specify this field, you must have already created a network attachment. This field is only used for resources using PSC-Interface.
    dnsPeeringConfigs AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfig[]
    Optional. DNS peering configurations. When specified, Vertex AI will attempt to configure DNS peering zones in the tenant project VPC to resolve the specified domains using the target network's Cloud DNS. The user must grant the dns.peer role to the Vertex AI service Agent on the target project. Structure is documented below.
    networkAttachment string
    Optional. The name of the Compute Engine network attachment to attach to the resource within the region and user project. To specify this field, you must have already created a network attachment. This field is only used for resources using PSC-Interface.
    dns_peering_configs Sequence[AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfig]
    Optional. DNS peering configurations. When specified, Vertex AI will attempt to configure DNS peering zones in the tenant project VPC to resolve the specified domains using the target network's Cloud DNS. The user must grant the dns.peer role to the Vertex AI service Agent on the target project. Structure is documented below.
    network_attachment str
    Optional. The name of the Compute Engine network attachment to attach to the resource within the region and user project. To specify this field, you must have already created a network attachment. This field is only used for resources using PSC-Interface.
    dnsPeeringConfigs List<Property Map>
    Optional. DNS peering configurations. When specified, Vertex AI will attempt to configure DNS peering zones in the tenant project VPC to resolve the specified domains using the target network's Cloud DNS. The user must grant the dns.peer role to the Vertex AI service Agent on the target project. Structure is documented below.
    networkAttachment String
    Optional. The name of the Compute Engine network attachment to attach to the resource within the region and user project. To specify this field, you must have already created a network attachment. This field is only used for resources using PSC-Interface.

    AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfig, AiReasoningEngineSpecDeploymentSpecPscInterfaceConfigDnsPeeringConfigArgs

    Domain string
    Required. The DNS name suffix of the zone being peered to, e.g., "my-internal-domain.corp.". Must end with a dot.
    TargetNetwork string
    Required. The VPC network name in the targetProject where the DNS zone specified by 'domain' is visible.
    TargetProject string
    Required. The project id hosting the Cloud DNS managed zone that contains the 'domain'. The Vertex AI service Agent requires the dns.peer role on this project.
    Domain string
    Required. The DNS name suffix of the zone being peered to, e.g., "my-internal-domain.corp.". Must end with a dot.
    TargetNetwork string
    Required. The VPC network name in the targetProject where the DNS zone specified by 'domain' is visible.
    TargetProject string
    Required. The project id hosting the Cloud DNS managed zone that contains the 'domain'. The Vertex AI service Agent requires the dns.peer role on this project.
    domain string
    Required. The DNS name suffix of the zone being peered to, e.g., "my-internal-domain.corp.". Must end with a dot.
    target_network string
    Required. The VPC network name in the targetProject where the DNS zone specified by 'domain' is visible.
    target_project string
    Required. The project id hosting the Cloud DNS managed zone that contains the 'domain'. The Vertex AI service Agent requires the dns.peer role on this project.
    domain String
    Required. The DNS name suffix of the zone being peered to, e.g., "my-internal-domain.corp.". Must end with a dot.
    targetNetwork String
    Required. The VPC network name in the targetProject where the DNS zone specified by 'domain' is visible.
    targetProject String
    Required. The project id hosting the Cloud DNS managed zone that contains the 'domain'. The Vertex AI service Agent requires the dns.peer role on this project.
    domain string
    Required. The DNS name suffix of the zone being peered to, e.g., "my-internal-domain.corp.". Must end with a dot.
    targetNetwork string
    Required. The VPC network name in the targetProject where the DNS zone specified by 'domain' is visible.
    targetProject string
    Required. The project id hosting the Cloud DNS managed zone that contains the 'domain'. The Vertex AI service Agent requires the dns.peer role on this project.
    domain str
    Required. The DNS name suffix of the zone being peered to, e.g., "my-internal-domain.corp.". Must end with a dot.
    target_network str
    Required. The VPC network name in the targetProject where the DNS zone specified by 'domain' is visible.
    target_project str
    Required. The project id hosting the Cloud DNS managed zone that contains the 'domain'. The Vertex AI service Agent requires the dns.peer role on this project.
    domain String
    Required. The DNS name suffix of the zone being peered to, e.g., "my-internal-domain.corp.". Must end with a dot.
    targetNetwork String
    Required. The VPC network name in the targetProject where the DNS zone specified by 'domain' is visible.
    targetProject String
    Required. The project id hosting the Cloud DNS managed zone that contains the 'domain'. The Vertex AI service Agent requires the dns.peer role on this project.

    AiReasoningEngineSpecDeploymentSpecSecretEnv, AiReasoningEngineSpecDeploymentSpecSecretEnvArgs

    Name string
    The name of the environment variable. Must be a valid C identifier.
    SecretRef AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRef
    Reference to a secret stored in the Cloud Secret Manager that will provide the value for this environment variable. Structure is documented below.
    Name string
    The name of the environment variable. Must be a valid C identifier.
    SecretRef AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRef
    Reference to a secret stored in the Cloud Secret Manager that will provide the value for this environment variable. Structure is documented below.
    name string
    The name of the environment variable. Must be a valid C identifier.
    secret_ref object
    Reference to a secret stored in the Cloud Secret Manager that will provide the value for this environment variable. Structure is documented below.
    name String
    The name of the environment variable. Must be a valid C identifier.
    secretRef AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRef
    Reference to a secret stored in the Cloud Secret Manager that will provide the value for this environment variable. Structure is documented below.
    name string
    The name of the environment variable. Must be a valid C identifier.
    secretRef AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRef
    Reference to a secret stored in the Cloud Secret Manager that will provide the value for this environment variable. Structure is documented below.
    name str
    The name of the environment variable. Must be a valid C identifier.
    secret_ref AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRef
    Reference to a secret stored in the Cloud Secret Manager that will provide the value for this environment variable. Structure is documented below.
    name String
    The name of the environment variable. Must be a valid C identifier.
    secretRef Property Map
    Reference to a secret stored in the Cloud Secret Manager that will provide the value for this environment variable. Structure is documented below.

    AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRef, AiReasoningEngineSpecDeploymentSpecSecretEnvSecretRefArgs

    Secret string
    The name of the secret in Cloud Secret Manager. Format: {secret_name}.
    Version string
    The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias.
    Secret string
    The name of the secret in Cloud Secret Manager. Format: {secret_name}.
    Version string
    The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias.
    secret string
    The name of the secret in Cloud Secret Manager. Format: {secret_name}.
    version string
    The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias.
    secret String
    The name of the secret in Cloud Secret Manager. Format: {secret_name}.
    version String
    The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias.
    secret string
    The name of the secret in Cloud Secret Manager. Format: {secret_name}.
    version string
    The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias.
    secret str
    The name of the secret in Cloud Secret Manager. Format: {secret_name}.
    version str
    The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias.
    secret String
    The name of the secret in Cloud Secret Manager. Format: {secret_name}.
    version String
    The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias.

    AiReasoningEngineSpecPackageSpec, AiReasoningEngineSpecPackageSpecArgs

    DependencyFilesGcsUri string
    Optional. The Cloud Storage URI of the dependency files in tar.gz format.
    PickleObjectGcsUri string
    Optional. The Cloud Storage URI of the pickled python object.
    PythonVersion string
    Optional. The Python version. Currently support 3.8, 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    RequirementsGcsUri string
    Optional. The Cloud Storage URI of the requirements.txtfile
    DependencyFilesGcsUri string
    Optional. The Cloud Storage URI of the dependency files in tar.gz format.
    PickleObjectGcsUri string
    Optional. The Cloud Storage URI of the pickled python object.
    PythonVersion string
    Optional. The Python version. Currently support 3.8, 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    RequirementsGcsUri string
    Optional. The Cloud Storage URI of the requirements.txtfile
    dependency_files_gcs_uri string
    Optional. The Cloud Storage URI of the dependency files in tar.gz format.
    pickle_object_gcs_uri string
    Optional. The Cloud Storage URI of the pickled python object.
    python_version string
    Optional. The Python version. Currently support 3.8, 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    requirements_gcs_uri string
    Optional. The Cloud Storage URI of the requirements.txtfile
    dependencyFilesGcsUri String
    Optional. The Cloud Storage URI of the dependency files in tar.gz format.
    pickleObjectGcsUri String
    Optional. The Cloud Storage URI of the pickled python object.
    pythonVersion String
    Optional. The Python version. Currently support 3.8, 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    requirementsGcsUri String
    Optional. The Cloud Storage URI of the requirements.txtfile
    dependencyFilesGcsUri string
    Optional. The Cloud Storage URI of the dependency files in tar.gz format.
    pickleObjectGcsUri string
    Optional. The Cloud Storage URI of the pickled python object.
    pythonVersion string
    Optional. The Python version. Currently support 3.8, 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    requirementsGcsUri string
    Optional. The Cloud Storage URI of the requirements.txtfile
    dependency_files_gcs_uri str
    Optional. The Cloud Storage URI of the dependency files in tar.gz format.
    pickle_object_gcs_uri str
    Optional. The Cloud Storage URI of the pickled python object.
    python_version str
    Optional. The Python version. Currently support 3.8, 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    requirements_gcs_uri str
    Optional. The Cloud Storage URI of the requirements.txtfile
    dependencyFilesGcsUri String
    Optional. The Cloud Storage URI of the dependency files in tar.gz format.
    pickleObjectGcsUri String
    Optional. The Cloud Storage URI of the pickled python object.
    pythonVersion String
    Optional. The Python version. Currently support 3.8, 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    requirementsGcsUri String
    Optional. The Cloud Storage URI of the requirements.txtfile

    AiReasoningEngineSpecSourceCodeSpec, AiReasoningEngineSpecSourceCodeSpecArgs

    DeveloperConnectSource AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSource
    Specification for source code to be fetched from a Git repository managed through the Developer Connect service. Structure is documented below.
    ImageSpec AiReasoningEngineSpecSourceCodeSpecImageSpec
    Configuration for building an image with custom config file. Structure is documented below.
    InlineSource AiReasoningEngineSpecSourceCodeSpecInlineSource
    Source code is provided directly in the request. Structure is documented below.
    PythonSpec AiReasoningEngineSpecSourceCodeSpecPythonSpec
    Specification for running a Python application from source. Structure is documented below.
    DeveloperConnectSource AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSource
    Specification for source code to be fetched from a Git repository managed through the Developer Connect service. Structure is documented below.
    ImageSpec AiReasoningEngineSpecSourceCodeSpecImageSpec
    Configuration for building an image with custom config file. Structure is documented below.
    InlineSource AiReasoningEngineSpecSourceCodeSpecInlineSource
    Source code is provided directly in the request. Structure is documented below.
    PythonSpec AiReasoningEngineSpecSourceCodeSpecPythonSpec
    Specification for running a Python application from source. Structure is documented below.
    developer_connect_source object
    Specification for source code to be fetched from a Git repository managed through the Developer Connect service. Structure is documented below.
    image_spec object
    Configuration for building an image with custom config file. Structure is documented below.
    inline_source object
    Source code is provided directly in the request. Structure is documented below.
    python_spec object
    Specification for running a Python application from source. Structure is documented below.
    developerConnectSource AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSource
    Specification for source code to be fetched from a Git repository managed through the Developer Connect service. Structure is documented below.
    imageSpec AiReasoningEngineSpecSourceCodeSpecImageSpec
    Configuration for building an image with custom config file. Structure is documented below.
    inlineSource AiReasoningEngineSpecSourceCodeSpecInlineSource
    Source code is provided directly in the request. Structure is documented below.
    pythonSpec AiReasoningEngineSpecSourceCodeSpecPythonSpec
    Specification for running a Python application from source. Structure is documented below.
    developerConnectSource AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSource
    Specification for source code to be fetched from a Git repository managed through the Developer Connect service. Structure is documented below.
    imageSpec AiReasoningEngineSpecSourceCodeSpecImageSpec
    Configuration for building an image with custom config file. Structure is documented below.
    inlineSource AiReasoningEngineSpecSourceCodeSpecInlineSource
    Source code is provided directly in the request. Structure is documented below.
    pythonSpec AiReasoningEngineSpecSourceCodeSpecPythonSpec
    Specification for running a Python application from source. Structure is documented below.
    developer_connect_source AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSource
    Specification for source code to be fetched from a Git repository managed through the Developer Connect service. Structure is documented below.
    image_spec AiReasoningEngineSpecSourceCodeSpecImageSpec
    Configuration for building an image with custom config file. Structure is documented below.
    inline_source AiReasoningEngineSpecSourceCodeSpecInlineSource
    Source code is provided directly in the request. Structure is documented below.
    python_spec AiReasoningEngineSpecSourceCodeSpecPythonSpec
    Specification for running a Python application from source. Structure is documented below.
    developerConnectSource Property Map
    Specification for source code to be fetched from a Git repository managed through the Developer Connect service. Structure is documented below.
    imageSpec Property Map
    Configuration for building an image with custom config file. Structure is documented below.
    inlineSource Property Map
    Source code is provided directly in the request. Structure is documented below.
    pythonSpec Property Map
    Specification for running a Python application from source. Structure is documented below.

    AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSource, AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceArgs

    Config AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfig
    The Developer Connect configuration that defines the specific repository, revision, and directory to use as the source code root. Structure is documented below.
    Config AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfig
    The Developer Connect configuration that defines the specific repository, revision, and directory to use as the source code root. Structure is documented below.
    config object
    The Developer Connect configuration that defines the specific repository, revision, and directory to use as the source code root. Structure is documented below.
    config AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfig
    The Developer Connect configuration that defines the specific repository, revision, and directory to use as the source code root. Structure is documented below.
    config AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfig
    The Developer Connect configuration that defines the specific repository, revision, and directory to use as the source code root. Structure is documented below.
    config AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfig
    The Developer Connect configuration that defines the specific repository, revision, and directory to use as the source code root. Structure is documented below.
    config Property Map
    The Developer Connect configuration that defines the specific repository, revision, and directory to use as the source code root. Structure is documented below.

    AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfig, AiReasoningEngineSpecSourceCodeSpecDeveloperConnectSourceConfigArgs

    Dir string
    Directory, relative to the source root, in which to run the build.
    GitRepositoryLink string
    The Developer Connect Git repository link, formatted as projects//locations//connections//gitRepositoryLink/.
    Revision string
    The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.
    Dir string
    Directory, relative to the source root, in which to run the build.
    GitRepositoryLink string
    The Developer Connect Git repository link, formatted as projects//locations//connections//gitRepositoryLink/.
    Revision string
    The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.
    dir string
    Directory, relative to the source root, in which to run the build.
    git_repository_link string
    The Developer Connect Git repository link, formatted as projects//locations//connections//gitRepositoryLink/.
    revision string
    The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.
    dir String
    Directory, relative to the source root, in which to run the build.
    gitRepositoryLink String
    The Developer Connect Git repository link, formatted as projects//locations//connections//gitRepositoryLink/.
    revision String
    The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.
    dir string
    Directory, relative to the source root, in which to run the build.
    gitRepositoryLink string
    The Developer Connect Git repository link, formatted as projects//locations//connections//gitRepositoryLink/.
    revision string
    The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.
    dir str
    Directory, relative to the source root, in which to run the build.
    git_repository_link str
    The Developer Connect Git repository link, formatted as projects//locations//connections//gitRepositoryLink/.
    revision str
    The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.
    dir String
    Directory, relative to the source root, in which to run the build.
    gitRepositoryLink String
    The Developer Connect Git repository link, formatted as projects//locations//connections//gitRepositoryLink/.
    revision String
    The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.

    AiReasoningEngineSpecSourceCodeSpecImageSpec, AiReasoningEngineSpecSourceCodeSpecImageSpecArgs

    BuildArgs Dictionary<string, string>
    Build arguments to be used. They will be passed through --build-arg flags.
    BuildArgs map[string]string
    Build arguments to be used. They will be passed through --build-arg flags.
    build_args map(string)
    Build arguments to be used. They will be passed through --build-arg flags.
    buildArgs Map<String,String>
    Build arguments to be used. They will be passed through --build-arg flags.
    buildArgs {[key: string]: string}
    Build arguments to be used. They will be passed through --build-arg flags.
    build_args Mapping[str, str]
    Build arguments to be used. They will be passed through --build-arg flags.
    buildArgs Map<String>
    Build arguments to be used. They will be passed through --build-arg flags.

    AiReasoningEngineSpecSourceCodeSpecInlineSource, AiReasoningEngineSpecSourceCodeSpecInlineSourceArgs

    SourceArchive string
    Required. Input only. The application source code archive, provided as a compressed tarball (.tar.gz) file. A base64-encoded string.
    SourceArchive string
    Required. Input only. The application source code archive, provided as a compressed tarball (.tar.gz) file. A base64-encoded string.
    source_archive string
    Required. Input only. The application source code archive, provided as a compressed tarball (.tar.gz) file. A base64-encoded string.
    sourceArchive String
    Required. Input only. The application source code archive, provided as a compressed tarball (.tar.gz) file. A base64-encoded string.
    sourceArchive string
    Required. Input only. The application source code archive, provided as a compressed tarball (.tar.gz) file. A base64-encoded string.
    source_archive str
    Required. Input only. The application source code archive, provided as a compressed tarball (.tar.gz) file. A base64-encoded string.
    sourceArchive String
    Required. Input only. The application source code archive, provided as a compressed tarball (.tar.gz) file. A base64-encoded string.

    AiReasoningEngineSpecSourceCodeSpecPythonSpec, AiReasoningEngineSpecSourceCodeSpecPythonSpecArgs

    EntrypointModule string
    Optional. The Python module to load as the entrypoint, specified as a fully qualified module name. For example: path.to.agent. If not specified, defaults to "agent". The project root will be added to Python sys.path, allowing imports to be specified relative to the root.
    EntrypointObject string
    Optional. The name of the callable object within the entrypointModule to use as the application If not specified, defaults to "rootAgent".
    RequirementsFile string
    Optional. The path to the requirements file, relative to the source root. If not specified, defaults to "requirements.txt".
    Version string
    Optional. The version of Python to use. Support version includes 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    EntrypointModule string
    Optional. The Python module to load as the entrypoint, specified as a fully qualified module name. For example: path.to.agent. If not specified, defaults to "agent". The project root will be added to Python sys.path, allowing imports to be specified relative to the root.
    EntrypointObject string
    Optional. The name of the callable object within the entrypointModule to use as the application If not specified, defaults to "rootAgent".
    RequirementsFile string
    Optional. The path to the requirements file, relative to the source root. If not specified, defaults to "requirements.txt".
    Version string
    Optional. The version of Python to use. Support version includes 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    entrypoint_module string
    Optional. The Python module to load as the entrypoint, specified as a fully qualified module name. For example: path.to.agent. If not specified, defaults to "agent". The project root will be added to Python sys.path, allowing imports to be specified relative to the root.
    entrypoint_object string
    Optional. The name of the callable object within the entrypointModule to use as the application If not specified, defaults to "rootAgent".
    requirements_file string
    Optional. The path to the requirements file, relative to the source root. If not specified, defaults to "requirements.txt".
    version string
    Optional. The version of Python to use. Support version includes 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    entrypointModule String
    Optional. The Python module to load as the entrypoint, specified as a fully qualified module name. For example: path.to.agent. If not specified, defaults to "agent". The project root will be added to Python sys.path, allowing imports to be specified relative to the root.
    entrypointObject String
    Optional. The name of the callable object within the entrypointModule to use as the application If not specified, defaults to "rootAgent".
    requirementsFile String
    Optional. The path to the requirements file, relative to the source root. If not specified, defaults to "requirements.txt".
    version String
    Optional. The version of Python to use. Support version includes 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    entrypointModule string
    Optional. The Python module to load as the entrypoint, specified as a fully qualified module name. For example: path.to.agent. If not specified, defaults to "agent". The project root will be added to Python sys.path, allowing imports to be specified relative to the root.
    entrypointObject string
    Optional. The name of the callable object within the entrypointModule to use as the application If not specified, defaults to "rootAgent".
    requirementsFile string
    Optional. The path to the requirements file, relative to the source root. If not specified, defaults to "requirements.txt".
    version string
    Optional. The version of Python to use. Support version includes 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    entrypoint_module str
    Optional. The Python module to load as the entrypoint, specified as a fully qualified module name. For example: path.to.agent. If not specified, defaults to "agent". The project root will be added to Python sys.path, allowing imports to be specified relative to the root.
    entrypoint_object str
    Optional. The name of the callable object within the entrypointModule to use as the application If not specified, defaults to "rootAgent".
    requirements_file str
    Optional. The path to the requirements file, relative to the source root. If not specified, defaults to "requirements.txt".
    version str
    Optional. The version of Python to use. Support version includes 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.
    entrypointModule String
    Optional. The Python module to load as the entrypoint, specified as a fully qualified module name. For example: path.to.agent. If not specified, defaults to "agent". The project root will be added to Python sys.path, allowing imports to be specified relative to the root.
    entrypointObject String
    Optional. The name of the callable object within the entrypointModule to use as the application If not specified, defaults to "rootAgent".
    requirementsFile String
    Optional. The path to the requirements file, relative to the source root. If not specified, defaults to "requirements.txt".
    version String
    Optional. The version of Python to use. Support version includes 3.9, 3.10, 3.11, 3.12, 3.13. If not specified, default value is 3.10.

    Import

    ReasoningEngine can be imported using any of these accepted formats:

    • projects/{{project}}/locations/{{region}}/reasoningEngines/{{name}}
    • {{project}}/{{region}}/{{name}}
    • {{region}}/{{name}}
    • {{name}}

    When using the pulumi import command, ReasoningEngine can be imported using one of the formats above. For example:

    $ pulumi import gcp:vertex/aiReasoningEngine:AiReasoningEngine default projects/{{project}}/locations/{{region}}/reasoningEngines/{{name}}
    $ pulumi import gcp:vertex/aiReasoningEngine:AiReasoningEngine default {{project}}/{{region}}/{{name}}
    $ pulumi import gcp:vertex/aiReasoningEngine:AiReasoningEngine default {{region}}/{{name}}
    $ pulumi import gcp:vertex/aiReasoningEngine:AiReasoningEngine default {{name}}
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    Google Cloud (GCP) Classic pulumi/pulumi-gcp
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the google-beta Terraform Provider.
    gcp logo
    Viewing docs for Google Cloud v9.23.0
    published on Thursday, May 7, 2026 by Pulumi
      Try Pulumi Cloud free. Your team will thank you.