All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.gcp.vertex.kotlin.AiEndpointArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 8.13.1.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.vertex.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.vertex.AiEndpointArgs.builder
import com.pulumi.gcp.vertex.kotlin.inputs.AiEndpointEncryptionSpecArgs
import com.pulumi.gcp.vertex.kotlin.inputs.AiEndpointEncryptionSpecArgsBuilder
import com.pulumi.gcp.vertex.kotlin.inputs.AiEndpointPredictRequestResponseLoggingConfigArgs
import com.pulumi.gcp.vertex.kotlin.inputs.AiEndpointPredictRequestResponseLoggingConfigArgsBuilder
import com.pulumi.gcp.vertex.kotlin.inputs.AiEndpointPrivateServiceConnectConfigArgs
import com.pulumi.gcp.vertex.kotlin.inputs.AiEndpointPrivateServiceConnectConfigArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Models are deployed into it, and afterwards Endpoint is called to obtain predictions and explanations.
 * To get more information about Endpoint, see:
 * * [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/vertex-ai/docs)
 * ## Example Usage
 * ### Vertex Ai Endpoint Network
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const vertexNetwork = new gcp.compute.Network("vertex_network", {name: "network-name"});
 * const vertexRange = new gcp.compute.GlobalAddress("vertex_range", {
 *     name: "address-name",
 *     purpose: "VPC_PEERING",
 *     addressType: "INTERNAL",
 *     prefixLength: 24,
 *     network: vertexNetwork.id,
 * });
 * const vertexVpcConnection = new gcp.servicenetworking.Connection("vertex_vpc_connection", {
 *     network: vertexNetwork.id,
 *     service: "servicenetworking.googleapis.com",
 *     reservedPeeringRanges: [vertexRange.name],
 * });
 * const bqDataset = new gcp.bigquery.Dataset("bq_dataset", {
 *     datasetId: "some_dataset",
 *     friendlyName: "logging dataset",
 *     description: "This is a dataset that requests are logged to",
 *     location: "US",
 *     deleteContentsOnDestroy: true,
 * });
 * const project = gcp.organizations.getProject({});
 * const endpoint = new gcp.vertex.AiEndpoint("endpoint", {
 *     name: "endpoint-name",
 *     displayName: "sample-endpoint",
 *     description: "A sample vertex endpoint",
 *     location: "us-central1",
 *     region: "us-central1",
 *     labels: {
 *         "label-one": "value-one",
 *     },
 *     network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) => `projects/${project.number}/global/networks/${name}`),
 *     encryptionSpec: {
 *         kmsKeyName: "kms-name",
 *     },
 *     predictRequestResponseLoggingConfig: {
 *         bigqueryDestination: {
 *             outputUri: pulumi.all([project, bqDataset.datasetId]).apply(([project, datasetId]) => `bq://${project.projectId}.${datasetId}.request_response_logging`),
 *         },
 *         enabled: true,
 *         samplingRate: 0.1,
 *     },
 *     trafficSplit: JSON.stringify({
 *         "12345": 100,
 *     }),
 * }, {
 *     dependsOn: [vertexVpcConnection],
 * });
 * const cryptoKey = new gcp.kms.CryptoKeyIAMMember("crypto_key", {
 *     cryptoKeyId: "kms-name",
 *     role: "roles/cloudkms.cryptoKeyEncrypterDecrypter",
 *     member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),
 * });
 * ```
 * ```python
 * import pulumi
 * import json
 * import pulumi_gcp as gcp
 * vertex_network = gcp.compute.Network("vertex_network", name="network-name")
 * vertex_range = gcp.compute.GlobalAddress("vertex_range",
 *     name="address-name",
 *     purpose="VPC_PEERING",
 *     address_type="INTERNAL",
 *     prefix_length=24,
 *     network=vertex_network.id)
 * vertex_vpc_connection = gcp.servicenetworking.Connection("vertex_vpc_connection",
 *     network=vertex_network.id,
 *     service="servicenetworking.googleapis.com",
 *     reserved_peering_ranges=[vertex_range.name])
 * bq_dataset = gcp.bigquery.Dataset("bq_dataset",
 *     dataset_id="some_dataset",
 *     friendly_name="logging dataset",
 *     description="This is a dataset that requests are logged to",
 *     location="US",
 *     delete_contents_on_destroy=True)
 * project = gcp.organizations.get_project()
 * endpoint = gcp.vertex.AiEndpoint("endpoint",
 *     name="endpoint-name",
 *     display_name="sample-endpoint",
 *     description="A sample vertex endpoint",
 *     location="us-central1",
 *     region="us-central1",
 *     labels={
 *         "label-one": "value-one",
 *     },
 *     network=vertex_network.name.apply(lambda name: f"projects/{project.number}/global/networks/{name}"),
 *     encryption_spec={
 *         "kms_key_name": "kms-name",
 *     },
 *     predict_request_response_logging_config={
 *         "bigquery_destination": {
 *             "output_uri": bq_dataset.dataset_id.apply(lambda dataset_id: f"bq://{project.project_id}.{dataset_id}.request_response_logging"),
 *         },
 *         "enabled": True,
 *         "sampling_rate": 0.1,
 *     },
 *     traffic_split=json.dumps({
 *         "12345": 100,
 *     }),
 *     opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection]))
 * crypto_key = gcp.kms.CryptoKeyIAMMember("crypto_key",
 *     crypto_key_id="kms-name",
 *     role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
 *     member=f"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using System.Text.Json;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var vertexNetwork = new Gcp.Compute.Network("vertex_network", new()
 *     {
 *         Name = "network-name",
 *     });
 *     var vertexRange = new Gcp.Compute.GlobalAddress("vertex_range", new()
 *     {
 *         Name = "address-name",
 *         Purpose = "VPC_PEERING",
 *         AddressType = "INTERNAL",
 *         PrefixLength = 24,
 *         Network = vertexNetwork.Id,
 *     });
 *     var vertexVpcConnection = new Gcp.ServiceNetworking.Connection("vertex_vpc_connection", new()
 *     {
 *         Network = vertexNetwork.Id,
 *         Service = "servicenetworking.googleapis.com",
 *         ReservedPeeringRanges = new[]
 *         {
 *             vertexRange.Name,
 *         },
 *     });
 *     var bqDataset = new Gcp.BigQuery.Dataset("bq_dataset", new()
 *     {
 *         DatasetId = "some_dataset",
 *         FriendlyName = "logging dataset",
 *         Description = "This is a dataset that requests are logged to",
 *         Location = "US",
 *         DeleteContentsOnDestroy = true,
 *     });
 *     var project = Gcp.Organizations.GetProject.Invoke();
 *     var endpoint = new Gcp.Vertex.AiEndpoint("endpoint", new()
 *     {
 *         Name = "endpoint-name",
 *         DisplayName = "sample-endpoint",
 *         Description = "A sample vertex endpoint",
 *         Location = "us-central1",
 *         Region = "us-central1",
 *         Labels =
 *         {
 *             { "label-one", "value-one" },
 *         },
 *         Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =>
 *         {
 *             var project = values.Item1;
 *             var name = values.Item2;
 *             return $"projects/{project.Apply(getProjectResult => getProjectResult.Number)}/global/networks/{name}";
 *         }),
 *         EncryptionSpec = new Gcp.Vertex.Inputs.AiEndpointEncryptionSpecArgs
 *         {
 *             KmsKeyName = "kms-name",
 *         },
 *         PredictRequestResponseLoggingConfig = new Gcp.Vertex.Inputs.AiEndpointPredictRequestResponseLoggingConfigArgs
 *         {
 *             BigqueryDestination = new Gcp.Vertex.Inputs.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs
 *             {
 *                 OutputUri = Output.Tuple(project, bqDataset.DatasetId).Apply(values =>
 *                 {
 *                     var project = values.Item1;
 *                     var datasetId = values.Item2;
 *                     return $"bq://{project.Apply(getProjectResult => getProjectResult.ProjectId)}.{datasetId}.request_response_logging";
 *                 }),
 *             },
 *             Enabled = true,
 *             SamplingRate = 0.1,
 *         },
 *         TrafficSplit = JsonSerializer.Serialize(new Dictionary
 *         {
 *             ["12345"] = 100,
 *         }),
 *     }, new CustomResourceOptions
 *     {
 *         DependsOn =
 *         {
 *             vertexVpcConnection,
 *         },
 *     });
 *     var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember("crypto_key", new()
 *     {
 *         CryptoKeyId = "kms-name",
 *         Role = "roles/cloudkms.cryptoKeyEncrypterDecrypter",
 *         Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"encoding/json"
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		vertexNetwork, err := compute.NewNetwork(ctx, "vertex_network", &compute.NetworkArgs{
 * 			Name: pulumi.String("network-name"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		vertexRange, err := compute.NewGlobalAddress(ctx, "vertex_range", &compute.GlobalAddressArgs{
 * 			Name:         pulumi.String("address-name"),
 * 			Purpose:      pulumi.String("VPC_PEERING"),
 * 			AddressType:  pulumi.String("INTERNAL"),
 * 			PrefixLength: pulumi.Int(24),
 * 			Network:      vertexNetwork.ID(),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		vertexVpcConnection, err := servicenetworking.NewConnection(ctx, "vertex_vpc_connection", &servicenetworking.ConnectionArgs{
 * 			Network: vertexNetwork.ID(),
 * 			Service: pulumi.String("servicenetworking.googleapis.com"),
 * 			ReservedPeeringRanges: pulumi.StringArray{
 * 				vertexRange.Name,
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		bqDataset, err := bigquery.NewDataset(ctx, "bq_dataset", &bigquery.DatasetArgs{
 * 			DatasetId:               pulumi.String("some_dataset"),
 * 			FriendlyName:            pulumi.String("logging dataset"),
 * 			Description:             pulumi.String("This is a dataset that requests are logged to"),
 * 			Location:                pulumi.String("US"),
 * 			DeleteContentsOnDestroy: pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		tmpJSON0, err := json.Marshal(map[string]interface{}{
 * 			"12345": 100,
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		json0 := string(tmpJSON0)
 * 		_, err = vertex.NewAiEndpoint(ctx, "endpoint", &vertex.AiEndpointArgs{
 * 			Name:        pulumi.String("endpoint-name"),
 * 			DisplayName: pulumi.String("sample-endpoint"),
 * 			Description: pulumi.String("A sample vertex endpoint"),
 * 			Location:    pulumi.String("us-central1"),
 * 			Region:      pulumi.String("us-central1"),
 * 			Labels: pulumi.StringMap{
 * 				"label-one": pulumi.String("value-one"),
 * 			},
 * 			Network: vertexNetwork.Name.ApplyT(func(name string) (string, error) {
 * 				return fmt.Sprintf("projects/%v/global/networks/%v", project.Number, name), nil
 * 			}).(pulumi.StringOutput),
 * 			EncryptionSpec: &vertex.AiEndpointEncryptionSpecArgs{
 * 				KmsKeyName: pulumi.String("kms-name"),
 * 			},
 * 			PredictRequestResponseLoggingConfig: &vertex.AiEndpointPredictRequestResponseLoggingConfigArgs{
 * 				BigqueryDestination: &vertex.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs{
 * 					OutputUri: bqDataset.DatasetId.ApplyT(func(datasetId string) (string, error) {
 * 						return fmt.Sprintf("bq://%v.%v.request_response_logging", project.ProjectId, datasetId), nil
 * 					}).(pulumi.StringOutput),
 * 				},
 * 				Enabled:      pulumi.Bool(true),
 * 				SamplingRate: pulumi.Float64(0.1),
 * 			},
 * 			TrafficSplit: pulumi.String(json0),
 * 		}, pulumi.DependsOn([]pulumi.Resource{
 * 			vertexVpcConnection,
 * 		}))
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
 * 			CryptoKeyId: pulumi.String("kms-name"),
 * 			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"),
 * 			Member:      pulumi.Sprintf("serviceAccount:service-%[email protected]", project.Number),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.gcp.compute.Network;
 * import com.pulumi.gcp.compute.NetworkArgs;
 * import com.pulumi.gcp.compute.GlobalAddress;
 * import com.pulumi.gcp.compute.GlobalAddressArgs;
 * import com.pulumi.gcp.servicenetworking.Connection;
 * import com.pulumi.gcp.servicenetworking.ConnectionArgs;
 * import com.pulumi.gcp.bigquery.Dataset;
 * import com.pulumi.gcp.bigquery.DatasetArgs;
 * import com.pulumi.gcp.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * import com.pulumi.gcp.vertex.AiEndpoint;
 * import com.pulumi.gcp.vertex.AiEndpointArgs;
 * import com.pulumi.gcp.vertex.inputs.AiEndpointEncryptionSpecArgs;
 * import com.pulumi.gcp.vertex.inputs.AiEndpointPredictRequestResponseLoggingConfigArgs;
 * import com.pulumi.gcp.vertex.inputs.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs;
 * import com.pulumi.gcp.kms.CryptoKeyIAMMember;
 * import com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;
 * 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) {
 *         var vertexNetwork = new Network("vertexNetwork", NetworkArgs.builder()
 *             .name("network-name")
 *             .build());
 *         var vertexRange = new GlobalAddress("vertexRange", GlobalAddressArgs.builder()
 *             .name("address-name")
 *             .purpose("VPC_PEERING")
 *             .addressType("INTERNAL")
 *             .prefixLength(24)
 *             .network(vertexNetwork.id())
 *             .build());
 *         var vertexVpcConnection = new Connection("vertexVpcConnection", ConnectionArgs.builder()
 *             .network(vertexNetwork.id())
 *             .service("servicenetworking.googleapis.com")
 *             .reservedPeeringRanges(vertexRange.name())
 *             .build());
 *         var bqDataset = new Dataset("bqDataset", DatasetArgs.builder()
 *             .datasetId("some_dataset")
 *             .friendlyName("logging dataset")
 *             .description("This is a dataset that requests are logged to")
 *             .location("US")
 *             .deleteContentsOnDestroy(true)
 *             .build());
 *         final var project = OrganizationsFunctions.getProject();
 *         var endpoint = new AiEndpoint("endpoint", AiEndpointArgs.builder()
 *             .name("endpoint-name")
 *             .displayName("sample-endpoint")
 *             .description("A sample vertex endpoint")
 *             .location("us-central1")
 *             .region("us-central1")
 *             .labels(Map.of("label-one", "value-one"))
 *             .network(vertexNetwork.name().applyValue(name -> String.format("projects/%s/global/networks/%s", project.applyValue(getProjectResult -> getProjectResult.number()),name)))
 *             .encryptionSpec(AiEndpointEncryptionSpecArgs.builder()
 *                 .kmsKeyName("kms-name")
 *                 .build())
 *             .predictRequestResponseLoggingConfig(AiEndpointPredictRequestResponseLoggingConfigArgs.builder()
 *                 .bigqueryDestination(AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs.builder()
 *                     .outputUri(bqDataset.datasetId().applyValue(datasetId -> String.format("bq://%s.%s.request_response_logging", project.applyValue(getProjectResult -> getProjectResult.projectId()),datasetId)))
 *                     .build())
 *                 .enabled(true)
 *                 .samplingRate(0.1)
 *                 .build())
 *             .trafficSplit(serializeJson(
 *                 jsonObject(
 *                     jsonProperty("12345", 100)
 *                 )))
 *             .build(), CustomResourceOptions.builder()
 *                 .dependsOn(vertexVpcConnection)
 *                 .build());
 *         var cryptoKey = new CryptoKeyIAMMember("cryptoKey", CryptoKeyIAMMemberArgs.builder()
 *             .cryptoKeyId("kms-name")
 *             .role("roles/cloudkms.cryptoKeyEncrypterDecrypter")
 *             .member(String.format("serviceAccount:service-%[email protected]", project.applyValue(getProjectResult -> getProjectResult.number())))
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   endpoint:
 *     type: gcp:vertex:AiEndpoint
 *     properties:
 *       name: endpoint-name
 *       displayName: sample-endpoint
 *       description: A sample vertex endpoint
 *       location: us-central1
 *       region: us-central1
 *       labels:
 *         label-one: value-one
 *       network: projects/${project.number}/global/networks/${vertexNetwork.name}
 *       encryptionSpec:
 *         kmsKeyName: kms-name
 *       predictRequestResponseLoggingConfig:
 *         bigqueryDestination:
 *           outputUri: bq://${project.projectId}.${bqDataset.datasetId}.request_response_logging
 *         enabled: true
 *         samplingRate: 0.1
 *       trafficSplit:
 *         fn::toJSON:
 *           '12345': 100
 *     options:
 *       dependsOn:
 *         - ${vertexVpcConnection}
 *   vertexVpcConnection:
 *     type: gcp:servicenetworking:Connection
 *     name: vertex_vpc_connection
 *     properties:
 *       network: ${vertexNetwork.id}
 *       service: servicenetworking.googleapis.com
 *       reservedPeeringRanges:
 *         - ${vertexRange.name}
 *   vertexRange:
 *     type: gcp:compute:GlobalAddress
 *     name: vertex_range
 *     properties:
 *       name: address-name
 *       purpose: VPC_PEERING
 *       addressType: INTERNAL
 *       prefixLength: 24
 *       network: ${vertexNetwork.id}
 *   vertexNetwork:
 *     type: gcp:compute:Network
 *     name: vertex_network
 *     properties:
 *       name: network-name
 *   cryptoKey:
 *     type: gcp:kms:CryptoKeyIAMMember
 *     name: crypto_key
 *     properties:
 *       cryptoKeyId: kms-name
 *       role: roles/cloudkms.cryptoKeyEncrypterDecrypter
 *       member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com
 *   bqDataset:
 *     type: gcp:bigquery:Dataset
 *     name: bq_dataset
 *     properties:
 *       datasetId: some_dataset
 *       friendlyName: logging dataset
 *       description: This is a dataset that requests are logged to
 *       location: US
 *       deleteContentsOnDestroy: true
 * variables:
 *   project:
 *     fn::invoke:
 *       function: gcp:organizations:getProject
 *       arguments: {}
 * ```
 * 
 * ### Vertex Ai Endpoint Private Service Connect
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const project = gcp.organizations.getProject({});
 * const endpoint = new gcp.vertex.AiEndpoint("endpoint", {
 *     name: "endpoint-name_8270",
 *     displayName: "sample-endpoint",
 *     description: "A sample vertex endpoint",
 *     location: "us-central1",
 *     region: "us-central1",
 *     labels: {
 *         "label-one": "value-one",
 *     },
 *     privateServiceConnectConfig: {
 *         enablePrivateServiceConnect: true,
 *         projectAllowlists: [project.then(project => project.projectId)],
 *         enableSecurePrivateServiceConnect: false,
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * project = gcp.organizations.get_project()
 * endpoint = gcp.vertex.AiEndpoint("endpoint",
 *     name="endpoint-name_8270",
 *     display_name="sample-endpoint",
 *     description="A sample vertex endpoint",
 *     location="us-central1",
 *     region="us-central1",
 *     labels={
 *         "label-one": "value-one",
 *     },
 *     private_service_connect_config={
 *         "enable_private_service_connect": True,
 *         "project_allowlists": [project.project_id],
 *         "enable_secure_private_service_connect": False,
 *     })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var project = Gcp.Organizations.GetProject.Invoke();
 *     var endpoint = new Gcp.Vertex.AiEndpoint("endpoint", new()
 *     {
 *         Name = "endpoint-name_8270",
 *         DisplayName = "sample-endpoint",
 *         Description = "A sample vertex endpoint",
 *         Location = "us-central1",
 *         Region = "us-central1",
 *         Labels =
 *         {
 *             { "label-one", "value-one" },
 *         },
 *         PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiEndpointPrivateServiceConnectConfigArgs
 *         {
 *             EnablePrivateServiceConnect = true,
 *             ProjectAllowlists = new[]
 *             {
 *                 project.Apply(getProjectResult => getProjectResult.ProjectId),
 *             },
 *             EnableSecurePrivateServiceConnect = false,
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewAiEndpoint(ctx, "endpoint", &vertex.AiEndpointArgs{
 * 			Name:        pulumi.String("endpoint-name_8270"),
 * 			DisplayName: pulumi.String("sample-endpoint"),
 * 			Description: pulumi.String("A sample vertex endpoint"),
 * 			Location:    pulumi.String("us-central1"),
 * 			Region:      pulumi.String("us-central1"),
 * 			Labels: pulumi.StringMap{
 * 				"label-one": pulumi.String("value-one"),
 * 			},
 * 			PrivateServiceConnectConfig: &vertex.AiEndpointPrivateServiceConnectConfigArgs{
 * 				EnablePrivateServiceConnect: pulumi.Bool(true),
 * 				ProjectAllowlists: pulumi.StringArray{
 * 					pulumi.String(project.ProjectId),
 * 				},
 * 				EnableSecurePrivateServiceConnect: pulumi.Bool(false),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * 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.AiEndpoint;
 * import com.pulumi.gcp.vertex.AiEndpointArgs;
 * import com.pulumi.gcp.vertex.inputs.AiEndpointPrivateServiceConnectConfigArgs;
 * 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();
 *         var endpoint = new AiEndpoint("endpoint", AiEndpointArgs.builder()
 *             .name("endpoint-name_8270")
 *             .displayName("sample-endpoint")
 *             .description("A sample vertex endpoint")
 *             .location("us-central1")
 *             .region("us-central1")
 *             .labels(Map.of("label-one", "value-one"))
 *             .privateServiceConnectConfig(AiEndpointPrivateServiceConnectConfigArgs.builder()
 *                 .enablePrivateServiceConnect(true)
 *                 .projectAllowlists(project.applyValue(getProjectResult -> getProjectResult.projectId()))
 *                 .enableSecurePrivateServiceConnect(false)
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   endpoint:
 *     type: gcp:vertex:AiEndpoint
 *     properties:
 *       name: endpoint-name_8270
 *       displayName: sample-endpoint
 *       description: A sample vertex endpoint
 *       location: us-central1
 *       region: us-central1
 *       labels:
 *         label-one: value-one
 *       privateServiceConnectConfig:
 *         enablePrivateServiceConnect: true
 *         projectAllowlists:
 *           - ${project.projectId}
 *         enableSecurePrivateServiceConnect: false
 * variables:
 *   project:
 *     fn::invoke:
 *       function: gcp:organizations:getProject
 *       arguments: {}
 * ```
 * 
 * ### Vertex Ai Endpoint Dedicated Endpoint
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const endpoint = new gcp.vertex.AiEndpoint("endpoint", {
 *     name: "endpoint-name_41150",
 *     displayName: "sample-endpoint",
 *     description: "A sample vertex endpoint",
 *     location: "us-central1",
 *     region: "us-central1",
 *     labels: {
 *         "label-one": "value-one",
 *     },
 *     dedicatedEndpointEnabled: true,
 * });
 * const project = gcp.organizations.getProject({});
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * endpoint = gcp.vertex.AiEndpoint("endpoint",
 *     name="endpoint-name_41150",
 *     display_name="sample-endpoint",
 *     description="A sample vertex endpoint",
 *     location="us-central1",
 *     region="us-central1",
 *     labels={
 *         "label-one": "value-one",
 *     },
 *     dedicated_endpoint_enabled=True)
 * project = gcp.organizations.get_project()
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var endpoint = new Gcp.Vertex.AiEndpoint("endpoint", new()
 *     {
 *         Name = "endpoint-name_41150",
 *         DisplayName = "sample-endpoint",
 *         Description = "A sample vertex endpoint",
 *         Location = "us-central1",
 *         Region = "us-central1",
 *         Labels =
 *         {
 *             { "label-one", "value-one" },
 *         },
 *         DedicatedEndpointEnabled = true,
 *     });
 *     var project = Gcp.Organizations.GetProject.Invoke();
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := vertex.NewAiEndpoint(ctx, "endpoint", &vertex.AiEndpointArgs{
 * 			Name:        pulumi.String("endpoint-name_41150"),
 * 			DisplayName: pulumi.String("sample-endpoint"),
 * 			Description: pulumi.String("A sample vertex endpoint"),
 * 			Location:    pulumi.String("us-central1"),
 * 			Region:      pulumi.String("us-central1"),
 * 			Labels: pulumi.StringMap{
 * 				"label-one": pulumi.String("value-one"),
 * 			},
 * 			DedicatedEndpointEnabled: pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.gcp.vertex.AiEndpoint;
 * import com.pulumi.gcp.vertex.AiEndpointArgs;
 * import com.pulumi.gcp.organizations.OrganizationsFunctions;
 * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
 * 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 endpoint = new AiEndpoint("endpoint", AiEndpointArgs.builder()
 *             .name("endpoint-name_41150")
 *             .displayName("sample-endpoint")
 *             .description("A sample vertex endpoint")
 *             .location("us-central1")
 *             .region("us-central1")
 *             .labels(Map.of("label-one", "value-one"))
 *             .dedicatedEndpointEnabled(true)
 *             .build());
 *         final var project = OrganizationsFunctions.getProject();
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   endpoint:
 *     type: gcp:vertex:AiEndpoint
 *     properties:
 *       name: endpoint-name_41150
 *       displayName: sample-endpoint
 *       description: A sample vertex endpoint
 *       location: us-central1
 *       region: us-central1
 *       labels:
 *         label-one: value-one
 *       dedicatedEndpointEnabled: true
 * variables:
 *   project:
 *     fn::invoke:
 *       function: gcp:organizations:getProject
 *       arguments: {}
 * ```
 * 
 * ## Import
 * Endpoint can be imported using any of these accepted formats:
 * * `projects/{{project}}/locations/{{location}}/endpoints/{{name}}`
 * * `{{project}}/{{location}}/{{name}}`
 * * `{{location}}/{{name}}`
 * When using the `pulumi import` command, Endpoint can be imported using one of the formats above. For example:
 * ```sh
 * $ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default projects/{{project}}/locations/{{location}}/endpoints/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{project}}/{{location}}/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{location}}/{{name}}
 * ```
 * @property dedicatedEndpointEnabled If true, the endpoint will be exposed through a dedicated DNS [Endpoint.dedicated_endpoint_dns]. Your request to the dedicated DNS will be isolated from other users' traffic and will have better performance and reliability. Note: Once you enabled dedicated endpoint, you won't be able to send request to the shared DNS {region}-aiplatform.googleapis.com. The limitation will be removed soon.
 * @property description The description of the Endpoint.
 * @property displayName Required. The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.
 * @property encryptionSpec Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key.
 * Structure is documented below.
 * @property labels The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.
 * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
 * Please refer to the field `effective_labels` for all of the labels present on the resource.
 * @property location The location for the resource
 * - - -
 * @property name The resource name of the Endpoint. The name must be numeric with no leading zeros and can be at most 10 digits.
 * @property network The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name. Only one of the fields, `network` or `privateServiceConnectConfig`, can be set.
 * @property predictRequestResponseLoggingConfig Configures the request-response logging for online prediction.
 * Structure is documented below.
 * @property privateServiceConnectConfig Configuration for private service connect. `network` and `privateServiceConnectConfig` are mutually exclusive.
 * Structure is documented below.
 * @property project The ID of the project in which the resource belongs.
 * If it is not provided, the provider project is used.
 * @property region The region for the resource
 * @property trafficSplit A map from a DeployedModel's id to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel.
 * If a DeployedModel's id is not listed in this map, then it receives no traffic.
 * The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment. See
 * the `deployModel` [example](https://cloud.google.com/vertex-ai/docs/general/deployment#deploy_a_model_to_an_endpoint) and
 * [documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints/deployModel) for more information.
 * > **Note:** To set the map to empty, set `"{}"`, apply, and then remove the field from your config.
 */
public data class AiEndpointArgs(
    public val dedicatedEndpointEnabled: Output? = null,
    public val description: Output? = null,
    public val displayName: Output? = null,
    public val encryptionSpec: Output? = null,
    public val labels: Output>? = null,
    public val location: Output? = null,
    public val name: Output? = null,
    public val network: Output? = null,
    public val predictRequestResponseLoggingConfig: Output? = null,
    public val privateServiceConnectConfig: Output? = null,
    public val project: Output? = null,
    public val region: Output? = null,
    public val trafficSplit: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.vertex.AiEndpointArgs =
        com.pulumi.gcp.vertex.AiEndpointArgs.builder()
            .dedicatedEndpointEnabled(dedicatedEndpointEnabled?.applyValue({ args0 -> args0 }))
            .description(description?.applyValue({ args0 -> args0 }))
            .displayName(displayName?.applyValue({ args0 -> args0 }))
            .encryptionSpec(encryptionSpec?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .labels(labels?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .location(location?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .network(network?.applyValue({ args0 -> args0 }))
            .predictRequestResponseLoggingConfig(
                predictRequestResponseLoggingConfig?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .privateServiceConnectConfig(
                privateServiceConnectConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .project(project?.applyValue({ args0 -> args0 }))
            .region(region?.applyValue({ args0 -> args0 }))
            .trafficSplit(trafficSplit?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [AiEndpointArgs].
 */
@PulumiTagMarker
public class AiEndpointArgsBuilder internal constructor() {
    private var dedicatedEndpointEnabled: Output? = null

    private var description: Output? = null

    private var displayName: Output? = null

    private var encryptionSpec: Output? = null

    private var labels: Output>? = null

    private var location: Output? = null

    private var name: Output? = null

    private var network: Output? = null

    private var predictRequestResponseLoggingConfig:
        Output? = null

    private var privateServiceConnectConfig: Output? = null

    private var project: Output? = null

    private var region: Output? = null

    private var trafficSplit: Output? = null

    /**
     * @param value If true, the endpoint will be exposed through a dedicated DNS [Endpoint.dedicated_endpoint_dns]. Your request to the dedicated DNS will be isolated from other users' traffic and will have better performance and reliability. Note: Once you enabled dedicated endpoint, you won't be able to send request to the shared DNS {region}-aiplatform.googleapis.com. The limitation will be removed soon.
     */
    @JvmName("fraompcdskxhyiew")
    public suspend fun dedicatedEndpointEnabled(`value`: Output) {
        this.dedicatedEndpointEnabled = value
    }

    /**
     * @param value The description of the Endpoint.
     */
    @JvmName("ooaijjfrvvhejtux")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value Required. The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.
     */
    @JvmName("rmkeycjbwqvmcdls")
    public suspend fun displayName(`value`: Output) {
        this.displayName = value
    }

    /**
     * @param value Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key.
     * Structure is documented below.
     */
    @JvmName("yrxxkofyluxvgfog")
    public suspend fun encryptionSpec(`value`: Output) {
        this.encryptionSpec = value
    }

    /**
     * @param value The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("cxovcdrjjblsxsdv")
    public suspend fun labels(`value`: Output>) {
        this.labels = value
    }

    /**
     * @param value The location for the resource
     * - - -
     */
    @JvmName("gegpwlfmbbcwomdk")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value The resource name of the Endpoint. The name must be numeric with no leading zeros and can be at most 10 digits.
     */
    @JvmName("chelapqixovuaxwt")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name. Only one of the fields, `network` or `privateServiceConnectConfig`, can be set.
     */
    @JvmName("avwkqcivyfyvwhqd")
    public suspend fun network(`value`: Output) {
        this.network = value
    }

    /**
     * @param value Configures the request-response logging for online prediction.
     * Structure is documented below.
     */
    @JvmName("yqxmufqoarwysrec")
    public suspend fun predictRequestResponseLoggingConfig(`value`: Output) {
        this.predictRequestResponseLoggingConfig = value
    }

    /**
     * @param value Configuration for private service connect. `network` and `privateServiceConnectConfig` are mutually exclusive.
     * Structure is documented below.
     */
    @JvmName("nthpnwfpnfpveexx")
    public suspend fun privateServiceConnectConfig(`value`: Output) {
        this.privateServiceConnectConfig = value
    }

    /**
     * @param value The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    @JvmName("bbhbsfdmtnvklbio")
    public suspend fun project(`value`: Output) {
        this.project = value
    }

    /**
     * @param value The region for the resource
     */
    @JvmName("rcemwfdqbpddnxoq")
    public suspend fun region(`value`: Output) {
        this.region = value
    }

    /**
     * @param value A map from a DeployedModel's id to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel.
     * If a DeployedModel's id is not listed in this map, then it receives no traffic.
     * The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment. See
     * the `deployModel` [example](https://cloud.google.com/vertex-ai/docs/general/deployment#deploy_a_model_to_an_endpoint) and
     * [documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints/deployModel) for more information.
     * > **Note:** To set the map to empty, set `"{}"`, apply, and then remove the field from your config.
     */
    @JvmName("umjqhudjqpvutmcs")
    public suspend fun trafficSplit(`value`: Output) {
        this.trafficSplit = value
    }

    /**
     * @param value If true, the endpoint will be exposed through a dedicated DNS [Endpoint.dedicated_endpoint_dns]. Your request to the dedicated DNS will be isolated from other users' traffic and will have better performance and reliability. Note: Once you enabled dedicated endpoint, you won't be able to send request to the shared DNS {region}-aiplatform.googleapis.com. The limitation will be removed soon.
     */
    @JvmName("lfctlyfdcyujetcj")
    public suspend fun dedicatedEndpointEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dedicatedEndpointEnabled = mapped
    }

    /**
     * @param value The description of the Endpoint.
     */
    @JvmName("atwbsjamwywtikfv")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value Required. The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.
     */
    @JvmName("wifkroodjwlfaqyx")
    public suspend fun displayName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.displayName = mapped
    }

    /**
     * @param value Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key.
     * Structure is documented below.
     */
    @JvmName("pycpycoitwrpbbet")
    public suspend fun encryptionSpec(`value`: AiEndpointEncryptionSpecArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.encryptionSpec = mapped
    }

    /**
     * @param argument Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key.
     * Structure is documented below.
     */
    @JvmName("pgpwdsvxfsvaqpxj")
    public suspend fun encryptionSpec(argument: suspend AiEndpointEncryptionSpecArgsBuilder.() -> Unit) {
        val toBeMapped = AiEndpointEncryptionSpecArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.encryptionSpec = mapped
    }

    /**
     * @param value The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("vgovcpcywwljigwn")
    public suspend fun labels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param values The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("dhpekkhlrrfulfdx")
    public fun labels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param value The location for the resource
     * - - -
     */
    @JvmName("ajtmuktcihxmhfjd")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value The resource name of the Endpoint. The name must be numeric with no leading zeros and can be at most 10 digits.
     */
    @JvmName("kkxgfxjbrvmrgovo")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name. Only one of the fields, `network` or `privateServiceConnectConfig`, can be set.
     */
    @JvmName("ikumccdqedjjvkvp")
    public suspend fun network(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.network = mapped
    }

    /**
     * @param value Configures the request-response logging for online prediction.
     * Structure is documented below.
     */
    @JvmName("vjwthvqookvrolec")
    public suspend fun predictRequestResponseLoggingConfig(`value`: AiEndpointPredictRequestResponseLoggingConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.predictRequestResponseLoggingConfig = mapped
    }

    /**
     * @param argument Configures the request-response logging for online prediction.
     * Structure is documented below.
     */
    @JvmName("jaahaaasiesrqvnt")
    public suspend fun predictRequestResponseLoggingConfig(argument: suspend AiEndpointPredictRequestResponseLoggingConfigArgsBuilder.() -> Unit) {
        val toBeMapped = AiEndpointPredictRequestResponseLoggingConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.predictRequestResponseLoggingConfig = mapped
    }

    /**
     * @param value Configuration for private service connect. `network` and `privateServiceConnectConfig` are mutually exclusive.
     * Structure is documented below.
     */
    @JvmName("lxmmclcjeuxreyfd")
    public suspend fun privateServiceConnectConfig(`value`: AiEndpointPrivateServiceConnectConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.privateServiceConnectConfig = mapped
    }

    /**
     * @param argument Configuration for private service connect. `network` and `privateServiceConnectConfig` are mutually exclusive.
     * Structure is documented below.
     */
    @JvmName("kreqddxcsifqffet")
    public suspend fun privateServiceConnectConfig(argument: suspend AiEndpointPrivateServiceConnectConfigArgsBuilder.() -> Unit) {
        val toBeMapped = AiEndpointPrivateServiceConnectConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.privateServiceConnectConfig = mapped
    }

    /**
     * @param value The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    @JvmName("nqlcfjykogtuoaql")
    public suspend fun project(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.project = mapped
    }

    /**
     * @param value The region for the resource
     */
    @JvmName("tjyqdagmcchajpyj")
    public suspend fun region(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.region = mapped
    }

    /**
     * @param value A map from a DeployedModel's id to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel.
     * If a DeployedModel's id is not listed in this map, then it receives no traffic.
     * The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment. See
     * the `deployModel` [example](https://cloud.google.com/vertex-ai/docs/general/deployment#deploy_a_model_to_an_endpoint) and
     * [documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints/deployModel) for more information.
     * > **Note:** To set the map to empty, set `"{}"`, apply, and then remove the field from your config.
     */
    @JvmName("jyismnxxxhrkbhtt")
    public suspend fun trafficSplit(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.trafficSplit = mapped
    }

    internal fun build(): AiEndpointArgs = AiEndpointArgs(
        dedicatedEndpointEnabled = dedicatedEndpointEnabled,
        description = description,
        displayName = displayName,
        encryptionSpec = encryptionSpec,
        labels = labels,
        location = location,
        name = name,
        network = network,
        predictRequestResponseLoggingConfig = predictRequestResponseLoggingConfig,
        privateServiceConnectConfig = privateServiceConnectConfig,
        project = project,
        region = region,
        trafficSplit = trafficSplit,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy