diff --git a/reference.md b/reference.md index a014e3e6..4b6d0cbc 100644 --- a/reference.md +++ b/reference.md @@ -1,4 +1,172 @@ # Reference +
client.apply(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Applies a given manifest to create or update resources of specific types, such as provider-account, cluster, workspace, or ml-repo. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from truefoundry_sdk import Collaborator, MlRepoManifest, TrueFoundry + +client = TrueFoundry( + api_key="YOUR_API_KEY", + base_url="https://yourhost.com/path/to/api", +) +client.apply( + manifest=MlRepoManifest( + name="name", + storage_integration_fqn="storage_integration_fqn", + collaborators=[ + Collaborator( + subject="subject", + role_id="role_id", + ) + ], + ), +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**manifest:** `TrueFoundryApplyRequestManifest` — manifest of the resource to be created or updated + +
+
+ +
+
+ +**dry_run:** `typing.Optional[bool]` — Dry run the apply operation without actually applying + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.delete(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Deletes resources of specific types, such as provider-account, cluster, workspace, or application. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from truefoundry_sdk import Collaborator, MlRepoManifest, TrueFoundry + +client = TrueFoundry( + api_key="YOUR_API_KEY", + base_url="https://yourhost.com/path/to/api", +) +client.delete( + manifest=MlRepoManifest( + name="name", + storage_integration_fqn="storage_integration_fqn", + collaborators=[ + Collaborator( + subject="subject", + role_id="role_id", + ) + ], + ), +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**manifest:** `TrueFoundryDeleteRequestManifest` — manifest of the resource to be deleted + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ ## Internal
client.internal.get_id_from_fqn(...)
diff --git a/src/truefoundry_sdk/__init__.py b/src/truefoundry_sdk/__init__.py index 18d13893..4d109d4e 100644 --- a/src/truefoundry_sdk/__init__.py +++ b/src/truefoundry_sdk/__init__.py @@ -11,17 +11,27 @@ Agent, AgentApp, AgentManifest, + AgentManifestWithFqn, AgentOpenApiToolManifest, AgentOpenApiToolManifestOpenapiSpec, - AgentOpenApiToolWithFqn, - AgentOpenApiToolWithFqnOpenapiSpec, + AgentOpenApiToolManifestWithFqn, + AgentOpenApiToolManifestWithFqnOpenapiSpec, AgentVersion, - AgentWithFqn, + Ai21Integrations, + Ai21KeyAuth, + Ai21Model, + Ai21ProviderAccount, Alert, + AlertConfig, + AlertSeverity, AlertStatus, AmqpInputConfig, AmqpMetricConfig, AmqpOutputConfig, + AnthropicIntegrations, + AnthropicKeyAuth, + AnthropicModel, + AnthropicProviderAccount, Application, ApplicationDebugInfo, ApplicationLifecycleStage, @@ -51,18 +61,69 @@ AsyncServiceReplicas, Autoshutdown, AwsAccessKeyAuth, + AwsAccessKeyBasedAuth, + AwsAssumedRoleBasedAuth, + AwsBedrockProviderAccount, + AwsBedrockProviderAccountAuthData, + AwsEcr, + AwsEcrAuthData, + AwsEksIntegration, + AwsEksIntegrationAuthData, AwsInferentia, + AwsIntegrations, + AwsParameterStore, + AwsParameterStoreAuthData, + AwsProviderAccount, + AwsProviderAccountAuthData, + AwsRegion, + AwsS3, + AwsS3AuthData, + AwsSecretsManager, + AwsSecretsManagerAuthData, + AzureAiInferenceModel, + AzureAiInferenceModelDeploymentDetails, + AzureAiManagedDeployment, + AzureAiServerlessDeployment, + AzureAksIntegration, + AzureBasicAuth, + AzureBlobStorage, + AzureConnectionStringAuth, + AzureContainerRegistry, + AzureFoundryModel, + AzureFoundryModelV2, + AzureFoundryProviderAccount, + AzureIntegrations, + AzureKeyAuth, + AzureOAuth, + AzureOpenAiModel, + AzureOpenAiModelV2, + AzureOpenAiProviderAccount, + AzureProviderAccount, + AzureReposIntegration, + AzureVault, BaseArtifactVersion, BaseArtifactVersionManifest, BaseAutoscaling, + BaseOAuth2Login, + BaseOAuth2LoginJwtSource, BaseService, BaseServiceImage, BaseServiceMountsItem, BaseWorkbenchInput, BaseWorkbenchInputMountsItem, BasicAuthCreds, + BedrockKeyAuth, + BedrockModel, + BedrockModelAuthData, + BedrockModelV2, + BitbucketIntegration, + BitbucketProviderAccount, BlobStorageReference, BlueGreen, + BudgetConfig, + BudgetLimitUnit, + BudgetRule, + BudgetWhen, Build, BuildBuildSource, BuildBuildSpec, @@ -82,6 +143,10 @@ ClusterManifestWorkbenchConfig, ClusterType, Codeserver, + CohereIntegrations, + CohereKeyAuth, + CohereModel, + CohereProviderAccount, Collaborator, ContainerTaskConfig, ContainerTaskConfigImage, @@ -91,10 +156,32 @@ CreateMultiPartUploadRequest, CreatePersonalAccessTokenResponse, CronMetric, + CustomBasicAuth, + CustomBearerAuth, + CustomBlobStorage, + CustomHelmRepo, + CustomIntegrations, + CustomJwtAuthIntegration, + CustomMcpServerIntegration, + CustomModel, + CustomModelAuthData, + CustomModelModelServer, + CustomProviderAccount, + CustomUsernamePasswordArtifactsRegistry, DataDirectory, DataDirectoryManifest, DataDirectoryManifestSource, + DatabricksApiKeyAuth, + DatabricksIntegrations, + DatabricksModel, + DatabricksProviderAccount, + DatabricksProviderAccountAuthData, + DatabricksServicePrincipalAuth, DeactivateUserResponse, + DeepinfraIntegrations, + DeepinfraKeyAuth, + DeepinfraModel, + DeepinfraProviderAccount, DeleteApplicationResponse, DeleteJobRunResponse, DeletePersonalAccessTokenResponse, @@ -111,8 +198,13 @@ DeveloperMessageContent, DockerFileBuild, DockerFileBuildCommand, + DockerhubBasicAuth, + DockerhubIntegrations, + DockerhubProviderAccount, + DockerhubRegistry, DynamicVolumeConfig, Email, + EmailNotificationChannel, EmptyResponse, Endpoint, Environment, @@ -124,6 +216,11 @@ EventChartCategory, EventInvolvedObject, ExternalBlobStorageSource, + FailureToleranceConfig, + FallbackConfig, + FallbackModel, + FallbackRule, + FallbackWhen, FastAiFramework, FileInfo, FlyteLaunchPlan, @@ -140,7 +237,19 @@ ForwardAction, Function, FunctionSchema, + GatewayConfig, + GcpApiKeyAuth, + GcpGcr, + GcpGcs, + GcpGkeIntegration, + GcpGsm, + GcpIntegrations, + GcpKeyFileAuth, + GcpProviderAccount, + GcpProviderAccountAuthData, + GcpRegion, GcpTpu, + GeminiModelV2, GetAgentResponse, GetAgentVersionResponse, GetAlertsResponse, @@ -177,9 +286,26 @@ GitHelmRepo, GitRepositoryExistsResponse, GitSource, + GithubIntegration, + GithubProviderAccount, + GitlabIntegration, + GitlabProviderAccount, GluonFramework, + GoogleGeminiProviderAccount, + GoogleModel, + GoogleVertexProviderAccount, Graph, GraphChartType, + GroqIntegrations, + GroqKeyAuth, + GroqModel, + GroqProviderAccount, + GuardrailConfig, + GuardrailConfigAction, + GuardrailsConfig, + GuardrailsOptions, + GuardrailsRule, + GuardrailsWhen, H2OFramework, HeaderMatch, HealthProbe, @@ -199,6 +325,8 @@ ImageUrl, ImageUrlUrl, InferMethodName, + InfraProviderAccount, + InputOutputBasedCostMetricValue, Intercept, InterceptRulesItem, InterceptRulesItemAction, @@ -208,6 +336,10 @@ InternalModelVersion, InviteUserResponse, IsClusterConnectedResponse, + JFrogIntegrations, + JfrogArtifactsRegistry, + JfrogBasicAuth, + JfrogProviderAccount, Job, JobAlert, JobImage, @@ -227,6 +359,8 @@ KafkaSaslAuth, KerasFramework, Kustomize, + LatencyBasedLoadBalanceTarget, + LatencyBasedLoadBalancingRule, LibraryName, LightGbmFramework, ListAgentVersionsResponse, @@ -258,6 +392,10 @@ ListVirtualAccountResponse, ListWorkspacesResponse, LiteralMap, + LoadBalanceTarget, + LoadBalancingConfig, + LoadBalancingRule, + LoadBalancingWhen, LocalArtifactSource, LocalModelSource, LocalSource, @@ -266,17 +404,31 @@ LogsSearchOperatorType, LogsSortingDirection, Manual, + McpServerAuth, + McpServerHeaderAuth, + McpServerIntegration, + McpServerIntegrations, + McpServerOAuth2, + McpServerProviderAccount, Method, Metric, MimeType, MirrorAction, + MistralAiIntegrations, + MistralAiKeyAuth, + MistralAiModel, + MistralAiProviderAccount, MlRepo, MlRepoManifest, Model, + ModelConfig, ModelConfiguration, + ModelCostMetric, ModelManifest, ModelManifestFramework, ModelManifestSource, + ModelProviderAccount, + ModelType, ModelVersion, ModelVersionEnvironment, MultiPartUpload, @@ -290,38 +442,86 @@ NodeSelectorCapacityType, Nodepool, NodepoolSelector, + NomicIntegrations, + NomicKeyAuth, + NomicModel, + NomicProviderAccount, Notebook, NotebookConfig, NotificationTarget, + NotificationTargetForAlertRule, NvidiaGpu, NvidiaMiggpu, NvidiaMiggpuProfile, NvidiaTimeslicingGpu, + OAuth2LoginProvider, OciRepo, + OllamaIntegrations, + OllamaKeyAuth, + OllamaModel, + OllamaProviderAccount, OnnxFramework, + OpenAiIntegrations, + OpenAiModel, + OpenaiApiKeyAuth, + OpenaiProviderAccount, Operation, PaddleFramework, + PagerDuty, + PagerDutyIntegration, + PagerDutyIntegrationKeyAuth, + PagerDutyIntegrations, + PagerDutyProviderAccount, Pagination, + PalmIntegrations, + PalmKeyAuth, + PalmModel, + PalmProviderAccount, Param, ParamParamType, Parameters, ParametersStop, + PerThousandEmbeddingTokensCostMetric, + PerThousandTokensCostMetric, Permissions, + PerplexityAiKeyAuth, + PerplexityAiModel, + PerplexityAiProviderAccount, + PerplexityIntegrations, + PolicyActions, + PolicyEntityTypes, + PolicyFilters, + PolicyManifest, + PolicyManifestMode, + PolicyManifestOperation, + PolicyMutationOperation, + PolicyValidationOperation, Port, PortAppProtocol, PortAuth, PortProtocol, PreRegisterUsersResponse, PresignedUrlObject, + PrometheusAlertRule, Prompt, PromptVersion, + ProviderAccounts, + PublicCostMetric, PyTorchFramework, PythonBuild, PythonBuildCommand, PythonTaskConfig, PythonTaskConfigImage, PythonTaskConfigMountsItem, + QuayArtifactsRegistry, + QuayBasicAuth, + QuayIntegrations, + QuayProviderAccount, RStudio, + RateLimitConfig, + RateLimitRule, + RateLimitUnit, + RateLimitWhen, Recommendation, RefusalContentPart, RemoteSource, @@ -338,6 +538,11 @@ SecretInput, SecretMount, SecretVersion, + SelfHostedModel, + SelfHostedModelAuthData, + SelfHostedModelIntegrations, + SelfHostedModelModelServer, + SelfHostedModelProviderAccount, Service, ServiceAutoscaling, ServiceAutoscalingMetrics, @@ -349,7 +554,14 @@ SklearnModelSchema, SklearnSerializationFormat, SlackBot, + SlackBotAuth, + SlackBotIntegration, + SlackIntegrations, + SlackProviderAccount, SlackWebhook, + SlackWebhookAuth, + SlackWebhookIntegration, + SmtpCredentials, SpaCyFramework, SparkBuild, SparkConfig, @@ -390,6 +602,10 @@ TerminateJobResponse, TextContentPart, TextContentPartText, + TogetherAiIntegrations, + TogetherAiKeyAuth, + TogetherAiModel, + TogetherAiProviderAccount, TokenPagination, Tool, ToolCall, @@ -401,12 +617,24 @@ TracingProjectManifest, TransformersFramework, TriggerJobRunResponse, + TrueFoundryApplyRequestManifest, + TrueFoundryApplyResponse, + TrueFoundryApplyResponseAction, + TrueFoundryApplyResponseExistingManifest, TrueFoundryArtifactSource, + TrueFoundryDbssm, + TrueFoundryDeleteRequestManifest, + TrueFoundryIntegrations, TrueFoundryInteractiveLogin, TrueFoundryManagedSource, + TrueFoundryProviderAccount, + TtlIntegrations, + TtlProviderAccount, + TtlRegistry, UpdateSecretInput, UpdateUserRolesResponse, UpgradeData, + UsageLimits, User, UserMessage, UserMessageContent, @@ -414,12 +642,21 @@ UserMetadata, ValidationError, ValidationErrorLocItem, + VertexModel, + VertexModelV2, VirtualAccount, VirtualAccountManifest, Volume, VolumeBrowser, VolumeConfig, VolumeMount, + WebhookBasicAuth, + WebhookBearerAuth, + WebhookIntegration, + WebhookIntegrationAuthData, + WebhookIntegrations, + WebhookProviderAccount, + WeightBasedLoadBalancingRule, WorkbenchImage, WorkerConfig, WorkerConfigInputConfig, @@ -498,17 +735,27 @@ "Agent", "AgentApp", "AgentManifest", + "AgentManifestWithFqn", "AgentOpenApiToolManifest", "AgentOpenApiToolManifestOpenapiSpec", - "AgentOpenApiToolWithFqn", - "AgentOpenApiToolWithFqnOpenapiSpec", + "AgentOpenApiToolManifestWithFqn", + "AgentOpenApiToolManifestWithFqnOpenapiSpec", "AgentVersion", - "AgentWithFqn", + "Ai21Integrations", + "Ai21KeyAuth", + "Ai21Model", + "Ai21ProviderAccount", "Alert", + "AlertConfig", + "AlertSeverity", "AlertStatus", "AmqpInputConfig", "AmqpMetricConfig", "AmqpOutputConfig", + "AnthropicIntegrations", + "AnthropicKeyAuth", + "AnthropicModel", + "AnthropicProviderAccount", "Application", "ApplicationDebugInfo", "ApplicationLifecycleStage", @@ -542,19 +789,70 @@ "AsyncTrueFoundry", "Autoshutdown", "AwsAccessKeyAuth", + "AwsAccessKeyBasedAuth", + "AwsAssumedRoleBasedAuth", + "AwsBedrockProviderAccount", + "AwsBedrockProviderAccountAuthData", + "AwsEcr", + "AwsEcrAuthData", + "AwsEksIntegration", + "AwsEksIntegrationAuthData", "AwsInferentia", + "AwsIntegrations", + "AwsParameterStore", + "AwsParameterStoreAuthData", + "AwsProviderAccount", + "AwsProviderAccountAuthData", + "AwsRegion", + "AwsS3", + "AwsS3AuthData", + "AwsSecretsManager", + "AwsSecretsManagerAuthData", + "AzureAiInferenceModel", + "AzureAiInferenceModelDeploymentDetails", + "AzureAiManagedDeployment", + "AzureAiServerlessDeployment", + "AzureAksIntegration", + "AzureBasicAuth", + "AzureBlobStorage", + "AzureConnectionStringAuth", + "AzureContainerRegistry", + "AzureFoundryModel", + "AzureFoundryModelV2", + "AzureFoundryProviderAccount", + "AzureIntegrations", + "AzureKeyAuth", + "AzureOAuth", + "AzureOpenAiModel", + "AzureOpenAiModelV2", + "AzureOpenAiProviderAccount", + "AzureProviderAccount", + "AzureReposIntegration", + "AzureVault", "BadRequestError", "BaseArtifactVersion", "BaseArtifactVersionManifest", "BaseAutoscaling", + "BaseOAuth2Login", + "BaseOAuth2LoginJwtSource", "BaseService", "BaseServiceImage", "BaseServiceMountsItem", "BaseWorkbenchInput", "BaseWorkbenchInputMountsItem", "BasicAuthCreds", + "BedrockKeyAuth", + "BedrockModel", + "BedrockModelAuthData", + "BedrockModelV2", + "BitbucketIntegration", + "BitbucketProviderAccount", "BlobStorageReference", "BlueGreen", + "BudgetConfig", + "BudgetLimitUnit", + "BudgetRule", + "BudgetWhen", "Build", "BuildBuildSource", "BuildBuildSpec", @@ -575,6 +873,10 @@ "ClusterType", "ClustersDeleteResponse", "Codeserver", + "CohereIntegrations", + "CohereKeyAuth", + "CohereModel", + "CohereProviderAccount", "Collaborator", "ConflictError", "ContainerTaskConfig", @@ -585,10 +887,32 @@ "CreateMultiPartUploadRequest", "CreatePersonalAccessTokenResponse", "CronMetric", + "CustomBasicAuth", + "CustomBearerAuth", + "CustomBlobStorage", + "CustomHelmRepo", + "CustomIntegrations", + "CustomJwtAuthIntegration", + "CustomMcpServerIntegration", + "CustomModel", + "CustomModelAuthData", + "CustomModelModelServer", + "CustomProviderAccount", + "CustomUsernamePasswordArtifactsRegistry", "DataDirectory", "DataDirectoryManifest", "DataDirectoryManifestSource", + "DatabricksApiKeyAuth", + "DatabricksIntegrations", + "DatabricksModel", + "DatabricksProviderAccount", + "DatabricksProviderAccountAuthData", + "DatabricksServicePrincipalAuth", "DeactivateUserResponse", + "DeepinfraIntegrations", + "DeepinfraKeyAuth", + "DeepinfraModel", + "DeepinfraProviderAccount", "DeleteApplicationResponse", "DeleteJobRunResponse", "DeletePersonalAccessTokenResponse", @@ -605,8 +929,13 @@ "DeveloperMessageContent", "DockerFileBuild", "DockerFileBuildCommand", + "DockerhubBasicAuth", + "DockerhubIntegrations", + "DockerhubProviderAccount", + "DockerhubRegistry", "DynamicVolumeConfig", "Email", + "EmailNotificationChannel", "EmptyResponse", "Endpoint", "Environment", @@ -620,6 +949,11 @@ "ExpectationFailedError", "ExternalBlobStorageSource", "FailedDependencyError", + "FailureToleranceConfig", + "FallbackConfig", + "FallbackModel", + "FallbackRule", + "FallbackWhen", "FastAiFramework", "FileInfo", "FlyteLaunchPlan", @@ -637,7 +971,19 @@ "ForwardAction", "Function", "FunctionSchema", + "GatewayConfig", + "GcpApiKeyAuth", + "GcpGcr", + "GcpGcs", + "GcpGkeIntegration", + "GcpGsm", + "GcpIntegrations", + "GcpKeyFileAuth", + "GcpProviderAccount", + "GcpProviderAccountAuthData", + "GcpRegion", "GcpTpu", + "GeminiModelV2", "GetAgentResponse", "GetAgentVersionResponse", "GetAlertsResponse", @@ -674,9 +1020,26 @@ "GitHelmRepo", "GitRepositoryExistsResponse", "GitSource", + "GithubIntegration", + "GithubProviderAccount", + "GitlabIntegration", + "GitlabProviderAccount", "GluonFramework", + "GoogleGeminiProviderAccount", + "GoogleModel", + "GoogleVertexProviderAccount", "Graph", "GraphChartType", + "GroqIntegrations", + "GroqKeyAuth", + "GroqModel", + "GroqProviderAccount", + "GuardrailConfig", + "GuardrailConfigAction", + "GuardrailsConfig", + "GuardrailsOptions", + "GuardrailsRule", + "GuardrailsWhen", "H2OFramework", "HeaderMatch", "HealthProbe", @@ -696,6 +1059,8 @@ "ImageUrl", "ImageUrlUrl", "InferMethodName", + "InfraProviderAccount", + "InputOutputBasedCostMetricValue", "Intercept", "InterceptRulesItem", "InterceptRulesItemAction", @@ -705,6 +1070,10 @@ "InternalModelVersion", "InviteUserResponse", "IsClusterConnectedResponse", + "JFrogIntegrations", + "JfrogArtifactsRegistry", + "JfrogBasicAuth", + "JfrogProviderAccount", "Job", "JobAlert", "JobImage", @@ -724,6 +1093,8 @@ "KafkaSaslAuth", "KerasFramework", "Kustomize", + "LatencyBasedLoadBalanceTarget", + "LatencyBasedLoadBalancingRule", "LibraryName", "LightGbmFramework", "ListAgentVersionsResponse", @@ -755,6 +1126,10 @@ "ListVirtualAccountResponse", "ListWorkspacesResponse", "LiteralMap", + "LoadBalanceTarget", + "LoadBalancingConfig", + "LoadBalancingRule", + "LoadBalancingWhen", "LocalArtifactSource", "LocalModelSource", "LocalSource", @@ -763,18 +1138,32 @@ "LogsSearchOperatorType", "LogsSortingDirection", "Manual", + "McpServerAuth", + "McpServerHeaderAuth", + "McpServerIntegration", + "McpServerIntegrations", + "McpServerOAuth2", + "McpServerProviderAccount", "Method", "MethodNotAllowedError", "Metric", "MimeType", "MirrorAction", + "MistralAiIntegrations", + "MistralAiKeyAuth", + "MistralAiModel", + "MistralAiProviderAccount", "MlRepo", "MlRepoManifest", "Model", + "ModelConfig", "ModelConfiguration", + "ModelCostMetric", "ModelManifest", "ModelManifestFramework", "ModelManifestSource", + "ModelProviderAccount", + "ModelType", "ModelVersion", "ModelVersionEnvironment", "MultiPartUpload", @@ -788,40 +1177,88 @@ "NodeSelectorCapacityType", "Nodepool", "NodepoolSelector", + "NomicIntegrations", + "NomicKeyAuth", + "NomicModel", + "NomicProviderAccount", "NotFoundError", "NotImplementedError", "Notebook", "NotebookConfig", "NotificationTarget", + "NotificationTargetForAlertRule", "NvidiaGpu", "NvidiaMiggpu", "NvidiaMiggpuProfile", "NvidiaTimeslicingGpu", + "OAuth2LoginProvider", "OciRepo", + "OllamaIntegrations", + "OllamaKeyAuth", + "OllamaModel", + "OllamaProviderAccount", "OnnxFramework", + "OpenAiIntegrations", + "OpenAiModel", + "OpenaiApiKeyAuth", + "OpenaiProviderAccount", "Operation", "PaddleFramework", + "PagerDuty", + "PagerDutyIntegration", + "PagerDutyIntegrationKeyAuth", + "PagerDutyIntegrations", + "PagerDutyProviderAccount", "Pagination", + "PalmIntegrations", + "PalmKeyAuth", + "PalmModel", + "PalmProviderAccount", "Param", "ParamParamType", "Parameters", "ParametersStop", + "PerThousandEmbeddingTokensCostMetric", + "PerThousandTokensCostMetric", "Permissions", + "PerplexityAiKeyAuth", + "PerplexityAiModel", + "PerplexityAiProviderAccount", + "PerplexityIntegrations", + "PolicyActions", + "PolicyEntityTypes", + "PolicyFilters", + "PolicyManifest", + "PolicyManifestMode", + "PolicyManifestOperation", + "PolicyMutationOperation", + "PolicyValidationOperation", "Port", "PortAppProtocol", "PortAuth", "PortProtocol", "PreRegisterUsersResponse", "PresignedUrlObject", + "PrometheusAlertRule", "Prompt", "PromptVersion", + "ProviderAccounts", + "PublicCostMetric", "PyTorchFramework", "PythonBuild", "PythonBuildCommand", "PythonTaskConfig", "PythonTaskConfigImage", "PythonTaskConfigMountsItem", + "QuayArtifactsRegistry", + "QuayBasicAuth", + "QuayIntegrations", + "QuayProviderAccount", "RStudio", + "RateLimitConfig", + "RateLimitRule", + "RateLimitUnit", + "RateLimitWhen", "Recommendation", "RefusalContentPart", "RemoteSource", @@ -838,6 +1275,11 @@ "SecretInput", "SecretMount", "SecretVersion", + "SelfHostedModel", + "SelfHostedModelAuthData", + "SelfHostedModelIntegrations", + "SelfHostedModelModelServer", + "SelfHostedModelProviderAccount", "Service", "ServiceAutoscaling", "ServiceAutoscalingMetrics", @@ -849,7 +1291,14 @@ "SklearnModelSchema", "SklearnSerializationFormat", "SlackBot", + "SlackBotAuth", + "SlackBotIntegration", + "SlackIntegrations", + "SlackProviderAccount", "SlackWebhook", + "SlackWebhookAuth", + "SlackWebhookIntegration", + "SmtpCredentials", "SpaCyFramework", "SparkBuild", "SparkConfig", @@ -891,6 +1340,10 @@ "TerminateJobResponse", "TextContentPart", "TextContentPartText", + "TogetherAiIntegrations", + "TogetherAiKeyAuth", + "TogetherAiModel", + "TogetherAiProviderAccount", "TokenPagination", "Tool", "ToolCall", @@ -904,14 +1357,26 @@ "TriggerJobRequestInput", "TriggerJobRunResponse", "TrueFoundry", + "TrueFoundryApplyRequestManifest", + "TrueFoundryApplyResponse", + "TrueFoundryApplyResponseAction", + "TrueFoundryApplyResponseExistingManifest", "TrueFoundryArtifactSource", + "TrueFoundryDbssm", + "TrueFoundryDeleteRequestManifest", + "TrueFoundryIntegrations", "TrueFoundryInteractiveLogin", "TrueFoundryManagedSource", + "TrueFoundryProviderAccount", + "TtlIntegrations", + "TtlProviderAccount", + "TtlRegistry", "UnauthorizedError", "UnprocessableEntityError", "UpdateSecretInput", "UpdateUserRolesResponse", "UpgradeData", + "UsageLimits", "User", "UserMessage", "UserMessageContent", @@ -919,12 +1384,21 @@ "UserMetadata", "ValidationError", "ValidationErrorLocItem", + "VertexModel", + "VertexModelV2", "VirtualAccount", "VirtualAccountManifest", "Volume", "VolumeBrowser", "VolumeConfig", "VolumeMount", + "WebhookBasicAuth", + "WebhookBearerAuth", + "WebhookIntegration", + "WebhookIntegrationAuthData", + "WebhookIntegrations", + "WebhookProviderAccount", + "WeightBasedLoadBalancingRule", "WorkbenchImage", "WorkerConfig", "WorkerConfigInputConfig", diff --git a/src/truefoundry_sdk/base_client.py b/src/truefoundry_sdk/base_client.py index 0022a047..a53291f7 100644 --- a/src/truefoundry_sdk/base_client.py +++ b/src/truefoundry_sdk/base_client.py @@ -14,6 +14,7 @@ from .clusters.client import AsyncClustersClient, ClustersClient from .core.api_error import ApiError from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from .core.request_options import RequestOptions from .data_directories.client import AsyncDataDirectoriesClient, DataDirectoriesClient from .environments.client import AsyncEnvironmentsClient, EnvironmentsClient from .events.client import AsyncEventsClient, EventsClient @@ -26,16 +27,23 @@ from .personal_access_tokens.client import AsyncPersonalAccessTokensClient, PersonalAccessTokensClient from .prompt_versions.client import AsyncPromptVersionsClient, PromptVersionsClient from .prompts.client import AsyncPromptsClient, PromptsClient +from .raw_base_client import AsyncRawBaseTrueFoundry, RawBaseTrueFoundry from .secret_groups.client import AsyncSecretGroupsClient, SecretGroupsClient from .secrets.client import AsyncSecretsClient, SecretsClient from .teams.client import AsyncTeamsClient, TeamsClient from .tool_versions.client import AsyncToolVersionsClient, ToolVersionsClient from .tools.client import AsyncToolsClient, ToolsClient from .tracing_projects.client import AsyncTracingProjectsClient, TracingProjectsClient +from .types.true_foundry_apply_request_manifest import TrueFoundryApplyRequestManifest +from .types.true_foundry_apply_response import TrueFoundryApplyResponse +from .types.true_foundry_delete_request_manifest import TrueFoundryDeleteRequestManifest from .users.client import AsyncUsersClient, UsersClient from .virtual_accounts.client import AsyncVirtualAccountsClient, VirtualAccountsClient from .workspaces.client import AsyncWorkspacesClient, WorkspacesClient +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + class BaseTrueFoundry: """ @@ -90,6 +98,7 @@ def __init__( else httpx.Client(timeout=_defaulted_timeout), timeout=_defaulted_timeout, ) + self._raw_client = RawBaseTrueFoundry(client_wrapper=self._client_wrapper) self.internal = InternalClient(client_wrapper=self._client_wrapper) self.users = UsersClient(client_wrapper=self._client_wrapper) self.teams = TeamsClient(client_wrapper=self._client_wrapper) @@ -120,6 +129,109 @@ def __init__( self.data_directories = DataDirectoriesClient(client_wrapper=self._client_wrapper) self.tracing_projects = TracingProjectsClient(client_wrapper=self._client_wrapper) + @property + def with_raw_response(self) -> RawBaseTrueFoundry: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + RawBaseTrueFoundry + """ + return self._raw_client + + def apply( + self, + *, + manifest: TrueFoundryApplyRequestManifest, + dry_run: typing.Optional[bool] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> TrueFoundryApplyResponse: + """ + Applies a given manifest to create or update resources of specific types, such as provider-account, cluster, workspace, or ml-repo. + + Parameters + ---------- + manifest : TrueFoundryApplyRequestManifest + manifest of the resource to be created or updated + + dry_run : typing.Optional[bool] + Dry run the apply operation without actually applying + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + TrueFoundryApplyResponse + The resource has been successfully created or updated. + + Examples + -------- + from truefoundry_sdk import Collaborator, MlRepoManifest, TrueFoundry + + client = TrueFoundry( + api_key="YOUR_API_KEY", + base_url="https://yourhost.com/path/to/api", + ) + client.apply( + manifest=MlRepoManifest( + name="name", + storage_integration_fqn="storage_integration_fqn", + collaborators=[ + Collaborator( + subject="subject", + role_id="role_id", + ) + ], + ), + ) + """ + _response = self._raw_client.apply(manifest=manifest, dry_run=dry_run, request_options=request_options) + return _response.data + + def delete( + self, *, manifest: TrueFoundryDeleteRequestManifest, request_options: typing.Optional[RequestOptions] = None + ) -> None: + """ + Deletes resources of specific types, such as provider-account, cluster, workspace, or application. + + Parameters + ---------- + manifest : TrueFoundryDeleteRequestManifest + manifest of the resource to be deleted + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + from truefoundry_sdk import Collaborator, MlRepoManifest, TrueFoundry + + client = TrueFoundry( + api_key="YOUR_API_KEY", + base_url="https://yourhost.com/path/to/api", + ) + client.delete( + manifest=MlRepoManifest( + name="name", + storage_integration_fqn="storage_integration_fqn", + collaborators=[ + Collaborator( + subject="subject", + role_id="role_id", + ) + ], + ), + ) + """ + _response = self._raw_client.delete(manifest=manifest, request_options=request_options) + return _response.data + class AsyncBaseTrueFoundry: """ @@ -174,6 +286,7 @@ def __init__( else httpx.AsyncClient(timeout=_defaulted_timeout), timeout=_defaulted_timeout, ) + self._raw_client = AsyncRawBaseTrueFoundry(client_wrapper=self._client_wrapper) self.internal = AsyncInternalClient(client_wrapper=self._client_wrapper) self.users = AsyncUsersClient(client_wrapper=self._client_wrapper) self.teams = AsyncTeamsClient(client_wrapper=self._client_wrapper) @@ -203,3 +316,122 @@ def __init__( self.agent_versions = AsyncAgentVersionsClient(client_wrapper=self._client_wrapper) self.data_directories = AsyncDataDirectoriesClient(client_wrapper=self._client_wrapper) self.tracing_projects = AsyncTracingProjectsClient(client_wrapper=self._client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawBaseTrueFoundry: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawBaseTrueFoundry + """ + return self._raw_client + + async def apply( + self, + *, + manifest: TrueFoundryApplyRequestManifest, + dry_run: typing.Optional[bool] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> TrueFoundryApplyResponse: + """ + Applies a given manifest to create or update resources of specific types, such as provider-account, cluster, workspace, or ml-repo. + + Parameters + ---------- + manifest : TrueFoundryApplyRequestManifest + manifest of the resource to be created or updated + + dry_run : typing.Optional[bool] + Dry run the apply operation without actually applying + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + TrueFoundryApplyResponse + The resource has been successfully created or updated. + + Examples + -------- + import asyncio + + from truefoundry_sdk import AsyncTrueFoundry, Collaborator, MlRepoManifest + + client = AsyncTrueFoundry( + api_key="YOUR_API_KEY", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.apply( + manifest=MlRepoManifest( + name="name", + storage_integration_fqn="storage_integration_fqn", + collaborators=[ + Collaborator( + subject="subject", + role_id="role_id", + ) + ], + ), + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.apply(manifest=manifest, dry_run=dry_run, request_options=request_options) + return _response.data + + async def delete( + self, *, manifest: TrueFoundryDeleteRequestManifest, request_options: typing.Optional[RequestOptions] = None + ) -> None: + """ + Deletes resources of specific types, such as provider-account, cluster, workspace, or application. + + Parameters + ---------- + manifest : TrueFoundryDeleteRequestManifest + manifest of the resource to be deleted + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + import asyncio + + from truefoundry_sdk import AsyncTrueFoundry, Collaborator, MlRepoManifest + + client = AsyncTrueFoundry( + api_key="YOUR_API_KEY", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.delete( + manifest=MlRepoManifest( + name="name", + storage_integration_fqn="storage_integration_fqn", + collaborators=[ + Collaborator( + subject="subject", + role_id="role_id", + ) + ], + ), + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.delete(manifest=manifest, request_options=request_options) + return _response.data diff --git a/src/truefoundry_sdk/raw_base_client.py b/src/truefoundry_sdk/raw_base_client.py new file mode 100644 index 00000000..117f4a47 --- /dev/null +++ b/src/truefoundry_sdk/raw_base_client.py @@ -0,0 +1,219 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from .core.api_error import ApiError +from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from .core.http_response import AsyncHttpResponse, HttpResponse +from .core.pydantic_utilities import parse_obj_as +from .core.request_options import RequestOptions +from .core.serialization import convert_and_respect_annotation_metadata +from .types.true_foundry_apply_request_manifest import TrueFoundryApplyRequestManifest +from .types.true_foundry_apply_response import TrueFoundryApplyResponse +from .types.true_foundry_delete_request_manifest import TrueFoundryDeleteRequestManifest + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + + +class RawBaseTrueFoundry: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def apply( + self, + *, + manifest: TrueFoundryApplyRequestManifest, + dry_run: typing.Optional[bool] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[TrueFoundryApplyResponse]: + """ + Applies a given manifest to create or update resources of specific types, such as provider-account, cluster, workspace, or ml-repo. + + Parameters + ---------- + manifest : TrueFoundryApplyRequestManifest + manifest of the resource to be created or updated + + dry_run : typing.Optional[bool] + Dry run the apply operation without actually applying + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[TrueFoundryApplyResponse] + The resource has been successfully created or updated. + """ + _response = self._client_wrapper.httpx_client.request( + "api/svc/v1/apply", + method="PUT", + json={ + "manifest": convert_and_respect_annotation_metadata( + object_=manifest, annotation=TrueFoundryApplyRequestManifest, direction="write" + ), + "dryRun": dry_run, + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + TrueFoundryApplyResponse, + parse_obj_as( + type_=TrueFoundryApplyResponse, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def delete( + self, *, manifest: TrueFoundryDeleteRequestManifest, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[None]: + """ + Deletes resources of specific types, such as provider-account, cluster, workspace, or application. + + Parameters + ---------- + manifest : TrueFoundryDeleteRequestManifest + manifest of the resource to be deleted + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[None] + """ + _response = self._client_wrapper.httpx_client.request( + "api/svc/v1/delete", + method="POST", + json={ + "manifest": convert_and_respect_annotation_metadata( + object_=manifest, annotation=TrueFoundryDeleteRequestManifest, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return HttpResponse(response=_response, data=None) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + +class AsyncRawBaseTrueFoundry: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def apply( + self, + *, + manifest: TrueFoundryApplyRequestManifest, + dry_run: typing.Optional[bool] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[TrueFoundryApplyResponse]: + """ + Applies a given manifest to create or update resources of specific types, such as provider-account, cluster, workspace, or ml-repo. + + Parameters + ---------- + manifest : TrueFoundryApplyRequestManifest + manifest of the resource to be created or updated + + dry_run : typing.Optional[bool] + Dry run the apply operation without actually applying + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[TrueFoundryApplyResponse] + The resource has been successfully created or updated. + """ + _response = await self._client_wrapper.httpx_client.request( + "api/svc/v1/apply", + method="PUT", + json={ + "manifest": convert_and_respect_annotation_metadata( + object_=manifest, annotation=TrueFoundryApplyRequestManifest, direction="write" + ), + "dryRun": dry_run, + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + TrueFoundryApplyResponse, + parse_obj_as( + type_=TrueFoundryApplyResponse, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def delete( + self, *, manifest: TrueFoundryDeleteRequestManifest, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[None]: + """ + Deletes resources of specific types, such as provider-account, cluster, workspace, or application. + + Parameters + ---------- + manifest : TrueFoundryDeleteRequestManifest + manifest of the resource to be deleted + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[None] + """ + _response = await self._client_wrapper.httpx_client.request( + "api/svc/v1/delete", + method="POST", + json={ + "manifest": convert_and_respect_annotation_metadata( + object_=manifest, annotation=TrueFoundryDeleteRequestManifest, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return AsyncHttpResponse(response=_response, data=None) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/truefoundry_sdk/types/__init__.py b/src/truefoundry_sdk/types/__init__.py index 0141feac..dc01a0b1 100644 --- a/src/truefoundry_sdk/types/__init__.py +++ b/src/truefoundry_sdk/types/__init__.py @@ -13,17 +13,27 @@ from .agent import Agent from .agent_app import AgentApp from .agent_manifest import AgentManifest +from .agent_manifest_with_fqn import AgentManifestWithFqn from .agent_open_api_tool_manifest import AgentOpenApiToolManifest from .agent_open_api_tool_manifest_openapi_spec import AgentOpenApiToolManifestOpenapiSpec -from .agent_open_api_tool_with_fqn import AgentOpenApiToolWithFqn -from .agent_open_api_tool_with_fqn_openapi_spec import AgentOpenApiToolWithFqnOpenapiSpec +from .agent_open_api_tool_manifest_with_fqn import AgentOpenApiToolManifestWithFqn +from .agent_open_api_tool_manifest_with_fqn_openapi_spec import AgentOpenApiToolManifestWithFqnOpenapiSpec from .agent_version import AgentVersion -from .agent_with_fqn import AgentWithFqn +from .ai21integrations import Ai21Integrations +from .ai21key_auth import Ai21KeyAuth +from .ai21model import Ai21Model +from .ai21provider_account import Ai21ProviderAccount from .alert import Alert +from .alert_config import AlertConfig +from .alert_severity import AlertSeverity from .alert_status import AlertStatus from .amqp_input_config import AmqpInputConfig from .amqp_metric_config import AmqpMetricConfig from .amqp_output_config import AmqpOutputConfig +from .anthropic_integrations import AnthropicIntegrations +from .anthropic_key_auth import AnthropicKeyAuth +from .anthropic_model import AnthropicModel +from .anthropic_provider_account import AnthropicProviderAccount from .application import Application from .application_debug_info import ApplicationDebugInfo from .application_lifecycle_stage import ApplicationLifecycleStage @@ -53,18 +63,69 @@ from .async_service_replicas import AsyncServiceReplicas from .autoshutdown import Autoshutdown from .aws_access_key_auth import AwsAccessKeyAuth +from .aws_access_key_based_auth import AwsAccessKeyBasedAuth +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth +from .aws_bedrock_provider_account import AwsBedrockProviderAccount +from .aws_bedrock_provider_account_auth_data import AwsBedrockProviderAccountAuthData +from .aws_ecr import AwsEcr +from .aws_ecr_auth_data import AwsEcrAuthData +from .aws_eks_integration import AwsEksIntegration +from .aws_eks_integration_auth_data import AwsEksIntegrationAuthData from .aws_inferentia import AwsInferentia +from .aws_integrations import AwsIntegrations +from .aws_parameter_store import AwsParameterStore +from .aws_parameter_store_auth_data import AwsParameterStoreAuthData +from .aws_provider_account import AwsProviderAccount +from .aws_provider_account_auth_data import AwsProviderAccountAuthData +from .aws_region import AwsRegion +from .aws_s3 import AwsS3 +from .aws_s3auth_data import AwsS3AuthData +from .aws_secrets_manager import AwsSecretsManager +from .aws_secrets_manager_auth_data import AwsSecretsManagerAuthData +from .azure_ai_inference_model import AzureAiInferenceModel +from .azure_ai_inference_model_deployment_details import AzureAiInferenceModelDeploymentDetails +from .azure_ai_managed_deployment import AzureAiManagedDeployment +from .azure_ai_serverless_deployment import AzureAiServerlessDeployment +from .azure_aks_integration import AzureAksIntegration +from .azure_basic_auth import AzureBasicAuth +from .azure_blob_storage import AzureBlobStorage +from .azure_connection_string_auth import AzureConnectionStringAuth +from .azure_container_registry import AzureContainerRegistry +from .azure_foundry_model import AzureFoundryModel +from .azure_foundry_model_v2 import AzureFoundryModelV2 +from .azure_foundry_provider_account import AzureFoundryProviderAccount +from .azure_integrations import AzureIntegrations +from .azure_key_auth import AzureKeyAuth +from .azure_o_auth import AzureOAuth +from .azure_open_ai_model import AzureOpenAiModel +from .azure_open_ai_model_v2 import AzureOpenAiModelV2 +from .azure_open_ai_provider_account import AzureOpenAiProviderAccount +from .azure_provider_account import AzureProviderAccount +from .azure_repos_integration import AzureReposIntegration +from .azure_vault import AzureVault from .base_artifact_version import BaseArtifactVersion from .base_artifact_version_manifest import BaseArtifactVersionManifest from .base_autoscaling import BaseAutoscaling +from .base_o_auth2login import BaseOAuth2Login +from .base_o_auth2login_jwt_source import BaseOAuth2LoginJwtSource from .base_service import BaseService from .base_service_image import BaseServiceImage from .base_service_mounts_item import BaseServiceMountsItem from .base_workbench_input import BaseWorkbenchInput from .base_workbench_input_mounts_item import BaseWorkbenchInputMountsItem from .basic_auth_creds import BasicAuthCreds +from .bedrock_key_auth import BedrockKeyAuth +from .bedrock_model import BedrockModel +from .bedrock_model_auth_data import BedrockModelAuthData +from .bedrock_model_v2 import BedrockModelV2 +from .bitbucket_integration import BitbucketIntegration +from .bitbucket_provider_account import BitbucketProviderAccount from .blob_storage_reference import BlobStorageReference from .blue_green import BlueGreen +from .budget_config import BudgetConfig +from .budget_limit_unit import BudgetLimitUnit +from .budget_rule import BudgetRule +from .budget_when import BudgetWhen from .build import Build from .build_build_source import BuildBuildSource from .build_build_spec import BuildBuildSpec @@ -84,6 +145,10 @@ from .cluster_manifest_workbench_config import ClusterManifestWorkbenchConfig from .cluster_type import ClusterType from .codeserver import Codeserver +from .cohere_integrations import CohereIntegrations +from .cohere_key_auth import CohereKeyAuth +from .cohere_model import CohereModel +from .cohere_provider_account import CohereProviderAccount from .collaborator import Collaborator from .container_task_config import ContainerTaskConfig from .container_task_config_image import ContainerTaskConfigImage @@ -93,10 +158,32 @@ from .create_multi_part_upload_request import CreateMultiPartUploadRequest from .create_personal_access_token_response import CreatePersonalAccessTokenResponse from .cron_metric import CronMetric +from .custom_basic_auth import CustomBasicAuth +from .custom_bearer_auth import CustomBearerAuth +from .custom_blob_storage import CustomBlobStorage +from .custom_helm_repo import CustomHelmRepo +from .custom_integrations import CustomIntegrations +from .custom_jwt_auth_integration import CustomJwtAuthIntegration +from .custom_mcp_server_integration import CustomMcpServerIntegration +from .custom_model import CustomModel +from .custom_model_auth_data import CustomModelAuthData +from .custom_model_model_server import CustomModelModelServer +from .custom_provider_account import CustomProviderAccount +from .custom_username_password_artifacts_registry import CustomUsernamePasswordArtifactsRegistry from .data_directory import DataDirectory from .data_directory_manifest import DataDirectoryManifest from .data_directory_manifest_source import DataDirectoryManifestSource +from .databricks_api_key_auth import DatabricksApiKeyAuth +from .databricks_integrations import DatabricksIntegrations +from .databricks_model import DatabricksModel +from .databricks_provider_account import DatabricksProviderAccount +from .databricks_provider_account_auth_data import DatabricksProviderAccountAuthData +from .databricks_service_principal_auth import DatabricksServicePrincipalAuth from .deactivate_user_response import DeactivateUserResponse +from .deepinfra_integrations import DeepinfraIntegrations +from .deepinfra_key_auth import DeepinfraKeyAuth +from .deepinfra_model import DeepinfraModel +from .deepinfra_provider_account import DeepinfraProviderAccount from .delete_application_response import DeleteApplicationResponse from .delete_job_run_response import DeleteJobRunResponse from .delete_personal_access_token_response import DeletePersonalAccessTokenResponse @@ -113,8 +200,13 @@ from .developer_message_content import DeveloperMessageContent from .docker_file_build import DockerFileBuild from .docker_file_build_command import DockerFileBuildCommand +from .dockerhub_basic_auth import DockerhubBasicAuth +from .dockerhub_integrations import DockerhubIntegrations +from .dockerhub_provider_account import DockerhubProviderAccount +from .dockerhub_registry import DockerhubRegistry from .dynamic_volume_config import DynamicVolumeConfig from .email import Email +from .email_notification_channel import EmailNotificationChannel from .empty_response import EmptyResponse from .endpoint import Endpoint from .environment import Environment @@ -126,6 +218,11 @@ from .event_chart_category import EventChartCategory from .event_involved_object import EventInvolvedObject from .external_blob_storage_source import ExternalBlobStorageSource +from .failure_tolerance_config import FailureToleranceConfig +from .fallback_config import FallbackConfig +from .fallback_model import FallbackModel +from .fallback_rule import FallbackRule +from .fallback_when import FallbackWhen from .fast_ai_framework import FastAiFramework from .file_info import FileInfo from .flyte_launch_plan import FlyteLaunchPlan @@ -142,7 +239,19 @@ from .forward_action import ForwardAction from .function import Function from .function_schema import FunctionSchema +from .gateway_config import GatewayConfig +from .gcp_api_key_auth import GcpApiKeyAuth +from .gcp_gcr import GcpGcr +from .gcp_gcs import GcpGcs +from .gcp_gke_integration import GcpGkeIntegration +from .gcp_gsm import GcpGsm +from .gcp_integrations import GcpIntegrations +from .gcp_key_file_auth import GcpKeyFileAuth +from .gcp_provider_account import GcpProviderAccount +from .gcp_provider_account_auth_data import GcpProviderAccountAuthData +from .gcp_region import GcpRegion from .gcp_tpu import GcpTpu +from .gemini_model_v2 import GeminiModelV2 from .get_agent_response import GetAgentResponse from .get_agent_version_response import GetAgentVersionResponse from .get_alerts_response import GetAlertsResponse @@ -179,9 +288,26 @@ from .git_helm_repo import GitHelmRepo from .git_repository_exists_response import GitRepositoryExistsResponse from .git_source import GitSource +from .github_integration import GithubIntegration +from .github_provider_account import GithubProviderAccount +from .gitlab_integration import GitlabIntegration +from .gitlab_provider_account import GitlabProviderAccount from .gluon_framework import GluonFramework +from .google_gemini_provider_account import GoogleGeminiProviderAccount +from .google_model import GoogleModel +from .google_vertex_provider_account import GoogleVertexProviderAccount from .graph import Graph from .graph_chart_type import GraphChartType +from .groq_integrations import GroqIntegrations +from .groq_key_auth import GroqKeyAuth +from .groq_model import GroqModel +from .groq_provider_account import GroqProviderAccount +from .guardrail_config import GuardrailConfig +from .guardrail_config_action import GuardrailConfigAction +from .guardrails_config import GuardrailsConfig +from .guardrails_options import GuardrailsOptions +from .guardrails_rule import GuardrailsRule +from .guardrails_when import GuardrailsWhen from .h2o_framework import H2OFramework from .header_match import HeaderMatch from .health_probe import HealthProbe @@ -201,6 +327,8 @@ from .image_url import ImageUrl from .image_url_url import ImageUrlUrl from .infer_method_name import InferMethodName +from .infra_provider_account import InfraProviderAccount +from .input_output_based_cost_metric_value import InputOutputBasedCostMetricValue from .intercept import Intercept from .intercept_rules_item import InterceptRulesItem from .intercept_rules_item_action import InterceptRulesItemAction @@ -210,6 +338,10 @@ from .internal_model_version import InternalModelVersion from .invite_user_response import InviteUserResponse from .is_cluster_connected_response import IsClusterConnectedResponse +from .j_frog_integrations import JFrogIntegrations +from .jfrog_artifacts_registry import JfrogArtifactsRegistry +from .jfrog_basic_auth import JfrogBasicAuth +from .jfrog_provider_account import JfrogProviderAccount from .job import Job from .job_alert import JobAlert from .job_image import JobImage @@ -229,6 +361,8 @@ from .kafka_sasl_auth import KafkaSaslAuth from .keras_framework import KerasFramework from .kustomize import Kustomize +from .latency_based_load_balance_target import LatencyBasedLoadBalanceTarget +from .latency_based_load_balancing_rule import LatencyBasedLoadBalancingRule from .library_name import LibraryName from .light_gbm_framework import LightGbmFramework from .list_agent_versions_response import ListAgentVersionsResponse @@ -260,6 +394,10 @@ from .list_virtual_account_response import ListVirtualAccountResponse from .list_workspaces_response import ListWorkspacesResponse from .literal_map import LiteralMap +from .load_balance_target import LoadBalanceTarget +from .load_balancing_config import LoadBalancingConfig +from .load_balancing_rule import LoadBalancingRule +from .load_balancing_when import LoadBalancingWhen from .local_artifact_source import LocalArtifactSource from .local_model_source import LocalModelSource from .local_source import LocalSource @@ -268,17 +406,31 @@ from .logs_search_operator_type import LogsSearchOperatorType from .logs_sorting_direction import LogsSortingDirection from .manual import Manual +from .mcp_server_auth import McpServerAuth +from .mcp_server_header_auth import McpServerHeaderAuth +from .mcp_server_integration import McpServerIntegration +from .mcp_server_integrations import McpServerIntegrations +from .mcp_server_o_auth2 import McpServerOAuth2 +from .mcp_server_provider_account import McpServerProviderAccount from .method import Method from .metric import Metric from .mime_type import MimeType from .mirror_action import MirrorAction +from .mistral_ai_integrations import MistralAiIntegrations +from .mistral_ai_key_auth import MistralAiKeyAuth +from .mistral_ai_model import MistralAiModel +from .mistral_ai_provider_account import MistralAiProviderAccount from .ml_repo import MlRepo from .ml_repo_manifest import MlRepoManifest from .model import Model +from .model_config import ModelConfig from .model_configuration import ModelConfiguration +from .model_cost_metric import ModelCostMetric from .model_manifest import ModelManifest from .model_manifest_framework import ModelManifestFramework from .model_manifest_source import ModelManifestSource +from .model_provider_account import ModelProviderAccount +from .model_type import ModelType from .model_version import ModelVersion from .model_version_environment import ModelVersionEnvironment from .multi_part_upload import MultiPartUpload @@ -292,38 +444,86 @@ from .node_selector_capacity_type import NodeSelectorCapacityType from .nodepool import Nodepool from .nodepool_selector import NodepoolSelector +from .nomic_integrations import NomicIntegrations +from .nomic_key_auth import NomicKeyAuth +from .nomic_model import NomicModel +from .nomic_provider_account import NomicProviderAccount from .notebook import Notebook from .notebook_config import NotebookConfig from .notification_target import NotificationTarget +from .notification_target_for_alert_rule import NotificationTargetForAlertRule from .nvidia_gpu import NvidiaGpu from .nvidia_miggpu import NvidiaMiggpu from .nvidia_miggpu_profile import NvidiaMiggpuProfile from .nvidia_timeslicing_gpu import NvidiaTimeslicingGpu +from .o_auth2login_provider import OAuth2LoginProvider from .oci_repo import OciRepo +from .ollama_integrations import OllamaIntegrations +from .ollama_key_auth import OllamaKeyAuth +from .ollama_model import OllamaModel +from .ollama_provider_account import OllamaProviderAccount from .onnx_framework import OnnxFramework +from .open_ai_integrations import OpenAiIntegrations +from .open_ai_model import OpenAiModel +from .openai_api_key_auth import OpenaiApiKeyAuth +from .openai_provider_account import OpenaiProviderAccount from .operation import Operation from .paddle_framework import PaddleFramework +from .pager_duty import PagerDuty +from .pager_duty_integration import PagerDutyIntegration +from .pager_duty_integration_key_auth import PagerDutyIntegrationKeyAuth +from .pager_duty_integrations import PagerDutyIntegrations +from .pager_duty_provider_account import PagerDutyProviderAccount from .pagination import Pagination +from .palm_integrations import PalmIntegrations +from .palm_key_auth import PalmKeyAuth +from .palm_model import PalmModel +from .palm_provider_account import PalmProviderAccount from .param import Param from .param_param_type import ParamParamType from .parameters import Parameters from .parameters_stop import ParametersStop +from .per_thousand_embedding_tokens_cost_metric import PerThousandEmbeddingTokensCostMetric +from .per_thousand_tokens_cost_metric import PerThousandTokensCostMetric from .permissions import Permissions +from .perplexity_ai_key_auth import PerplexityAiKeyAuth +from .perplexity_ai_model import PerplexityAiModel +from .perplexity_ai_provider_account import PerplexityAiProviderAccount +from .perplexity_integrations import PerplexityIntegrations +from .policy_actions import PolicyActions +from .policy_entity_types import PolicyEntityTypes +from .policy_filters import PolicyFilters +from .policy_manifest import PolicyManifest +from .policy_manifest_mode import PolicyManifestMode +from .policy_manifest_operation import PolicyManifestOperation +from .policy_mutation_operation import PolicyMutationOperation +from .policy_validation_operation import PolicyValidationOperation from .port import Port from .port_app_protocol import PortAppProtocol from .port_auth import PortAuth from .port_protocol import PortProtocol from .pre_register_users_response import PreRegisterUsersResponse from .presigned_url_object import PresignedUrlObject +from .prometheus_alert_rule import PrometheusAlertRule from .prompt import Prompt from .prompt_version import PromptVersion +from .provider_accounts import ProviderAccounts +from .public_cost_metric import PublicCostMetric from .py_torch_framework import PyTorchFramework from .python_build import PythonBuild from .python_build_command import PythonBuildCommand from .python_task_config import PythonTaskConfig from .python_task_config_image import PythonTaskConfigImage from .python_task_config_mounts_item import PythonTaskConfigMountsItem +from .quay_artifacts_registry import QuayArtifactsRegistry +from .quay_basic_auth import QuayBasicAuth +from .quay_integrations import QuayIntegrations +from .quay_provider_account import QuayProviderAccount from .r_studio import RStudio +from .rate_limit_config import RateLimitConfig +from .rate_limit_rule import RateLimitRule +from .rate_limit_unit import RateLimitUnit +from .rate_limit_when import RateLimitWhen from .recommendation import Recommendation from .refusal_content_part import RefusalContentPart from .remote_source import RemoteSource @@ -337,6 +537,11 @@ from .secret_input import SecretInput from .secret_mount import SecretMount from .secret_version import SecretVersion +from .self_hosted_model import SelfHostedModel +from .self_hosted_model_auth_data import SelfHostedModelAuthData +from .self_hosted_model_integrations import SelfHostedModelIntegrations +from .self_hosted_model_model_server import SelfHostedModelModelServer +from .self_hosted_model_provider_account import SelfHostedModelProviderAccount from .service import Service from .service_autoscaling import ServiceAutoscaling from .service_autoscaling_metrics import ServiceAutoscalingMetrics @@ -348,7 +553,14 @@ from .sklearn_model_schema import SklearnModelSchema from .sklearn_serialization_format import SklearnSerializationFormat from .slack_bot import SlackBot +from .slack_bot_auth import SlackBotAuth +from .slack_bot_integration import SlackBotIntegration +from .slack_integrations import SlackIntegrations +from .slack_provider_account import SlackProviderAccount from .slack_webhook import SlackWebhook +from .slack_webhook_auth import SlackWebhookAuth +from .slack_webhook_integration import SlackWebhookIntegration +from .smtp_credentials import SmtpCredentials from .spa_cy_framework import SpaCyFramework from .spark_build import SparkBuild from .spark_config import SparkConfig @@ -389,6 +601,10 @@ from .terminate_job_response import TerminateJobResponse from .text_content_part import TextContentPart from .text_content_part_text import TextContentPartText +from .together_ai_integrations import TogetherAiIntegrations +from .together_ai_key_auth import TogetherAiKeyAuth +from .together_ai_model import TogetherAiModel +from .together_ai_provider_account import TogetherAiProviderAccount from .token_pagination import TokenPagination from .tool import Tool from .tool_call import ToolCall @@ -400,12 +616,24 @@ from .tracing_project_manifest import TracingProjectManifest from .transformers_framework import TransformersFramework from .trigger_job_run_response import TriggerJobRunResponse +from .true_foundry_apply_request_manifest import TrueFoundryApplyRequestManifest +from .true_foundry_apply_response import TrueFoundryApplyResponse +from .true_foundry_apply_response_action import TrueFoundryApplyResponseAction +from .true_foundry_apply_response_existing_manifest import TrueFoundryApplyResponseExistingManifest from .true_foundry_artifact_source import TrueFoundryArtifactSource +from .true_foundry_dbssm import TrueFoundryDbssm +from .true_foundry_delete_request_manifest import TrueFoundryDeleteRequestManifest +from .true_foundry_integrations import TrueFoundryIntegrations from .true_foundry_interactive_login import TrueFoundryInteractiveLogin from .true_foundry_managed_source import TrueFoundryManagedSource +from .true_foundry_provider_account import TrueFoundryProviderAccount +from .ttl_integrations import TtlIntegrations +from .ttl_provider_account import TtlProviderAccount +from .ttl_registry import TtlRegistry from .update_secret_input import UpdateSecretInput from .update_user_roles_response import UpdateUserRolesResponse from .upgrade_data import UpgradeData +from .usage_limits import UsageLimits from .user import User from .user_message import UserMessage from .user_message_content import UserMessageContent @@ -413,12 +641,21 @@ from .user_metadata import UserMetadata from .validation_error import ValidationError from .validation_error_loc_item import ValidationErrorLocItem +from .vertex_model import VertexModel +from .vertex_model_v2 import VertexModelV2 from .virtual_account import VirtualAccount from .virtual_account_manifest import VirtualAccountManifest from .volume import Volume from .volume_browser import VolumeBrowser from .volume_config import VolumeConfig from .volume_mount import VolumeMount +from .webhook_basic_auth import WebhookBasicAuth +from .webhook_bearer_auth import WebhookBearerAuth +from .webhook_integration import WebhookIntegration +from .webhook_integration_auth_data import WebhookIntegrationAuthData +from .webhook_integrations import WebhookIntegrations +from .webhook_provider_account import WebhookProviderAccount +from .weight_based_load_balancing_rule import WeightBasedLoadBalancingRule from .workbench_image import WorkbenchImage from .worker_config import WorkerConfig from .worker_config_input_config import WorkerConfigInputConfig @@ -442,17 +679,27 @@ "Agent", "AgentApp", "AgentManifest", + "AgentManifestWithFqn", "AgentOpenApiToolManifest", "AgentOpenApiToolManifestOpenapiSpec", - "AgentOpenApiToolWithFqn", - "AgentOpenApiToolWithFqnOpenapiSpec", + "AgentOpenApiToolManifestWithFqn", + "AgentOpenApiToolManifestWithFqnOpenapiSpec", "AgentVersion", - "AgentWithFqn", + "Ai21Integrations", + "Ai21KeyAuth", + "Ai21Model", + "Ai21ProviderAccount", "Alert", + "AlertConfig", + "AlertSeverity", "AlertStatus", "AmqpInputConfig", "AmqpMetricConfig", "AmqpOutputConfig", + "AnthropicIntegrations", + "AnthropicKeyAuth", + "AnthropicModel", + "AnthropicProviderAccount", "Application", "ApplicationDebugInfo", "ApplicationLifecycleStage", @@ -482,18 +729,69 @@ "AsyncServiceReplicas", "Autoshutdown", "AwsAccessKeyAuth", + "AwsAccessKeyBasedAuth", + "AwsAssumedRoleBasedAuth", + "AwsBedrockProviderAccount", + "AwsBedrockProviderAccountAuthData", + "AwsEcr", + "AwsEcrAuthData", + "AwsEksIntegration", + "AwsEksIntegrationAuthData", "AwsInferentia", + "AwsIntegrations", + "AwsParameterStore", + "AwsParameterStoreAuthData", + "AwsProviderAccount", + "AwsProviderAccountAuthData", + "AwsRegion", + "AwsS3", + "AwsS3AuthData", + "AwsSecretsManager", + "AwsSecretsManagerAuthData", + "AzureAiInferenceModel", + "AzureAiInferenceModelDeploymentDetails", + "AzureAiManagedDeployment", + "AzureAiServerlessDeployment", + "AzureAksIntegration", + "AzureBasicAuth", + "AzureBlobStorage", + "AzureConnectionStringAuth", + "AzureContainerRegistry", + "AzureFoundryModel", + "AzureFoundryModelV2", + "AzureFoundryProviderAccount", + "AzureIntegrations", + "AzureKeyAuth", + "AzureOAuth", + "AzureOpenAiModel", + "AzureOpenAiModelV2", + "AzureOpenAiProviderAccount", + "AzureProviderAccount", + "AzureReposIntegration", + "AzureVault", "BaseArtifactVersion", "BaseArtifactVersionManifest", "BaseAutoscaling", + "BaseOAuth2Login", + "BaseOAuth2LoginJwtSource", "BaseService", "BaseServiceImage", "BaseServiceMountsItem", "BaseWorkbenchInput", "BaseWorkbenchInputMountsItem", "BasicAuthCreds", + "BedrockKeyAuth", + "BedrockModel", + "BedrockModelAuthData", + "BedrockModelV2", + "BitbucketIntegration", + "BitbucketProviderAccount", "BlobStorageReference", "BlueGreen", + "BudgetConfig", + "BudgetLimitUnit", + "BudgetRule", + "BudgetWhen", "Build", "BuildBuildSource", "BuildBuildSpec", @@ -513,6 +811,10 @@ "ClusterManifestWorkbenchConfig", "ClusterType", "Codeserver", + "CohereIntegrations", + "CohereKeyAuth", + "CohereModel", + "CohereProviderAccount", "Collaborator", "ContainerTaskConfig", "ContainerTaskConfigImage", @@ -522,10 +824,32 @@ "CreateMultiPartUploadRequest", "CreatePersonalAccessTokenResponse", "CronMetric", + "CustomBasicAuth", + "CustomBearerAuth", + "CustomBlobStorage", + "CustomHelmRepo", + "CustomIntegrations", + "CustomJwtAuthIntegration", + "CustomMcpServerIntegration", + "CustomModel", + "CustomModelAuthData", + "CustomModelModelServer", + "CustomProviderAccount", + "CustomUsernamePasswordArtifactsRegistry", "DataDirectory", "DataDirectoryManifest", "DataDirectoryManifestSource", + "DatabricksApiKeyAuth", + "DatabricksIntegrations", + "DatabricksModel", + "DatabricksProviderAccount", + "DatabricksProviderAccountAuthData", + "DatabricksServicePrincipalAuth", "DeactivateUserResponse", + "DeepinfraIntegrations", + "DeepinfraKeyAuth", + "DeepinfraModel", + "DeepinfraProviderAccount", "DeleteApplicationResponse", "DeleteJobRunResponse", "DeletePersonalAccessTokenResponse", @@ -542,8 +866,13 @@ "DeveloperMessageContent", "DockerFileBuild", "DockerFileBuildCommand", + "DockerhubBasicAuth", + "DockerhubIntegrations", + "DockerhubProviderAccount", + "DockerhubRegistry", "DynamicVolumeConfig", "Email", + "EmailNotificationChannel", "EmptyResponse", "Endpoint", "Environment", @@ -555,6 +884,11 @@ "EventChartCategory", "EventInvolvedObject", "ExternalBlobStorageSource", + "FailureToleranceConfig", + "FallbackConfig", + "FallbackModel", + "FallbackRule", + "FallbackWhen", "FastAiFramework", "FileInfo", "FlyteLaunchPlan", @@ -571,7 +905,19 @@ "ForwardAction", "Function", "FunctionSchema", + "GatewayConfig", + "GcpApiKeyAuth", + "GcpGcr", + "GcpGcs", + "GcpGkeIntegration", + "GcpGsm", + "GcpIntegrations", + "GcpKeyFileAuth", + "GcpProviderAccount", + "GcpProviderAccountAuthData", + "GcpRegion", "GcpTpu", + "GeminiModelV2", "GetAgentResponse", "GetAgentVersionResponse", "GetAlertsResponse", @@ -608,9 +954,26 @@ "GitHelmRepo", "GitRepositoryExistsResponse", "GitSource", + "GithubIntegration", + "GithubProviderAccount", + "GitlabIntegration", + "GitlabProviderAccount", "GluonFramework", + "GoogleGeminiProviderAccount", + "GoogleModel", + "GoogleVertexProviderAccount", "Graph", "GraphChartType", + "GroqIntegrations", + "GroqKeyAuth", + "GroqModel", + "GroqProviderAccount", + "GuardrailConfig", + "GuardrailConfigAction", + "GuardrailsConfig", + "GuardrailsOptions", + "GuardrailsRule", + "GuardrailsWhen", "H2OFramework", "HeaderMatch", "HealthProbe", @@ -630,6 +993,8 @@ "ImageUrl", "ImageUrlUrl", "InferMethodName", + "InfraProviderAccount", + "InputOutputBasedCostMetricValue", "Intercept", "InterceptRulesItem", "InterceptRulesItemAction", @@ -639,6 +1004,10 @@ "InternalModelVersion", "InviteUserResponse", "IsClusterConnectedResponse", + "JFrogIntegrations", + "JfrogArtifactsRegistry", + "JfrogBasicAuth", + "JfrogProviderAccount", "Job", "JobAlert", "JobImage", @@ -658,6 +1027,8 @@ "KafkaSaslAuth", "KerasFramework", "Kustomize", + "LatencyBasedLoadBalanceTarget", + "LatencyBasedLoadBalancingRule", "LibraryName", "LightGbmFramework", "ListAgentVersionsResponse", @@ -689,6 +1060,10 @@ "ListVirtualAccountResponse", "ListWorkspacesResponse", "LiteralMap", + "LoadBalanceTarget", + "LoadBalancingConfig", + "LoadBalancingRule", + "LoadBalancingWhen", "LocalArtifactSource", "LocalModelSource", "LocalSource", @@ -697,17 +1072,31 @@ "LogsSearchOperatorType", "LogsSortingDirection", "Manual", + "McpServerAuth", + "McpServerHeaderAuth", + "McpServerIntegration", + "McpServerIntegrations", + "McpServerOAuth2", + "McpServerProviderAccount", "Method", "Metric", "MimeType", "MirrorAction", + "MistralAiIntegrations", + "MistralAiKeyAuth", + "MistralAiModel", + "MistralAiProviderAccount", "MlRepo", "MlRepoManifest", "Model", + "ModelConfig", "ModelConfiguration", + "ModelCostMetric", "ModelManifest", "ModelManifestFramework", "ModelManifestSource", + "ModelProviderAccount", + "ModelType", "ModelVersion", "ModelVersionEnvironment", "MultiPartUpload", @@ -721,38 +1110,86 @@ "NodeSelectorCapacityType", "Nodepool", "NodepoolSelector", + "NomicIntegrations", + "NomicKeyAuth", + "NomicModel", + "NomicProviderAccount", "Notebook", "NotebookConfig", "NotificationTarget", + "NotificationTargetForAlertRule", "NvidiaGpu", "NvidiaMiggpu", "NvidiaMiggpuProfile", "NvidiaTimeslicingGpu", + "OAuth2LoginProvider", "OciRepo", + "OllamaIntegrations", + "OllamaKeyAuth", + "OllamaModel", + "OllamaProviderAccount", "OnnxFramework", + "OpenAiIntegrations", + "OpenAiModel", + "OpenaiApiKeyAuth", + "OpenaiProviderAccount", "Operation", "PaddleFramework", + "PagerDuty", + "PagerDutyIntegration", + "PagerDutyIntegrationKeyAuth", + "PagerDutyIntegrations", + "PagerDutyProviderAccount", "Pagination", + "PalmIntegrations", + "PalmKeyAuth", + "PalmModel", + "PalmProviderAccount", "Param", "ParamParamType", "Parameters", "ParametersStop", + "PerThousandEmbeddingTokensCostMetric", + "PerThousandTokensCostMetric", "Permissions", + "PerplexityAiKeyAuth", + "PerplexityAiModel", + "PerplexityAiProviderAccount", + "PerplexityIntegrations", + "PolicyActions", + "PolicyEntityTypes", + "PolicyFilters", + "PolicyManifest", + "PolicyManifestMode", + "PolicyManifestOperation", + "PolicyMutationOperation", + "PolicyValidationOperation", "Port", "PortAppProtocol", "PortAuth", "PortProtocol", "PreRegisterUsersResponse", "PresignedUrlObject", + "PrometheusAlertRule", "Prompt", "PromptVersion", + "ProviderAccounts", + "PublicCostMetric", "PyTorchFramework", "PythonBuild", "PythonBuildCommand", "PythonTaskConfig", "PythonTaskConfigImage", "PythonTaskConfigMountsItem", + "QuayArtifactsRegistry", + "QuayBasicAuth", + "QuayIntegrations", + "QuayProviderAccount", "RStudio", + "RateLimitConfig", + "RateLimitRule", + "RateLimitUnit", + "RateLimitWhen", "Recommendation", "RefusalContentPart", "RemoteSource", @@ -769,6 +1206,11 @@ "SecretInput", "SecretMount", "SecretVersion", + "SelfHostedModel", + "SelfHostedModelAuthData", + "SelfHostedModelIntegrations", + "SelfHostedModelModelServer", + "SelfHostedModelProviderAccount", "Service", "ServiceAutoscaling", "ServiceAutoscalingMetrics", @@ -780,7 +1222,14 @@ "SklearnModelSchema", "SklearnSerializationFormat", "SlackBot", + "SlackBotAuth", + "SlackBotIntegration", + "SlackIntegrations", + "SlackProviderAccount", "SlackWebhook", + "SlackWebhookAuth", + "SlackWebhookIntegration", + "SmtpCredentials", "SpaCyFramework", "SparkBuild", "SparkConfig", @@ -821,6 +1270,10 @@ "TerminateJobResponse", "TextContentPart", "TextContentPartText", + "TogetherAiIntegrations", + "TogetherAiKeyAuth", + "TogetherAiModel", + "TogetherAiProviderAccount", "TokenPagination", "Tool", "ToolCall", @@ -832,12 +1285,24 @@ "TracingProjectManifest", "TransformersFramework", "TriggerJobRunResponse", + "TrueFoundryApplyRequestManifest", + "TrueFoundryApplyResponse", + "TrueFoundryApplyResponseAction", + "TrueFoundryApplyResponseExistingManifest", "TrueFoundryArtifactSource", + "TrueFoundryDbssm", + "TrueFoundryDeleteRequestManifest", + "TrueFoundryIntegrations", "TrueFoundryInteractiveLogin", "TrueFoundryManagedSource", + "TrueFoundryProviderAccount", + "TtlIntegrations", + "TtlProviderAccount", + "TtlRegistry", "UpdateSecretInput", "UpdateUserRolesResponse", "UpgradeData", + "UsageLimits", "User", "UserMessage", "UserMessageContent", @@ -845,12 +1310,21 @@ "UserMetadata", "ValidationError", "ValidationErrorLocItem", + "VertexModel", + "VertexModelV2", "VirtualAccount", "VirtualAccountManifest", "Volume", "VolumeBrowser", "VolumeConfig", "VolumeMount", + "WebhookBasicAuth", + "WebhookBearerAuth", + "WebhookIntegration", + "WebhookIntegrationAuthData", + "WebhookIntegrations", + "WebhookProviderAccount", + "WeightBasedLoadBalancingRule", "WorkbenchImage", "WorkerConfig", "WorkerConfigInputConfig", diff --git a/src/truefoundry_sdk/types/addon_component_name.py b/src/truefoundry_sdk/types/addon_component_name.py index 6af6eaa0..27183a01 100644 --- a/src/truefoundry_sdk/types/addon_component_name.py +++ b/src/truefoundry_sdk/types/addon_component_name.py @@ -33,6 +33,7 @@ class AddonComponentName(str, enum.Enum): TRUEFOUNDRY = "TRUEFOUNDRY" TFY_PROMETHEUS_CONFIG = "TFY_PROMETHEUS_CONFIG" SPARK_OPERATOR = "SPARK_OPERATOR" + TFY_LOGS = "TFY_LOGS" def visit( self, @@ -62,6 +63,7 @@ def visit( truefoundry: typing.Callable[[], T_Result], tfy_prometheus_config: typing.Callable[[], T_Result], spark_operator: typing.Callable[[], T_Result], + tfy_logs: typing.Callable[[], T_Result], ) -> T_Result: if self is AddonComponentName.ARGOCD: return argocd() @@ -115,3 +117,5 @@ def visit( return tfy_prometheus_config() if self is AddonComponentName.SPARK_OPERATOR: return spark_operator() + if self is AddonComponentName.TFY_LOGS: + return tfy_logs() diff --git a/src/truefoundry_sdk/types/agent_app.py b/src/truefoundry_sdk/types/agent_app.py index caaae32f..8412be60 100644 --- a/src/truefoundry_sdk/types/agent_app.py +++ b/src/truefoundry_sdk/types/agent_app.py @@ -4,18 +4,18 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel -from .agent_open_api_tool_with_fqn import AgentOpenApiToolWithFqn -from .agent_with_fqn import AgentWithFqn +from .agent_manifest_with_fqn import AgentManifestWithFqn +from .agent_open_api_tool_manifest_with_fqn import AgentOpenApiToolManifestWithFqn class AgentApp(UniversalBaseModel): type: typing.Optional[typing.Literal["agent-app"]] = None - tools: typing.List[AgentOpenApiToolWithFqn] = pydantic.Field() + tools: typing.List[AgentOpenApiToolManifestWithFqn] = pydantic.Field() """ Tools available to the Agent app """ - agents: typing.List[AgentWithFqn] = pydantic.Field() + agents: typing.List[AgentManifestWithFqn] = pydantic.Field() """ Agents available to the Agent app """ diff --git a/src/truefoundry_sdk/types/agent_with_fqn.py b/src/truefoundry_sdk/types/agent_manifest_with_fqn.py similarity index 97% rename from src/truefoundry_sdk/types/agent_with_fqn.py rename to src/truefoundry_sdk/types/agent_manifest_with_fqn.py index e4d14b66..df57b2a1 100644 --- a/src/truefoundry_sdk/types/agent_with_fqn.py +++ b/src/truefoundry_sdk/types/agent_manifest_with_fqn.py @@ -6,7 +6,7 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel -class AgentWithFqn(UniversalBaseModel): +class AgentManifestWithFqn(UniversalBaseModel): name: typing.Optional[str] = pydantic.Field(default=None) """ Name of the entity diff --git a/src/truefoundry_sdk/types/agent_open_api_tool_with_fqn.py b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_with_fqn.py similarity index 90% rename from src/truefoundry_sdk/types/agent_open_api_tool_with_fqn.py rename to src/truefoundry_sdk/types/agent_open_api_tool_manifest_with_fqn.py index f0a1aab1..11429de6 100644 --- a/src/truefoundry_sdk/types/agent_open_api_tool_with_fqn.py +++ b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_with_fqn.py @@ -4,11 +4,11 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel -from .agent_open_api_tool_with_fqn_openapi_spec import AgentOpenApiToolWithFqnOpenapiSpec +from .agent_open_api_tool_manifest_with_fqn_openapi_spec import AgentOpenApiToolManifestWithFqnOpenapiSpec from .method import Method -class AgentOpenApiToolWithFqn(UniversalBaseModel): +class AgentOpenApiToolManifestWithFqn(UniversalBaseModel): name: typing.Optional[str] = pydantic.Field(default=None) """ Name of the entity @@ -40,7 +40,7 @@ class AgentOpenApiToolWithFqn(UniversalBaseModel): Type of the agent """ - openapi_spec: AgentOpenApiToolWithFqnOpenapiSpec = pydantic.Field() + openapi_spec: AgentOpenApiToolManifestWithFqnOpenapiSpec = pydantic.Field() """ OpenAPI Spec for the tool describing the API, endpoints and parameters. [Sample OpenAPI Spec Link](https://assets.production.truefoundry.com/sample-openapi.json) """ diff --git a/src/truefoundry_sdk/types/agent_open_api_tool_with_fqn_openapi_spec.py b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_with_fqn_openapi_spec.py similarity index 50% rename from src/truefoundry_sdk/types/agent_open_api_tool_with_fqn_openapi_spec.py rename to src/truefoundry_sdk/types/agent_open_api_tool_manifest_with_fqn_openapi_spec.py index 09b58587..33942763 100644 --- a/src/truefoundry_sdk/types/agent_open_api_tool_with_fqn_openapi_spec.py +++ b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_with_fqn_openapi_spec.py @@ -4,4 +4,6 @@ from .blob_storage_reference import BlobStorageReference -AgentOpenApiToolWithFqnOpenapiSpec = typing.Union[BlobStorageReference, typing.Dict[str, typing.Optional[typing.Any]]] +AgentOpenApiToolManifestWithFqnOpenapiSpec = typing.Union[ + BlobStorageReference, typing.Dict[str, typing.Optional[typing.Any]] +] diff --git a/src/truefoundry_sdk/types/ai21integrations.py b/src/truefoundry_sdk/types/ai21integrations.py new file mode 100644 index 00000000..e62bb89c --- /dev/null +++ b/src/truefoundry_sdk/types/ai21integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .ai21model import Ai21Model + +Ai21Integrations = Ai21Model diff --git a/src/truefoundry_sdk/types/ai21key_auth.py b/src/truefoundry_sdk/types/ai21key_auth.py new file mode 100644 index 00000000..0e40b7c7 --- /dev/null +++ b/src/truefoundry_sdk/types/ai21key_auth.py @@ -0,0 +1,34 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class Ai21KeyAuth(UniversalBaseModel): + """ + +label=AI21 API Key Auth + +usage=Authentication method using AI21 API key + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +sort=100 + +uiType=Password + +usage=The API key for AI21 authentication + +message=API key must not be empty + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/ai21model.py b/src/truefoundry_sdk/types/ai21model.py new file mode 100644 index 00000000..26805085 --- /dev/null +++ b/src/truefoundry_sdk/types/ai21model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class Ai21Model(UniversalBaseModel): + """ + +label=AI21 Model + +icon=ai21 + """ + + type: typing.Literal["integration/model/ai21"] = pydantic.Field(default="integration/model/ai21") + """ + +value=integration/model/ai21 + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this AI21 model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The unique identifier for the AI21 model + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the AI21 model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/ai21provider_account.py b/src/truefoundry_sdk/types/ai21provider_account.py new file mode 100644 index 00000000..f3afe935 --- /dev/null +++ b/src/truefoundry_sdk/types/ai21provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .ai21integrations import Ai21Integrations +from .ai21key_auth import Ai21KeyAuth +from .collaborator import Collaborator + + +class Ai21ProviderAccount(UniversalBaseModel): + """ + +label=AI21 + +icon=ai21 + """ + + type: typing.Literal["provider-account/ai21"] = pydantic.Field(default="provider-account/ai21") + """ + +value=provider-account/ai21 + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the AI21 provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: Ai21KeyAuth + integrations: typing.Optional[typing.List[Ai21Integrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=400 + +usage=List of integrations that are associated with the AI21 provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=200 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/alert_config.py b/src/truefoundry_sdk/types/alert_config.py new file mode 100644 index 00000000..7bdc57ec --- /dev/null +++ b/src/truefoundry_sdk/types/alert_config.py @@ -0,0 +1,54 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .notification_target_for_alert_rule import NotificationTargetForAlertRule +from .prometheus_alert_rule import PrometheusAlertRule + + +class AlertConfig(UniversalBaseModel): + type: typing.Literal["alert-config"] = pydantic.Field(default="alert-config") + """ + +label=Type + +value=alert-config + """ + + name: str = pydantic.Field() + """ + +label=Name + +message=3 to 35 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"descriptionInline":true} + +uiType=Hidden + """ + + application_fqn: str = pydantic.Field() + """ + +label=Application FQN + +uiType=Hidden + """ + + notification_targets: typing.List[NotificationTargetForAlertRule] = pydantic.Field() + """ + +label=Notification Targets + +usage=Configure one or more notification targets where alerts will be sent. Each target specifies a notification channel (email or slack). + +uiProps={"descriptionInline":true} + +sort=1 + """ + + rules: typing.List[PrometheusAlertRule] = pydantic.Field() + """ + +label=Rules + +usage=Define one or more alert rules that specify the conditions to monitor, when to trigger alerts, and how they should be handled. + +uiProps={"descriptionInline":true} + +uiType=Structs + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/alert_severity.py b/src/truefoundry_sdk/types/alert_severity.py new file mode 100644 index 00000000..f9c14d66 --- /dev/null +++ b/src/truefoundry_sdk/types/alert_severity.py @@ -0,0 +1,17 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class AlertSeverity(str, enum.Enum): + WARNING = "warning" + CRITICAL = "critical" + + def visit(self, warning: typing.Callable[[], T_Result], critical: typing.Callable[[], T_Result]) -> T_Result: + if self is AlertSeverity.WARNING: + return warning() + if self is AlertSeverity.CRITICAL: + return critical() diff --git a/src/truefoundry_sdk/types/anthropic_integrations.py b/src/truefoundry_sdk/types/anthropic_integrations.py new file mode 100644 index 00000000..49a62e1b --- /dev/null +++ b/src/truefoundry_sdk/types/anthropic_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .anthropic_model import AnthropicModel + +AnthropicIntegrations = AnthropicModel diff --git a/src/truefoundry_sdk/types/anthropic_key_auth.py b/src/truefoundry_sdk/types/anthropic_key_auth.py new file mode 100644 index 00000000..124a5e54 --- /dev/null +++ b/src/truefoundry_sdk/types/anthropic_key_auth.py @@ -0,0 +1,34 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class AnthropicKeyAuth(UniversalBaseModel): + """ + +label=Anthropic API Key Auth + +usage=Authentication method using Anthropic API key + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +sort=100 + +uiType=Password + +usage=The API key for Anthropic authentication + +message=API key must not be empty + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/anthropic_model.py b/src/truefoundry_sdk/types/anthropic_model.py new file mode 100644 index 00000000..309649f8 --- /dev/null +++ b/src/truefoundry_sdk/types/anthropic_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class AnthropicModel(UniversalBaseModel): + """ + +label=Anthropic Model + +icon=anthropic + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Anthropic model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The unique identifier for the Anthropic model + +message=Model ID must not be empty + """ + + type: typing.Literal["integration/model/anthropic"] = pydantic.Field(default="integration/model/anthropic") + """ + +value=integration/model/anthropic + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Anthropic model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/anthropic_provider_account.py b/src/truefoundry_sdk/types/anthropic_provider_account.py new file mode 100644 index 00000000..c133cc70 --- /dev/null +++ b/src/truefoundry_sdk/types/anthropic_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .anthropic_integrations import AnthropicIntegrations +from .anthropic_key_auth import AnthropicKeyAuth +from .collaborator import Collaborator + + +class AnthropicProviderAccount(UniversalBaseModel): + """ + +label=Anthropic + +icon=anthropic + """ + + type: typing.Literal["provider-account/anthropic"] = pydantic.Field(default="provider-account/anthropic") + """ + +value=provider-account/anthropic + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Anthropic provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: AnthropicKeyAuth + integrations: typing.Optional[typing.List[AnthropicIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the Anthropic provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_access_key_based_auth.py b/src/truefoundry_sdk/types/aws_access_key_based_auth.py new file mode 100644 index 00000000..63b5099c --- /dev/null +++ b/src/truefoundry_sdk/types/aws_access_key_based_auth.py @@ -0,0 +1,41 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class AwsAccessKeyBasedAuth(UniversalBaseModel): + """ + +label=AWS Access Key Based Auth + """ + + type: typing.Literal["access-key-based"] = pydantic.Field(default="access-key-based") + """ + +value=access-key-based + """ + + access_key_id: str = pydantic.Field() + """ + +label=AWS access key ID + +usage=AWS access key ID that you want to use for authentication. + +sort=100 + +uiType=Password + """ + + secret_access_key: str = pydantic.Field() + """ + +label=AWS access key secret + +usage=AWS access key secret that you want to use for authentication. + +sort=200 + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_assumed_role_based_auth.py b/src/truefoundry_sdk/types/aws_assumed_role_based_auth.py new file mode 100644 index 00000000..f6e247d5 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_assumed_role_based_auth.py @@ -0,0 +1,32 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class AwsAssumedRoleBasedAuth(UniversalBaseModel): + """ + +label=AWS Assumed Role Based Auth + """ + + type: typing.Literal["assumed-role-based"] = pydantic.Field(default="assumed-role-based") + """ + +value=assumed-role-based + """ + + assumed_role_arn: str = pydantic.Field() + """ + +label=AWS Assumed Role ARN + +usage=ARN of the role you want to assume. + +sort=100 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_bedrock_provider_account.py b/src/truefoundry_sdk/types/aws_bedrock_provider_account.py new file mode 100644 index 00000000..b75b40df --- /dev/null +++ b/src/truefoundry_sdk/types/aws_bedrock_provider_account.py @@ -0,0 +1,63 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_bedrock_provider_account_auth_data import AwsBedrockProviderAccountAuthData +from .aws_region import AwsRegion +from .bedrock_model_v2 import BedrockModelV2 +from .collaborator import Collaborator + + +class AwsBedrockProviderAccount(UniversalBaseModel): + """ + +label=AWS Bedrock + +icon=aws + """ + + type: typing.Literal["provider-account/aws-bedrock"] = pydantic.Field(default="provider-account/aws-bedrock") + """ + +value=provider-account/aws-bedrock + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the AWS Bedrock provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + region: AwsRegion + auth_data: typing.Optional[AwsBedrockProviderAccountAuthData] = pydantic.Field(default=None) + """ + +label=AWS Account Auth Data + +sort=400 + +usage=Authentication data for the AWS account + """ + + integrations: typing.List[BedrockModelV2] = pydantic.Field() + """ + +label=Integrations + +sort=500 + +usage=List of integrations that are associated with the AWS Bedrock provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=600 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_bedrock_provider_account_auth_data.py b/src/truefoundry_sdk/types/aws_bedrock_provider_account_auth_data.py new file mode 100644 index 00000000..47136830 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_bedrock_provider_account_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_access_key_based_auth import AwsAccessKeyBasedAuth +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth + +AwsBedrockProviderAccountAuthData = typing.Union[AwsAccessKeyBasedAuth, AwsAssumedRoleBasedAuth] diff --git a/src/truefoundry_sdk/types/aws_ecr.py b/src/truefoundry_sdk/types/aws_ecr.py new file mode 100644 index 00000000..9f9d6cae --- /dev/null +++ b/src/truefoundry_sdk/types/aws_ecr.py @@ -0,0 +1,59 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_ecr_auth_data import AwsEcrAuthData + + +class AwsEcr(UniversalBaseModel): + """ + +label=AWS ECR + +icon=aws-ecr + """ + + type: typing.Literal["integration/docker-registry/aws/ecr"] = pydantic.Field( + default="integration/docker-registry/aws/ecr" + ) + """ + +value=integration/docker-registry/aws/ecr + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + registry_url: str = pydantic.Field() + """ + +label=Registry URL + +usage=The URL of the registry. + +sort=200 + """ + + auth_data: typing.Optional[AwsEcrAuthData] = pydantic.Field(default=None) + """ + +label=Auth Data + +usage=Custom authentication data for the integration. + +sort=300 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_ecr_auth_data.py b/src/truefoundry_sdk/types/aws_ecr_auth_data.py new file mode 100644 index 00000000..b3f6cba7 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_ecr_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_access_key_based_auth import AwsAccessKeyBasedAuth +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth + +AwsEcrAuthData = typing.Union[AwsAccessKeyBasedAuth, AwsAssumedRoleBasedAuth] diff --git a/src/truefoundry_sdk/types/aws_eks_integration.py b/src/truefoundry_sdk/types/aws_eks_integration.py new file mode 100644 index 00000000..43200152 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_eks_integration.py @@ -0,0 +1,59 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_eks_integration_auth_data import AwsEksIntegrationAuthData +from .aws_region import AwsRegion + + +class AwsEksIntegration(UniversalBaseModel): + """ + +label=AWS EKS + +icon=aws-eks + """ + + type: typing.Literal["integration/cluster/aws/eks"] = pydantic.Field(default="integration/cluster/aws/eks") + """ + +value=integration/cluster/aws/eks + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + region: AwsRegion + cluster_name: str = pydantic.Field() + """ + +label=Cluster Name + +usage=Name of the cluster given in the cloud account. + +sort=300 + """ + + auth_data: typing.Optional[AwsEksIntegrationAuthData] = pydantic.Field(default=None) + """ + +label=Auth Data + +usage=Custom authentication data for the integration. + +sort=400 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_eks_integration_auth_data.py b/src/truefoundry_sdk/types/aws_eks_integration_auth_data.py new file mode 100644 index 00000000..77d55efc --- /dev/null +++ b/src/truefoundry_sdk/types/aws_eks_integration_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_access_key_based_auth import AwsAccessKeyBasedAuth +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth + +AwsEksIntegrationAuthData = typing.Union[AwsAccessKeyBasedAuth, AwsAssumedRoleBasedAuth] diff --git a/src/truefoundry_sdk/types/aws_integrations.py b/src/truefoundry_sdk/types/aws_integrations.py new file mode 100644 index 00000000..a87ae83b --- /dev/null +++ b/src/truefoundry_sdk/types/aws_integrations.py @@ -0,0 +1,12 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_ecr import AwsEcr +from .aws_eks_integration import AwsEksIntegration +from .aws_parameter_store import AwsParameterStore +from .aws_s3 import AwsS3 +from .aws_secrets_manager import AwsSecretsManager +from .bedrock_model import BedrockModel + +AwsIntegrations = typing.Union[AwsEcr, AwsS3, AwsParameterStore, AwsSecretsManager, AwsEksIntegration, BedrockModel] diff --git a/src/truefoundry_sdk/types/aws_parameter_store.py b/src/truefoundry_sdk/types/aws_parameter_store.py new file mode 100644 index 00000000..bc08dc68 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_parameter_store.py @@ -0,0 +1,54 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_parameter_store_auth_data import AwsParameterStoreAuthData +from .aws_region import AwsRegion + + +class AwsParameterStore(UniversalBaseModel): + """ + +label=AWS Parameter Store + +icon=aws-ssm + """ + + type: typing.Literal["integration/secret-store/aws/parameter-store"] = pydantic.Field( + default="integration/secret-store/aws/parameter-store" + ) + """ + +value=integration/secret-store/aws/parameter-store + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=150 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + region: AwsRegion + auth_data: typing.Optional[AwsParameterStoreAuthData] = pydantic.Field(default=None) + """ + +label=Auth Data + +usage=Custom authentication data for the integration. + +sort=300 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_parameter_store_auth_data.py b/src/truefoundry_sdk/types/aws_parameter_store_auth_data.py new file mode 100644 index 00000000..cf3e84a9 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_parameter_store_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_access_key_based_auth import AwsAccessKeyBasedAuth +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth + +AwsParameterStoreAuthData = typing.Union[AwsAccessKeyBasedAuth, AwsAssumedRoleBasedAuth] diff --git a/src/truefoundry_sdk/types/aws_provider_account.py b/src/truefoundry_sdk/types/aws_provider_account.py new file mode 100644 index 00000000..6d22a684 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_provider_account.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_integrations import AwsIntegrations +from .aws_provider_account_auth_data import AwsProviderAccountAuthData + + +class AwsProviderAccount(UniversalBaseModel): + """ + +label=AWS + +icon=aws + +heroDataKey=aws_account_id + """ + + type: typing.Literal["provider-account/aws"] = pydantic.Field(default="provider-account/aws") + """ + +value=provider-account/aws + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the AWS provider account. + +sort=200 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + aws_account_id: str = pydantic.Field() + """ + +label=AWS Account ID + +usage=The AWS account ID. + +sort=300 + """ + + auth_data: typing.Optional[AwsProviderAccountAuthData] = pydantic.Field(default=None) + """ + +label=AWS Account Auth Data + +usage=Authentication data for the AWS account. + +sort=400 + """ + + integrations: typing.List[AwsIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the AWS provider account. + +sort=500 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_provider_account_auth_data.py b/src/truefoundry_sdk/types/aws_provider_account_auth_data.py new file mode 100644 index 00000000..50c40180 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_provider_account_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_access_key_based_auth import AwsAccessKeyBasedAuth +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth + +AwsProviderAccountAuthData = typing.Union[AwsAccessKeyBasedAuth, AwsAssumedRoleBasedAuth] diff --git a/src/truefoundry_sdk/types/aws_region.py b/src/truefoundry_sdk/types/aws_region.py new file mode 100644 index 00000000..8074f036 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_region.py @@ -0,0 +1,157 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class AwsRegion(str, enum.Enum): + AF_SOUTH1 = "af-south-1" + AP_EAST1 = "ap-east-1" + AP_NORTHEAST1 = "ap-northeast-1" + AP_NORTHEAST2 = "ap-northeast-2" + AP_NORTHEAST3 = "ap-northeast-3" + AP_SOUTH1 = "ap-south-1" + AP_SOUTH2 = "ap-south-2" + AP_SOUTHEAST1 = "ap-southeast-1" + AP_SOUTHEAST2 = "ap-southeast-2" + AP_SOUTHEAST3 = "ap-southeast-3" + AP_SOUTHEAST4 = "ap-southeast-4" + AP_SOUTHEAST5 = "ap-southeast-5" + AP_SOUTHEAST7 = "ap-southeast-7" + CA_CENTRAL1 = "ca-central-1" + CA_WEST1 = "ca-west-1" + CN_NORTH1 = "cn-north-1" + CN_NORTHWEST1 = "cn-northwest-1" + EU_CENTRAL1 = "eu-central-1" + EU_CENTRAL2 = "eu-central-2" + EU_NORTH1 = "eu-north-1" + EU_SOUTH1 = "eu-south-1" + EU_SOUTH2 = "eu-south-2" + EU_WEST1 = "eu-west-1" + EU_WEST2 = "eu-west-2" + EU_WEST3 = "eu-west-3" + IL_CENTRAL1 = "il-central-1" + ME_CENTRAL1 = "me-central-1" + ME_SOUTH1 = "me-south-1" + MX_CENTRAL1 = "mx-central-1" + SA_EAST1 = "sa-east-1" + US_EAST1 = "us-east-1" + US_EAST2 = "us-east-2" + US_GOV_EAST1 = "us-gov-east-1" + US_GOV_WEST1 = "us-gov-west-1" + US_WEST1 = "us-west-1" + US_WEST2 = "us-west-2" + + def visit( + self, + af_south1: typing.Callable[[], T_Result], + ap_east1: typing.Callable[[], T_Result], + ap_northeast1: typing.Callable[[], T_Result], + ap_northeast2: typing.Callable[[], T_Result], + ap_northeast3: typing.Callable[[], T_Result], + ap_south1: typing.Callable[[], T_Result], + ap_south2: typing.Callable[[], T_Result], + ap_southeast1: typing.Callable[[], T_Result], + ap_southeast2: typing.Callable[[], T_Result], + ap_southeast3: typing.Callable[[], T_Result], + ap_southeast4: typing.Callable[[], T_Result], + ap_southeast5: typing.Callable[[], T_Result], + ap_southeast7: typing.Callable[[], T_Result], + ca_central1: typing.Callable[[], T_Result], + ca_west1: typing.Callable[[], T_Result], + cn_north1: typing.Callable[[], T_Result], + cn_northwest1: typing.Callable[[], T_Result], + eu_central1: typing.Callable[[], T_Result], + eu_central2: typing.Callable[[], T_Result], + eu_north1: typing.Callable[[], T_Result], + eu_south1: typing.Callable[[], T_Result], + eu_south2: typing.Callable[[], T_Result], + eu_west1: typing.Callable[[], T_Result], + eu_west2: typing.Callable[[], T_Result], + eu_west3: typing.Callable[[], T_Result], + il_central1: typing.Callable[[], T_Result], + me_central1: typing.Callable[[], T_Result], + me_south1: typing.Callable[[], T_Result], + mx_central1: typing.Callable[[], T_Result], + sa_east1: typing.Callable[[], T_Result], + us_east1: typing.Callable[[], T_Result], + us_east2: typing.Callable[[], T_Result], + us_gov_east1: typing.Callable[[], T_Result], + us_gov_west1: typing.Callable[[], T_Result], + us_west1: typing.Callable[[], T_Result], + us_west2: typing.Callable[[], T_Result], + ) -> T_Result: + if self is AwsRegion.AF_SOUTH1: + return af_south1() + if self is AwsRegion.AP_EAST1: + return ap_east1() + if self is AwsRegion.AP_NORTHEAST1: + return ap_northeast1() + if self is AwsRegion.AP_NORTHEAST2: + return ap_northeast2() + if self is AwsRegion.AP_NORTHEAST3: + return ap_northeast3() + if self is AwsRegion.AP_SOUTH1: + return ap_south1() + if self is AwsRegion.AP_SOUTH2: + return ap_south2() + if self is AwsRegion.AP_SOUTHEAST1: + return ap_southeast1() + if self is AwsRegion.AP_SOUTHEAST2: + return ap_southeast2() + if self is AwsRegion.AP_SOUTHEAST3: + return ap_southeast3() + if self is AwsRegion.AP_SOUTHEAST4: + return ap_southeast4() + if self is AwsRegion.AP_SOUTHEAST5: + return ap_southeast5() + if self is AwsRegion.AP_SOUTHEAST7: + return ap_southeast7() + if self is AwsRegion.CA_CENTRAL1: + return ca_central1() + if self is AwsRegion.CA_WEST1: + return ca_west1() + if self is AwsRegion.CN_NORTH1: + return cn_north1() + if self is AwsRegion.CN_NORTHWEST1: + return cn_northwest1() + if self is AwsRegion.EU_CENTRAL1: + return eu_central1() + if self is AwsRegion.EU_CENTRAL2: + return eu_central2() + if self is AwsRegion.EU_NORTH1: + return eu_north1() + if self is AwsRegion.EU_SOUTH1: + return eu_south1() + if self is AwsRegion.EU_SOUTH2: + return eu_south2() + if self is AwsRegion.EU_WEST1: + return eu_west1() + if self is AwsRegion.EU_WEST2: + return eu_west2() + if self is AwsRegion.EU_WEST3: + return eu_west3() + if self is AwsRegion.IL_CENTRAL1: + return il_central1() + if self is AwsRegion.ME_CENTRAL1: + return me_central1() + if self is AwsRegion.ME_SOUTH1: + return me_south1() + if self is AwsRegion.MX_CENTRAL1: + return mx_central1() + if self is AwsRegion.SA_EAST1: + return sa_east1() + if self is AwsRegion.US_EAST1: + return us_east1() + if self is AwsRegion.US_EAST2: + return us_east2() + if self is AwsRegion.US_GOV_EAST1: + return us_gov_east1() + if self is AwsRegion.US_GOV_WEST1: + return us_gov_west1() + if self is AwsRegion.US_WEST1: + return us_west1() + if self is AwsRegion.US_WEST2: + return us_west2() diff --git a/src/truefoundry_sdk/types/aws_s3.py b/src/truefoundry_sdk/types/aws_s3.py new file mode 100644 index 00000000..7395457d --- /dev/null +++ b/src/truefoundry_sdk/types/aws_s3.py @@ -0,0 +1,59 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_region import AwsRegion +from .aws_s3auth_data import AwsS3AuthData + + +class AwsS3(UniversalBaseModel): + """ + +label=AWS S3 + +icon=aws-s3 + """ + + type: typing.Literal["integration/blob-storage/aws/s3"] = pydantic.Field(default="integration/blob-storage/aws/s3") + """ + +value=integration/blob-storage/aws/s3 + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + storage_root: str = pydantic.Field() + """ + +label=Storage Root + +usage=The root path of the storage. + +sort=200 + """ + + region: AwsRegion + auth_data: typing.Optional[AwsS3AuthData] = pydantic.Field(default=None) + """ + +label=Auth Data + +usage=Custom authentication data for the integration. + +sort=400 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_s3auth_data.py b/src/truefoundry_sdk/types/aws_s3auth_data.py new file mode 100644 index 00000000..0d510fe3 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_s3auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_access_key_based_auth import AwsAccessKeyBasedAuth +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth + +AwsS3AuthData = typing.Union[AwsAccessKeyBasedAuth, AwsAssumedRoleBasedAuth] diff --git a/src/truefoundry_sdk/types/aws_secrets_manager.py b/src/truefoundry_sdk/types/aws_secrets_manager.py new file mode 100644 index 00000000..3e5872e5 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_secrets_manager.py @@ -0,0 +1,54 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_region import AwsRegion +from .aws_secrets_manager_auth_data import AwsSecretsManagerAuthData + + +class AwsSecretsManager(UniversalBaseModel): + """ + +label=AWS Secrets Manager + +icon=aws-secrets-manager + """ + + type: typing.Literal["integration/secret-store/aws/secrets-manager"] = pydantic.Field( + default="integration/secret-store/aws/secrets-manager" + ) + """ + +value=integration/secret-store/aws/secrets-manager + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=150 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + region: AwsRegion + auth_data: typing.Optional[AwsSecretsManagerAuthData] = pydantic.Field(default=None) + """ + +label=Auth Data + +usage=Custom authentication data for the integration. + +sort=300 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/aws_secrets_manager_auth_data.py b/src/truefoundry_sdk/types/aws_secrets_manager_auth_data.py new file mode 100644 index 00000000..1f34da30 --- /dev/null +++ b/src/truefoundry_sdk/types/aws_secrets_manager_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_access_key_based_auth import AwsAccessKeyBasedAuth +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth + +AwsSecretsManagerAuthData = typing.Union[AwsAccessKeyBasedAuth, AwsAssumedRoleBasedAuth] diff --git a/src/truefoundry_sdk/types/azure_ai_inference_model.py b/src/truefoundry_sdk/types/azure_ai_inference_model.py new file mode 100644 index 00000000..539e1c1c --- /dev/null +++ b/src/truefoundry_sdk/types/azure_ai_inference_model.py @@ -0,0 +1,66 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .azure_ai_inference_model_deployment_details import AzureAiInferenceModelDeploymentDetails +from .azure_key_auth import AzureKeyAuth +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class AzureAiInferenceModel(UniversalBaseModel): + """ + +label=Azure AI Inference Model + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=Name to identify this Azure AI model + +sort=100 + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + type: typing.Literal["integration/model/azure/ai-inference"] = pydantic.Field( + default="integration/model/azure/ai-inference" + ) + """ + +value=integration/model/azure/ai-inference + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +usage=Types of models supported by this Azure AI deployment + +sort=200 + """ + + auth_data: typing.Optional[AzureKeyAuth] = None + deployment_details: typing_extensions.Annotated[ + AzureAiInferenceModelDeploymentDetails, FieldMetadata(alias="deploymentDetails") + ] = pydantic.Field() + """ + +label=Deployment Configuration + +usage=Configuration details for the Azure AI deployment + +sort=400 + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_ai_inference_model_deployment_details.py b/src/truefoundry_sdk/types/azure_ai_inference_model_deployment_details.py new file mode 100644 index 00000000..8512aa3c --- /dev/null +++ b/src/truefoundry_sdk/types/azure_ai_inference_model_deployment_details.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .azure_ai_managed_deployment import AzureAiManagedDeployment +from .azure_ai_serverless_deployment import AzureAiServerlessDeployment + +AzureAiInferenceModelDeploymentDetails = typing.Union[AzureAiManagedDeployment, AzureAiServerlessDeployment] diff --git a/src/truefoundry_sdk/types/azure_ai_managed_deployment.py b/src/truefoundry_sdk/types/azure_ai_managed_deployment.py new file mode 100644 index 00000000..1227d44b --- /dev/null +++ b/src/truefoundry_sdk/types/azure_ai_managed_deployment.py @@ -0,0 +1,41 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata + + +class AzureAiManagedDeployment(UniversalBaseModel): + """ + +label=Azure AI Managed Deployment + """ + + type: typing.Literal["managed"] = pydantic.Field(default="managed") + """ + +value=managed + """ + + deployment_name: typing_extensions.Annotated[str, FieldMetadata(alias="deploymentName")] = pydantic.Field() + """ + +label=Azure Deployment Name + +usage=Name of the Azure AI deployment + +sort=1 + """ + + endpoint_name: typing_extensions.Annotated[str, FieldMetadata(alias="endpointName")] = pydantic.Field() + """ + +label=Azure Endpoint Name + +usage=Name of the Azure AI endpoint + +sort=2 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_ai_serverless_deployment.py b/src/truefoundry_sdk/types/azure_ai_serverless_deployment.py new file mode 100644 index 00000000..b7baaf58 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_ai_serverless_deployment.py @@ -0,0 +1,41 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata + + +class AzureAiServerlessDeployment(UniversalBaseModel): + """ + +label=Azure AI Serverless Deployment + """ + + type: typing.Literal["serverless"] = pydantic.Field(default="serverless") + """ + +value=serverless + """ + + deployment_name: typing_extensions.Annotated[str, FieldMetadata(alias="deploymentName")] = pydantic.Field() + """ + +label=Azure Deployment Name + +usage=Name of the Azure AI deployment + +sort=100 + """ + + region: str = pydantic.Field() + """ + +label=Azure Region + +usage=Region where the Azure AI deployment is located + +sort=200 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_aks_integration.py b/src/truefoundry_sdk/types/azure_aks_integration.py new file mode 100644 index 00000000..56758c58 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_aks_integration.py @@ -0,0 +1,58 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_o_auth import AzureOAuth + + +class AzureAksIntegration(UniversalBaseModel): + """ + +icon=azure-aks + +label=Azure AKS + """ + + type: typing.Literal["integration/cluster/azure/aks"] = pydantic.Field(default="integration/cluster/azure/aks") + """ + +value=integration/cluster/azure/aks + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + resource_group: str = pydantic.Field() + """ + +label=Resource Group + +usage=The resource group of the cluster in the cloud account. + +sort=200 + """ + + cluster_name: str = pydantic.Field() + """ + +label=Cluster Name + +usage=Name of the cluster given in the cloud account. + +sort=300 + """ + + auth_data: typing.Optional[AzureOAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_basic_auth.py b/src/truefoundry_sdk/types/azure_basic_auth.py new file mode 100644 index 00000000..5d8e5bf8 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_basic_auth.py @@ -0,0 +1,40 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class AzureBasicAuth(UniversalBaseModel): + """ + +label=Azure Basic Auth + """ + + type: typing.Literal["basic-auth"] = pydantic.Field(default="basic-auth") + """ + +value=basic-auth + """ + + username: str = pydantic.Field() + """ + +label=Username + +usage=The username for the Azure managed identity. + +sort=100 + """ + + password: str = pydantic.Field() + """ + +sort=200 + +label=Password + +usage=The password for the Azure managed identity. + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_blob_storage.py b/src/truefoundry_sdk/types/azure_blob_storage.py new file mode 100644 index 00000000..55f54675 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_blob_storage.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_connection_string_auth import AzureConnectionStringAuth + + +class AzureBlobStorage(UniversalBaseModel): + """ + +icon=azure-blob + +label=Azure ABS + """ + + type: typing.Literal["integration/blob-storage/azure/blob"] = pydantic.Field( + default="integration/blob-storage/azure/blob" + ) + """ + +value=integration/blob-storage/azure/blob + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + storage_root: str = pydantic.Field() + """ + +label=Storage Root + +usage=The root path of the storage. + +sort=200 + """ + + auth_data: typing.Optional[AzureConnectionStringAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_connection_string_auth.py b/src/truefoundry_sdk/types/azure_connection_string_auth.py new file mode 100644 index 00000000..b3630182 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_connection_string_auth.py @@ -0,0 +1,32 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class AzureConnectionStringAuth(UniversalBaseModel): + """ + +label=Azure Connection String + """ + + type: typing.Literal["connection-string"] = pydantic.Field(default="connection-string") + """ + +value=connection-string + """ + + connection_string: str = pydantic.Field() + """ + +label=Connection String + +usage=The connection string for the Azure managed identity. + +sort=100 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_container_registry.py b/src/truefoundry_sdk/types/azure_container_registry.py new file mode 100644 index 00000000..689a2441 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_container_registry.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_basic_auth import AzureBasicAuth + + +class AzureContainerRegistry(UniversalBaseModel): + """ + +icon=azure-acr + +label=Azure ACR + """ + + type: typing.Literal["integration/docker-registry/azure/acr"] = pydantic.Field( + default="integration/docker-registry/azure/acr" + ) + """ + +value=integration/docker-registry/azure/acr + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + registry_url: str = pydantic.Field() + """ + +label=Registry URL + +usage=The URL of the registry. + +sort=200 + """ + + auth_data: typing.Optional[AzureBasicAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_foundry_model.py b/src/truefoundry_sdk/types/azure_foundry_model.py new file mode 100644 index 00000000..3fd7cdb4 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_foundry_model.py @@ -0,0 +1,68 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_key_auth import AzureKeyAuth +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class AzureFoundryModel(UniversalBaseModel): + """ + +label=Azure AI Foundry Model + """ + + type: typing.Literal["integration/model/azure/ai-foundry"] = pydantic.Field( + default="integration/model/azure/ai-foundry" + ) + """ + +value=integration/model/azure/ai-foundry + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=Name to identify this Azure AI Foundry model + +sort=1 + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +sort=2 + +label=Model Name + +usage=This is the Model Name on Azure + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +usage=Types of models supported by this Azure AI Foundry deployment + +sort=200 + """ + + azure_endpoint: str = pydantic.Field() + """ + +sort=300 + +label=Azure Endpoint + +usage=Azure Foundry endpoint + """ + + auth_data: typing.Optional[AzureKeyAuth] = None + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_foundry_model_v2.py b/src/truefoundry_sdk/types/azure_foundry_model_v2.py new file mode 100644 index 00000000..a79529c0 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_foundry_model_v2.py @@ -0,0 +1,76 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_key_auth import AzureKeyAuth +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class AzureFoundryModelV2(UniversalBaseModel): + """ + +label=Azure Foundry Model + +icon=azure + """ + + type: typing.Literal["integration/model/azure-foundry"] = pydantic.Field(default="integration/model/azure-foundry") + """ + +value=integration/model/azure-foundry + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Azure Foundry model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + auth_data: AzureKeyAuth + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Types of models supported by this Azure AI Foundry deployment + """ + + model_id: str = pydantic.Field() + """ + +label=Azure Deployment Name + +sort=3 + +usage=The name of the Azure Foundry deployment + """ + + azure_endpoint: str = pydantic.Field() + """ + +label=Azure Endpoint + +sort=4 + +usage=The Azure AI Foundry endpoint URL + +message=Endpoint URL must not be empty + """ + + api_version: str = pydantic.Field() + """ + +label=API Version + +sort=5 + +usage=The API version for the Azure Foundry model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=7 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_foundry_provider_account.py b/src/truefoundry_sdk/types/azure_foundry_provider_account.py new file mode 100644 index 00000000..d8c91b38 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_foundry_provider_account.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_foundry_model_v2 import AzureFoundryModelV2 +from .collaborator import Collaborator + + +class AzureFoundryProviderAccount(UniversalBaseModel): + """ + +label=Azure Foundry Provider Account + +icon=azure + """ + + type: typing.Literal["provider-account/azure-foundry"] = pydantic.Field(default="provider-account/azure-foundry") + """ + +value=provider-account/azure-foundry + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Azure Foundry provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + integrations: typing.List[AzureFoundryModelV2] = pydantic.Field() + """ + +label=Integrations + +sort=200 + +usage=List of integrations that are associated with the Azure Foundry provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=300 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_integrations.py b/src/truefoundry_sdk/types/azure_integrations.py new file mode 100644 index 00000000..4c7e3c96 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_integrations.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .azure_ai_inference_model import AzureAiInferenceModel +from .azure_aks_integration import AzureAksIntegration +from .azure_blob_storage import AzureBlobStorage +from .azure_container_registry import AzureContainerRegistry +from .azure_foundry_model import AzureFoundryModel +from .azure_open_ai_model import AzureOpenAiModel +from .azure_repos_integration import AzureReposIntegration +from .azure_vault import AzureVault + +AzureIntegrations = typing.Union[ + AzureAksIntegration, + AzureContainerRegistry, + AzureBlobStorage, + AzureOpenAiModel, + AzureVault, + AzureReposIntegration, + AzureAiInferenceModel, + AzureFoundryModel, +] diff --git a/src/truefoundry_sdk/types/azure_key_auth.py b/src/truefoundry_sdk/types/azure_key_auth.py new file mode 100644 index 00000000..f752ef54 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class AzureKeyAuth(UniversalBaseModel): + """ + +label=Azure API Key Auth + +icon=azure + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=The API key for Azure AI Foundry authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_o_auth.py b/src/truefoundry_sdk/types/azure_o_auth.py new file mode 100644 index 00000000..8bfbe089 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_o_auth.py @@ -0,0 +1,54 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class AzureOAuth(UniversalBaseModel): + """ + +label=Azure OAuth + """ + + type: typing.Literal["oauth"] = pydantic.Field(default="oauth") + """ + +value=oauth + """ + + tenant_id: str = pydantic.Field() + """ + +label=Azure Tenant ID + +usage=The Azure Active Directory tenant (directory) ID. + +sort=100 + """ + + client_id: str = pydantic.Field() + """ + +label=Azure Client ID + +usage=The client (application) ID of an App Registration in the tenant. + +sort=200 + """ + + client_secret: str = pydantic.Field() + """ + +label=Azure Client secret + +sort=300 + +usage=A client secret that was generated for the App Registration. + +uiType=Password + """ + + subscription_id: str = pydantic.Field() + """ + +label=Azure Subscription ID + +usage=The ID of the target subscription. The value must be an UUID. + +sort=400 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_open_ai_model.py b/src/truefoundry_sdk/types/azure_open_ai_model.py new file mode 100644 index 00000000..d722b425 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_open_ai_model.py @@ -0,0 +1,70 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_key_auth import AzureKeyAuth +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class AzureOpenAiModel(UniversalBaseModel): + """ + +label=Azure OpenAI Model + +icon=azure + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +sort=2 + +label=Model ID + +usage=This is the name of the deployment + """ + + type: typing.Literal["integration/model/azure"] = pydantic.Field(default="integration/model/azure") + """ + +value=integration/model/azure + """ + + auth_data: AzureKeyAuth + azure_endpoint: str = pydantic.Field() + """ + +sort=100 + +label=Azure Endpoint + +usage=Azure OpenAI Service endpoint + """ + + api_version: str = pydantic.Field() + """ + +sort=100 + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +usage=Specify the type of the model + +sort=4 + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_open_ai_model_v2.py b/src/truefoundry_sdk/types/azure_open_ai_model_v2.py new file mode 100644 index 00000000..be11e684 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_open_ai_model_v2.py @@ -0,0 +1,68 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class AzureOpenAiModelV2(UniversalBaseModel): + """ + +label=Azure OpenAI Model + +icon=azure + """ + + type: typing.Literal["integration/model/azure-openai"] = pydantic.Field(default="integration/model/azure-openai") + """ + +value=integration/model/azure-openai + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Azure OpenAI model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Azure OpenAI model deployment (e.g. gpt-35-turbo, gpt-4). Used for cost tracking and management + +message=Model ID must not be empty + """ + + api_version: str = pydantic.Field() + """ + +label=API Version + +sort=3 + +usage=The Azure OpenAI API version to use + +message=API version must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=4 + +usage=Specify the type of the Azure OpenAI model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=6 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_open_ai_provider_account.py b/src/truefoundry_sdk/types/azure_open_ai_provider_account.py new file mode 100644 index 00000000..54973978 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_open_ai_provider_account.py @@ -0,0 +1,63 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_key_auth import AzureKeyAuth +from .azure_open_ai_model_v2 import AzureOpenAiModelV2 +from .collaborator import Collaborator + + +class AzureOpenAiProviderAccount(UniversalBaseModel): + """ + +label=Azure OpenAI Provider Account + +icon=azure + """ + + type: typing.Literal["provider-account/azure-openai"] = pydantic.Field(default="provider-account/azure-openai") + """ + +value=provider-account/azure-openai + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Azure OpenAI provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + azure_endpoint: str = pydantic.Field() + """ + +label=Azure Endpoint + +sort=300 + +usage=The Azure OpenAI Service endpoint URL + +message=Endpoint URL must not be empty + """ + + auth_data: AzureKeyAuth + integrations: typing.List[AzureOpenAiModelV2] = pydantic.Field() + """ + +label=Integrations + +sort=500 + +usage=List of integrations that are associated with the Azure OpenAI provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=200 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_provider_account.py b/src/truefoundry_sdk/types/azure_provider_account.py new file mode 100644 index 00000000..7873fa99 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_provider_account.py @@ -0,0 +1,52 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_integrations import AzureIntegrations + + +class AzureProviderAccount(UniversalBaseModel): + """ + +label=Azure + +icon=azure + +heroDataKey=subscription_id + """ + + type: typing.Literal["provider-account/azure"] = pydantic.Field(default="provider-account/azure") + """ + +value=provider-account/azure + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the Azure provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + subscription_id: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Azure Subscription Id + +usage=The ID of the target subscription. The value must be an UUID. + +sort=200 + """ + + integrations: typing.List[AzureIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the Azure provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_repos_integration.py b/src/truefoundry_sdk/types/azure_repos_integration.py new file mode 100644 index 00000000..66c50c11 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_repos_integration.py @@ -0,0 +1,45 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class AzureReposIntegration(UniversalBaseModel): + """ + +label=Azure Repo + +icon=azure + """ + + type: typing.Literal["integration/vcs/azure"] = pydantic.Field(default="integration/vcs/azure") + """ + +value=integration/vcs/azure + """ + + name: str = pydantic.Field() + """ + +sort=100 + """ + + account_name: str = pydantic.Field() + """ + +label=Account Name + +sort=200 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/azure_vault.py b/src/truefoundry_sdk/types/azure_vault.py new file mode 100644 index 00000000..53061fd5 --- /dev/null +++ b/src/truefoundry_sdk/types/azure_vault.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .azure_o_auth import AzureOAuth + + +class AzureVault(UniversalBaseModel): + """ + +label=Azure Vault + +icon=azure-vault + """ + + type: typing.Literal["integration/secret-store/azure/vault"] = pydantic.Field( + default="integration/secret-store/azure/vault" + ) + """ + +value=integration/secret-store/azure/vault + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=150 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + auth_data: typing.Optional[AzureOAuth] = None + key_vault_name: str = pydantic.Field() + """ + +label=Azure Key vault Name + +usage=Name of key vault name. + +sort=300 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=400 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/base_o_auth2login.py b/src/truefoundry_sdk/types/base_o_auth2login.py new file mode 100644 index 00000000..5639db32 --- /dev/null +++ b/src/truefoundry_sdk/types/base_o_auth2login.py @@ -0,0 +1,64 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .base_o_auth2login_jwt_source import BaseOAuth2LoginJwtSource + + +class BaseOAuth2Login(UniversalBaseModel): + """ + +label=OAuth2 Client Configuration + +usage=OAuth2 client configuration to get the JWT. + """ + + client_id: str = pydantic.Field() + """ + +label=Client ID + +usage=client ID for OAuth2. + +sort=200 + """ + + client_secret: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Client Secret + +usage=Client secret or the TrueFoundry secret containing the client secret for OAuth2. + +sort=300 + """ + + authorization_url: str = pydantic.Field() + """ + +label=Authorization URL + +usage=URL for the authorization request + +sort=400 + """ + + token_url: str = pydantic.Field() + """ + +label=Token URL + +usage=The endpoint to exchange auth code for tokens. + +sort=500 + """ + + scopes: typing.List[str] = pydantic.Field() + """ + +label=Scopes + +usage=List of scopes to request from the OAuth2 provider. + +sort=600 + """ + + jwt_source: BaseOAuth2LoginJwtSource = pydantic.Field() + """ + +label=JWT Source + +usage=Source of the JWT token to be used for verification. + +sort=700 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/base_o_auth2login_jwt_source.py b/src/truefoundry_sdk/types/base_o_auth2login_jwt_source.py new file mode 100644 index 00000000..eba51688 --- /dev/null +++ b/src/truefoundry_sdk/types/base_o_auth2login_jwt_source.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class BaseOAuth2LoginJwtSource(str, enum.Enum): + """ + +label=JWT Source + +usage=Source of the JWT token to be used for verification. + +sort=700 + """ + + ACCESS_TOKEN = "access_token" + ID_TOKEN = "id_token" + + def visit(self, access_token: typing.Callable[[], T_Result], id_token: typing.Callable[[], T_Result]) -> T_Result: + if self is BaseOAuth2LoginJwtSource.ACCESS_TOKEN: + return access_token() + if self is BaseOAuth2LoginJwtSource.ID_TOKEN: + return id_token() diff --git a/src/truefoundry_sdk/types/bedrock_key_auth.py b/src/truefoundry_sdk/types/bedrock_key_auth.py new file mode 100644 index 00000000..811aa724 --- /dev/null +++ b/src/truefoundry_sdk/types/bedrock_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class BedrockKeyAuth(UniversalBaseModel): + """ + +label=Bedrock API Key Auth + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + access_key: str = pydantic.Field() + """ + +sort=100 + """ + + access_key_secret: str = pydantic.Field() + """ + +sort=100 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/bedrock_model.py b/src/truefoundry_sdk/types/bedrock_model.py new file mode 100644 index 00000000..ca55bfeb --- /dev/null +++ b/src/truefoundry_sdk/types/bedrock_model.py @@ -0,0 +1,62 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_region import AwsRegion +from .bedrock_model_auth_data import BedrockModelAuthData +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class BedrockModel(UniversalBaseModel): + """ + +label=Bedrock Model + +icon=aws-bedrock + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +sort=2 + """ + + type: typing.Literal["integration/model/aws"] = pydantic.Field(default="integration/model/aws") + """ + +value=integration/model/aws + """ + + auth_data: typing.Optional[BedrockModelAuthData] = pydantic.Field(default=None) + """ + +label=Auth Data + """ + + region: AwsRegion + model_types: typing.List[ModelType] = pydantic.Field() + """ + +usage=Specify the type of the model + +sort=4 + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/bedrock_model_auth_data.py b/src/truefoundry_sdk/types/bedrock_model_auth_data.py new file mode 100644 index 00000000..88b5770e --- /dev/null +++ b/src/truefoundry_sdk/types/bedrock_model_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_assumed_role_based_auth import AwsAssumedRoleBasedAuth +from .bedrock_key_auth import BedrockKeyAuth + +BedrockModelAuthData = typing.Union[BedrockKeyAuth, AwsAssumedRoleBasedAuth] diff --git a/src/truefoundry_sdk/types/bedrock_model_v2.py b/src/truefoundry_sdk/types/bedrock_model_v2.py new file mode 100644 index 00000000..aab3f3fd --- /dev/null +++ b/src/truefoundry_sdk/types/bedrock_model_v2.py @@ -0,0 +1,62 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .aws_region import AwsRegion +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class BedrockModelV2(UniversalBaseModel): + """ + +label=Bedrock Model + +icon=aws-bedrock + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Bedrock model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The unique identifier for the Bedrock model + +message=Model ID must not be empty + """ + + type: typing.Literal["integration/model/bedrock"] = pydantic.Field(default="integration/model/bedrock") + """ + +value=integration/model/bedrock + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Bedrock model + """ + + region: typing.Optional[AwsRegion] = None + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=6 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/bitbucket_integration.py b/src/truefoundry_sdk/types/bitbucket_integration.py new file mode 100644 index 00000000..185eb82e --- /dev/null +++ b/src/truefoundry_sdk/types/bitbucket_integration.py @@ -0,0 +1,45 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class BitbucketIntegration(UniversalBaseModel): + """ + +label=Bitbucket + +icon=bitbucket + """ + + type: typing.Literal["integration/vcs/bitbucket"] = pydantic.Field(default="integration/vcs/bitbucket") + """ + +value=integration/vcs/bitbucket + """ + + name: str = pydantic.Field() + """ + +sort=100 + """ + + account_name: str = pydantic.Field() + """ + +label=Account Name + +sort=200 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/bitbucket_provider_account.py b/src/truefoundry_sdk/types/bitbucket_provider_account.py new file mode 100644 index 00000000..ae4a9c80 --- /dev/null +++ b/src/truefoundry_sdk/types/bitbucket_provider_account.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .bitbucket_integration import BitbucketIntegration + + +class BitbucketProviderAccount(UniversalBaseModel): + """ + +label=Bitbucket + +icon=bitbucket + """ + + type: typing.Literal["provider-account/bitbucket"] = pydantic.Field(default="provider-account/bitbucket") + """ + +value=provider-account/bitbucket + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + """ + + integrations: typing.List[BitbucketIntegration] = pydantic.Field() + """ + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/budget_config.py b/src/truefoundry_sdk/types/budget_config.py new file mode 100644 index 00000000..206c9ee8 --- /dev/null +++ b/src/truefoundry_sdk/types/budget_config.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .budget_rule import BudgetRule + + +class BudgetConfig(UniversalBaseModel): + name: str + type: typing.Literal["gateway-budget-config"] = "gateway-budget-config" + rules: typing.List[BudgetRule] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/budget_limit_unit.py b/src/truefoundry_sdk/types/budget_limit_unit.py new file mode 100644 index 00000000..fc3eab6d --- /dev/null +++ b/src/truefoundry_sdk/types/budget_limit_unit.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class BudgetLimitUnit(str, enum.Enum): + COST_PER_DAY = "cost_per_day" + COST_PER_MONTH = "cost_per_month" + TOKENS_PER_DAY = "tokens_per_day" + TOKENS_PER_MONTH = "tokens_per_month" + + def visit( + self, + cost_per_day: typing.Callable[[], T_Result], + cost_per_month: typing.Callable[[], T_Result], + tokens_per_day: typing.Callable[[], T_Result], + tokens_per_month: typing.Callable[[], T_Result], + ) -> T_Result: + if self is BudgetLimitUnit.COST_PER_DAY: + return cost_per_day() + if self is BudgetLimitUnit.COST_PER_MONTH: + return cost_per_month() + if self is BudgetLimitUnit.TOKENS_PER_DAY: + return tokens_per_day() + if self is BudgetLimitUnit.TOKENS_PER_MONTH: + return tokens_per_month() diff --git a/src/truefoundry_sdk/types/budget_rule.py b/src/truefoundry_sdk/types/budget_rule.py new file mode 100644 index 00000000..1d53239d --- /dev/null +++ b/src/truefoundry_sdk/types/budget_rule.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .budget_limit_unit import BudgetLimitUnit +from .budget_when import BudgetWhen + + +class BudgetRule(UniversalBaseModel): + id: str + when: BudgetWhen + limit_to: float + unit: BudgetLimitUnit + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/budget_when.py b/src/truefoundry_sdk/types/budget_when.py new file mode 100644 index 00000000..45ad05fd --- /dev/null +++ b/src/truefoundry_sdk/types/budget_when.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class BudgetWhen(UniversalBaseModel): + subjects: typing.Optional[typing.List[str]] = None + models: typing.Optional[typing.List[str]] = None + metadata: typing.Optional[typing.Dict[str, str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/cohere_integrations.py b/src/truefoundry_sdk/types/cohere_integrations.py new file mode 100644 index 00000000..56bc838d --- /dev/null +++ b/src/truefoundry_sdk/types/cohere_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .cohere_model import CohereModel + +CohereIntegrations = CohereModel diff --git a/src/truefoundry_sdk/types/cohere_key_auth.py b/src/truefoundry_sdk/types/cohere_key_auth.py new file mode 100644 index 00000000..630b399f --- /dev/null +++ b/src/truefoundry_sdk/types/cohere_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class CohereKeyAuth(UniversalBaseModel): + """ + +label=Cohere API Key Auth + +icon=cohere + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=The API key for Cohere authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/cohere_model.py b/src/truefoundry_sdk/types/cohere_model.py new file mode 100644 index 00000000..758174c9 --- /dev/null +++ b/src/truefoundry_sdk/types/cohere_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class CohereModel(UniversalBaseModel): + """ + +label=Cohere Model + +icon=cohere + """ + + type: typing.Literal["integration/model/cohere"] = pydantic.Field(default="integration/model/cohere") + """ + +value=integration/model/cohere + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Cohere model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Cohere model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Cohere model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/cohere_provider_account.py b/src/truefoundry_sdk/types/cohere_provider_account.py new file mode 100644 index 00000000..2a4cec9a --- /dev/null +++ b/src/truefoundry_sdk/types/cohere_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .cohere_integrations import CohereIntegrations +from .cohere_key_auth import CohereKeyAuth +from .collaborator import Collaborator + + +class CohereProviderAccount(UniversalBaseModel): + """ + +label=Cohere Provider Account + +icon=cohere + """ + + type: typing.Literal["provider-account/cohere"] = pydantic.Field(default="provider-account/cohere") + """ + +value=provider-account/cohere + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Cohere provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: CohereKeyAuth + integrations: typing.Optional[typing.List[CohereIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the Cohere provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_basic_auth.py b/src/truefoundry_sdk/types/custom_basic_auth.py new file mode 100644 index 00000000..6400298b --- /dev/null +++ b/src/truefoundry_sdk/types/custom_basic_auth.py @@ -0,0 +1,39 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class CustomBasicAuth(UniversalBaseModel): + """ + +label=Custom Basic Auth + """ + + type: typing.Literal["basic-auth"] = pydantic.Field(default="basic-auth") + """ + +value=basic-auth + """ + + username: str = pydantic.Field() + """ + +label=Username + +usage=The username for the basic authentication. + +sort=100 + """ + + password: str = pydantic.Field() + """ + +label=Password + +usage=The password for the basic authentication. + +sort=200 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_bearer_auth.py b/src/truefoundry_sdk/types/custom_bearer_auth.py new file mode 100644 index 00000000..aaa15a91 --- /dev/null +++ b/src/truefoundry_sdk/types/custom_bearer_auth.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class CustomBearerAuth(UniversalBaseModel): + type: typing.Literal["bearer-auth"] = pydantic.Field(default="bearer-auth") + """ + +value=bearer-auth + """ + + bearer_token: str = pydantic.Field() + """ + +label=Bearer Token + +usage=The bearer token for the custom bearer authentication. + +sort=100 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_blob_storage.py b/src/truefoundry_sdk/types/custom_blob_storage.py new file mode 100644 index 00000000..30f793d9 --- /dev/null +++ b/src/truefoundry_sdk/types/custom_blob_storage.py @@ -0,0 +1,58 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .custom_basic_auth import CustomBasicAuth + + +class CustomBlobStorage(UniversalBaseModel): + """ + +label=Custom Blob Storage + +icon=puzzle-piece + """ + + type: typing.Literal["integration/blob-storage/custom"] = pydantic.Field(default="integration/blob-storage/custom") + """ + +value=integration/blob-storage/custom + """ + + name: str = pydantic.Field() + """ + +label=Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + endpoint: str = pydantic.Field() + """ + +label=Endpoint + +usage=The endpoint of the storage provider. + +sort=200 + """ + + storage_root: str = pydantic.Field() + """ + +label=Storage Root + +usage=The root path of the storage. + +sort=200 + """ + + auth_data: CustomBasicAuth + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=400 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_helm_repo.py b/src/truefoundry_sdk/types/custom_helm_repo.py new file mode 100644 index 00000000..4e3710b6 --- /dev/null +++ b/src/truefoundry_sdk/types/custom_helm_repo.py @@ -0,0 +1,51 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .custom_basic_auth import CustomBasicAuth + + +class CustomHelmRepo(UniversalBaseModel): + """ + +label=Custom Helm Repo + +icon=puzzle-piece + """ + + type: typing.Literal["integration/helm-repo/custom"] = pydantic.Field(default="integration/helm-repo/custom") + """ + +value=integration/helm-repo/custom + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + repo_url: str = pydantic.Field() + """ + +label=Helm Repo URL + +usage=The URL of the Helm Repo. + +sort=200 + """ + + auth_data: CustomBasicAuth + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_integrations.py b/src/truefoundry_sdk/types/custom_integrations.py new file mode 100644 index 00000000..5a0a12e2 --- /dev/null +++ b/src/truefoundry_sdk/types/custom_integrations.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .custom_blob_storage import CustomBlobStorage +from .custom_helm_repo import CustomHelmRepo +from .custom_jwt_auth_integration import CustomJwtAuthIntegration +from .custom_mcp_server_integration import CustomMcpServerIntegration +from .custom_model import CustomModel +from .custom_username_password_artifacts_registry import CustomUsernamePasswordArtifactsRegistry +from .email_notification_channel import EmailNotificationChannel + +CustomIntegrations = typing.Union[ + CustomUsernamePasswordArtifactsRegistry, + CustomModel, + EmailNotificationChannel, + CustomHelmRepo, + CustomBlobStorage, + CustomJwtAuthIntegration, + CustomMcpServerIntegration, +] diff --git a/src/truefoundry_sdk/types/custom_jwt_auth_integration.py b/src/truefoundry_sdk/types/custom_jwt_auth_integration.py new file mode 100644 index 00000000..c939eacc --- /dev/null +++ b/src/truefoundry_sdk/types/custom_jwt_auth_integration.py @@ -0,0 +1,58 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .o_auth2login_provider import OAuth2LoginProvider + + +class CustomJwtAuthIntegration(UniversalBaseModel): + """ + +label=Custom JWT Auth Integration + +icon=puzzle-piece + """ + + type: typing.Literal["integration/jwt-auth/custom"] = pydantic.Field(default="integration/jwt-auth/custom") + """ + +value=integration/jwt-auth/custom + """ + + name: str = pydantic.Field() + """ + +label=Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + issuer: str = pydantic.Field() + """ + +label=Issuer + +usage=The base URL of the authentication provider. + +sort=200 + """ + + jwks_uri: str = pydantic.Field() + """ + +label=JWKS URI + +usage=The JSON Web Key Set URI for JWT verification. + +sort=300 + """ + + login_provider: typing.Optional[OAuth2LoginProvider] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=500 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_mcp_server_integration.py b/src/truefoundry_sdk/types/custom_mcp_server_integration.py new file mode 100644 index 00000000..4719a175 --- /dev/null +++ b/src/truefoundry_sdk/types/custom_mcp_server_integration.py @@ -0,0 +1,59 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .mcp_server_auth import McpServerAuth + + +class CustomMcpServerIntegration(UniversalBaseModel): + """ + +label=Custom MCP Server + +icon=puzzle-piece + """ + + type: typing.Literal["integration/mcp-server/custom"] = pydantic.Field(default="integration/mcp-server/custom") + """ + +value=integration/mcp-server/custom + """ + + name: str = pydantic.Field() + """ + +label=Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + """ + + description: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Description + +uiType=TextArea + +usage=The Description of the integration that will be displayed in the TrueFoundry UI. + +sort=200 + +uiProps={"descriptionInline":true} + """ + + url: str = pydantic.Field() + """ + +label=URL + +usage=The endpoint URL for the MCP server. + +sort=300 + """ + + auth: typing.Optional[McpServerAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=500 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_model.py b/src/truefoundry_sdk/types/custom_model.py new file mode 100644 index 00000000..a7cc807d --- /dev/null +++ b/src/truefoundry_sdk/types/custom_model.py @@ -0,0 +1,77 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .custom_model_auth_data import CustomModelAuthData +from .custom_model_model_server import CustomModelModelServer +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class CustomModel(UniversalBaseModel): + """ + +label=Custom Model + +icon=puzzle-piece + """ + + name: str = pydantic.Field() + """ + +sort=1 + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + hosted_model_name: str + url: str = pydantic.Field() + """ + +message=enter valid https/http URL that should not end with trailing slash + """ + + model_server: CustomModelModelServer + tfy_application_id: typing.Optional[str] = pydantic.Field(default=None) + """ + +uiType=Hidden + """ + + type: typing.Literal["integration/model/custom"] = pydantic.Field(default="integration/model/custom") + """ + +value=integration/model/custom + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +usage=Specify the type of the model + +sort=4 + """ + + auth_data: typing.Optional[CustomModelAuthData] = pydantic.Field(default=None) + """ + +label=Auth Data + +usage=Custom authentication data for the integration. + +sort=300 + """ + + headers: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None) + """ + +label=Custom Headers + +usage=Custom headers for the integration. Forwarded to the provider as is. For example: `{"Authorization": "APIKey "}` + +sort=500 + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_model_auth_data.py b/src/truefoundry_sdk/types/custom_model_auth_data.py new file mode 100644 index 00000000..6233c356 --- /dev/null +++ b/src/truefoundry_sdk/types/custom_model_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .custom_basic_auth import CustomBasicAuth +from .custom_bearer_auth import CustomBearerAuth + +CustomModelAuthData = typing.Union[CustomBasicAuth, CustomBearerAuth] diff --git a/src/truefoundry_sdk/types/custom_model_model_server.py b/src/truefoundry_sdk/types/custom_model_model_server.py new file mode 100644 index 00000000..a710aa41 --- /dev/null +++ b/src/truefoundry_sdk/types/custom_model_model_server.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class CustomModelModelServer(str, enum.Enum): + VLLM_OPENAI = "vllm-openai" + TEI = "tei" + INFINITY = "infinity" + NEMO_RETRIEVER = "nemo-retriever" + + def visit( + self, + vllm_openai: typing.Callable[[], T_Result], + tei: typing.Callable[[], T_Result], + infinity: typing.Callable[[], T_Result], + nemo_retriever: typing.Callable[[], T_Result], + ) -> T_Result: + if self is CustomModelModelServer.VLLM_OPENAI: + return vllm_openai() + if self is CustomModelModelServer.TEI: + return tei() + if self is CustomModelModelServer.INFINITY: + return infinity() + if self is CustomModelModelServer.NEMO_RETRIEVER: + return nemo_retriever() diff --git a/src/truefoundry_sdk/types/custom_provider_account.py b/src/truefoundry_sdk/types/custom_provider_account.py new file mode 100644 index 00000000..1de6a2cd --- /dev/null +++ b/src/truefoundry_sdk/types/custom_provider_account.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .custom_basic_auth import CustomBasicAuth +from .custom_integrations import CustomIntegrations + + +class CustomProviderAccount(UniversalBaseModel): + """ + +label=Custom + +icon=puzzle-piece + """ + + type: typing.Literal["provider-account/custom"] = pydantic.Field(default="provider-account/custom") + """ + +value=provider-account/custom + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + auth_data: typing.Optional[CustomBasicAuth] = None + integrations: typing.List[CustomIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/custom_username_password_artifacts_registry.py b/src/truefoundry_sdk/types/custom_username_password_artifacts_registry.py new file mode 100644 index 00000000..f6a8ca8f --- /dev/null +++ b/src/truefoundry_sdk/types/custom_username_password_artifacts_registry.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .custom_basic_auth import CustomBasicAuth + + +class CustomUsernamePasswordArtifactsRegistry(UniversalBaseModel): + """ + +label=Custom Docker Registry + +icon=puzzle-piece + """ + + type: typing.Literal["integration/docker-registry/custom"] = pydantic.Field( + default="integration/docker-registry/custom" + ) + """ + +value=integration/docker-registry/custom + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + registry_url: str = pydantic.Field() + """ + +label=Registry URL + +usage=The URL of the registry. + +sort=200 + """ + + auth_data: typing.Optional[CustomBasicAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/databricks_api_key_auth.py b/src/truefoundry_sdk/types/databricks_api_key_auth.py new file mode 100644 index 00000000..f505f87f --- /dev/null +++ b/src/truefoundry_sdk/types/databricks_api_key_auth.py @@ -0,0 +1,33 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DatabricksApiKeyAuth(UniversalBaseModel): + """ + +label=Databricks API Key Based Auth + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +usage=API key for Databricks authentication. + +sort=100 + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/databricks_integrations.py b/src/truefoundry_sdk/types/databricks_integrations.py new file mode 100644 index 00000000..05abfa97 --- /dev/null +++ b/src/truefoundry_sdk/types/databricks_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .databricks_model import DatabricksModel + +DatabricksIntegrations = DatabricksModel diff --git a/src/truefoundry_sdk/types/databricks_model.py b/src/truefoundry_sdk/types/databricks_model.py new file mode 100644 index 00000000..8cb056d6 --- /dev/null +++ b/src/truefoundry_sdk/types/databricks_model.py @@ -0,0 +1,61 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class DatabricksModel(UniversalBaseModel): + """ + +label=Databricks Model + +icon=databricks + """ + + type: typing.Literal["integration/model/databricks"] = pydantic.Field(default="integration/model/databricks") + """ + +value=integration/model/databricks + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Databricks model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Databricks model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Databricks model + +uiType=Select + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/databricks_provider_account.py b/src/truefoundry_sdk/types/databricks_provider_account.py new file mode 100644 index 00000000..82037348 --- /dev/null +++ b/src/truefoundry_sdk/types/databricks_provider_account.py @@ -0,0 +1,69 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .databricks_integrations import DatabricksIntegrations +from .databricks_provider_account_auth_data import DatabricksProviderAccountAuthData + + +class DatabricksProviderAccount(UniversalBaseModel): + """ + +label=Databricks Provider Account + +icon=databricks + """ + + type: typing.Literal["provider-account/databricks"] = pydantic.Field(default="provider-account/databricks") + """ + +value=provider-account/databricks + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Databricks provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: DatabricksProviderAccountAuthData = pydantic.Field() + """ + +label=Auth Data + +sort=300 + +usage=Databricks authentication credentials + """ + + base_url: str = pydantic.Field() + """ + +label=Base URL + +sort=400 + +usage=The base URL of your Databricks workspace + +message=Base URL must not be empty + """ + + integrations: typing.List[DatabricksIntegrations] = pydantic.Field() + """ + +label=Integrations + +sort=500 + +usage=List of integrations that are associated with the Databricks provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=200 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/databricks_provider_account_auth_data.py b/src/truefoundry_sdk/types/databricks_provider_account_auth_data.py new file mode 100644 index 00000000..66ccf511 --- /dev/null +++ b/src/truefoundry_sdk/types/databricks_provider_account_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .databricks_api_key_auth import DatabricksApiKeyAuth +from .databricks_service_principal_auth import DatabricksServicePrincipalAuth + +DatabricksProviderAccountAuthData = typing.Union[DatabricksServicePrincipalAuth, DatabricksApiKeyAuth] diff --git a/src/truefoundry_sdk/types/databricks_service_principal_auth.py b/src/truefoundry_sdk/types/databricks_service_principal_auth.py new file mode 100644 index 00000000..ca0752cd --- /dev/null +++ b/src/truefoundry_sdk/types/databricks_service_principal_auth.py @@ -0,0 +1,42 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DatabricksServicePrincipalAuth(UniversalBaseModel): + """ + +label=Databricks Service Principal Auth + +usage=You can authenticate using Databricks service principal. To generate OAuth secret and Client ID, go to Databricks workspace -> Workspace Settings -> Identity and Access -> Service Principals -> Secrets. + """ + + type: typing.Literal["service-principal"] = pydantic.Field(default="service-principal") + """ + +value=service-principal + """ + + oauth_secret: str = pydantic.Field() + """ + +label=OAuth Secret + +usage=OAuth secret of the Databricks service principal. + +sort=200 + +uiType=Password + """ + + client_id: str = pydantic.Field() + """ + +label=Client ID + +usage=Client ID or Application ID of the Databricks service principal. + +sort=100 + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/deepinfra_integrations.py b/src/truefoundry_sdk/types/deepinfra_integrations.py new file mode 100644 index 00000000..58384e0a --- /dev/null +++ b/src/truefoundry_sdk/types/deepinfra_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .deepinfra_model import DeepinfraModel + +DeepinfraIntegrations = DeepinfraModel diff --git a/src/truefoundry_sdk/types/deepinfra_key_auth.py b/src/truefoundry_sdk/types/deepinfra_key_auth.py new file mode 100644 index 00000000..3d858f45 --- /dev/null +++ b/src/truefoundry_sdk/types/deepinfra_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DeepinfraKeyAuth(UniversalBaseModel): + """ + +label=DeepInfra API Key Auth + +icon=deepinfra + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=The API key for DeepInfra authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/deepinfra_model.py b/src/truefoundry_sdk/types/deepinfra_model.py new file mode 100644 index 00000000..b46ff5e1 --- /dev/null +++ b/src/truefoundry_sdk/types/deepinfra_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class DeepinfraModel(UniversalBaseModel): + """ + +label=DeepInfra Model + +icon=deepinfra + """ + + type: typing.Literal["integration/model/deepinfra"] = pydantic.Field(default="integration/model/deepinfra") + """ + +value=integration/model/deepinfra + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this DeepInfra model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the DeepInfra model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the DeepInfra model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/deepinfra_provider_account.py b/src/truefoundry_sdk/types/deepinfra_provider_account.py new file mode 100644 index 00000000..64c359db --- /dev/null +++ b/src/truefoundry_sdk/types/deepinfra_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .deepinfra_integrations import DeepinfraIntegrations +from .deepinfra_key_auth import DeepinfraKeyAuth + + +class DeepinfraProviderAccount(UniversalBaseModel): + """ + +label=DeepInfra Provider Account + +icon=deepinfra + """ + + type: typing.Literal["provider-account/deepinfra"] = pydantic.Field(default="provider-account/deepinfra") + """ + +value=provider-account/deepinfra + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the DeepInfra provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: DeepinfraKeyAuth + integrations: typing.Optional[typing.List[DeepinfraIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the DeepInfra provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/dockerhub_basic_auth.py b/src/truefoundry_sdk/types/dockerhub_basic_auth.py new file mode 100644 index 00000000..23bb828e --- /dev/null +++ b/src/truefoundry_sdk/types/dockerhub_basic_auth.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class DockerhubBasicAuth(UniversalBaseModel): + """ + +label=Dockerhub Basic Auth + """ + + type: typing.Literal["basic-auth"] = pydantic.Field(default="basic-auth") + """ + +value=basic-auth + """ + + username: str = pydantic.Field() + """ + +sort=100 + """ + + password: str = pydantic.Field() + """ + +sort=200 + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/dockerhub_integrations.py b/src/truefoundry_sdk/types/dockerhub_integrations.py new file mode 100644 index 00000000..ba121df0 --- /dev/null +++ b/src/truefoundry_sdk/types/dockerhub_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .dockerhub_registry import DockerhubRegistry + +DockerhubIntegrations = DockerhubRegistry diff --git a/src/truefoundry_sdk/types/dockerhub_provider_account.py b/src/truefoundry_sdk/types/dockerhub_provider_account.py new file mode 100644 index 00000000..a61a97e0 --- /dev/null +++ b/src/truefoundry_sdk/types/dockerhub_provider_account.py @@ -0,0 +1,45 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .dockerhub_basic_auth import DockerhubBasicAuth +from .dockerhub_integrations import DockerhubIntegrations + + +class DockerhubProviderAccount(UniversalBaseModel): + """ + +label=Dockerhub + +icon=docker + """ + + type: typing.Literal["provider-account/dockerhub"] = pydantic.Field(default="provider-account/dockerhub") + """ + +value=provider-account/dockerhub + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + account_name: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Account Name + """ + + auth_data: typing.Optional[DockerhubBasicAuth] = None + integrations: typing.List[DockerhubIntegrations] = pydantic.Field() + """ + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/dockerhub_registry.py b/src/truefoundry_sdk/types/dockerhub_registry.py new file mode 100644 index 00000000..159720ff --- /dev/null +++ b/src/truefoundry_sdk/types/dockerhub_registry.py @@ -0,0 +1,52 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .dockerhub_basic_auth import DockerhubBasicAuth + + +class DockerhubRegistry(UniversalBaseModel): + """ + +label=Dockerhub Registry + +icon=docker + """ + + type: typing.Literal["integration/docker-registry/dockerhub"] = pydantic.Field( + default="integration/docker-registry/dockerhub" + ) + """ + +value=integration/docker-registry/dockerhub + """ + + name: str = pydantic.Field() + """ + +label=Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + registry_url: str = pydantic.Field() + """ + +label=Registry URL + +sort=200 + """ + + auth_data: typing.Optional[DockerhubBasicAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/dynamic_volume_config.py b/src/truefoundry_sdk/types/dynamic_volume_config.py index 2f996f80..cd697890 100644 --- a/src/truefoundry_sdk/types/dynamic_volume_config.py +++ b/src/truefoundry_sdk/types/dynamic_volume_config.py @@ -26,7 +26,7 @@ class DynamicVolumeConfig(UniversalBaseModel): size: int = pydantic.Field() """ - +label=Size + +label=Size(Gi) +unit=Gi +usage=Size of volume in Gi """ diff --git a/src/truefoundry_sdk/types/email_notification_channel.py b/src/truefoundry_sdk/types/email_notification_channel.py new file mode 100644 index 00000000..28ef7e60 --- /dev/null +++ b/src/truefoundry_sdk/types/email_notification_channel.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .smtp_credentials import SmtpCredentials + + +class EmailNotificationChannel(UniversalBaseModel): + """ + +label=Email Notification Channel + +icon=envelope + """ + + type: typing.Literal["integration/notification-channel/email"] = pydantic.Field( + default="integration/notification-channel/email" + ) + """ + +value=integration/notification-channel/email + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + auth_data: SmtpCredentials + from_email: str = pydantic.Field() + """ + +label=From Email + +usage=The email address from which the email will be sent. + +sort=1000 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=1200 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/failure_tolerance_config.py b/src/truefoundry_sdk/types/failure_tolerance_config.py new file mode 100644 index 00000000..1bc496d5 --- /dev/null +++ b/src/truefoundry_sdk/types/failure_tolerance_config.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class FailureToleranceConfig(UniversalBaseModel): + allowed_failures_per_minute: int + cooldown_period_minutes: int + failure_status_codes: typing.List[int] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/fallback_config.py b/src/truefoundry_sdk/types/fallback_config.py new file mode 100644 index 00000000..3858809e --- /dev/null +++ b/src/truefoundry_sdk/types/fallback_config.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .fallback_rule import FallbackRule + + +class FallbackConfig(UniversalBaseModel): + name: str + type: typing.Literal["gateway-fallback-config"] = "gateway-fallback-config" + rules: typing.List[FallbackRule] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/fallback_model.py b/src/truefoundry_sdk/types/fallback_model.py new file mode 100644 index 00000000..539e0287 --- /dev/null +++ b/src/truefoundry_sdk/types/fallback_model.py @@ -0,0 +1,19 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class FallbackModel(UniversalBaseModel): + target: str + override_params: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/fallback_rule.py b/src/truefoundry_sdk/types/fallback_rule.py new file mode 100644 index 00000000..16d04b73 --- /dev/null +++ b/src/truefoundry_sdk/types/fallback_rule.py @@ -0,0 +1,22 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .fallback_model import FallbackModel +from .fallback_when import FallbackWhen + + +class FallbackRule(UniversalBaseModel): + id: str + when: FallbackWhen + fallback_models: typing.List[FallbackModel] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/fallback_when.py b/src/truefoundry_sdk/types/fallback_when.py new file mode 100644 index 00000000..3f8bf8e6 --- /dev/null +++ b/src/truefoundry_sdk/types/fallback_when.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class FallbackWhen(UniversalBaseModel): + subjects: typing.Optional[typing.List[str]] = None + models: typing.Optional[typing.List[str]] = None + metadata: typing.Optional[typing.Dict[str, str]] = None + response_status_codes: typing.List[int] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gateway_config.py b/src/truefoundry_sdk/types/gateway_config.py new file mode 100644 index 00000000..3b845f51 --- /dev/null +++ b/src/truefoundry_sdk/types/gateway_config.py @@ -0,0 +1,11 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .budget_config import BudgetConfig +from .fallback_config import FallbackConfig +from .guardrails_config import GuardrailsConfig +from .load_balancing_config import LoadBalancingConfig +from .rate_limit_config import RateLimitConfig + +GatewayConfig = typing.Union[RateLimitConfig, FallbackConfig, LoadBalancingConfig, GuardrailsConfig, BudgetConfig] diff --git a/src/truefoundry_sdk/types/gcp_api_key_auth.py b/src/truefoundry_sdk/types/gcp_api_key_auth.py new file mode 100644 index 00000000..718e3068 --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_api_key_auth.py @@ -0,0 +1,33 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata + + +class GcpApiKeyAuth(UniversalBaseModel): + """ + +label=GCP API Key Auth + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: typing_extensions.Annotated[str, FieldMetadata(alias="apiKey")] = pydantic.Field() + """ + +label=API Key + +sort=100 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gcp_gcr.py b/src/truefoundry_sdk/types/gcp_gcr.py new file mode 100644 index 00000000..b360dd66 --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_gcr.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gcp_key_file_auth import GcpKeyFileAuth + + +class GcpGcr(UniversalBaseModel): + """ + +icon=gcp-gcr + +label=GCP GCR + """ + + type: typing.Literal["integration/docker-registry/gcp/gcr"] = pydantic.Field( + default="integration/docker-registry/gcp/gcr" + ) + """ + +value=integration/docker-registry/gcp/gcr + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + registry_url: str = pydantic.Field() + """ + +label=Registry URL + +usage=The URL of the registry. + +sort=200 + """ + + auth_data: typing.Optional[GcpKeyFileAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gcp_gcs.py b/src/truefoundry_sdk/types/gcp_gcs.py new file mode 100644 index 00000000..158f81f0 --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_gcs.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gcp_key_file_auth import GcpKeyFileAuth + + +class GcpGcs(UniversalBaseModel): + """ + +icon=gcp-gcs + +label=GCP GCS + """ + + type: typing.Literal["integration/blob-storage/gcp/gcs"] = pydantic.Field( + default="integration/blob-storage/gcp/gcs" + ) + """ + +value=integration/blob-storage/gcp/gcs + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + storage_root: str = pydantic.Field() + """ + +label=Storage Root + +usage=The root path of the storage. + +sort=200 + """ + + auth_data: typing.Optional[GcpKeyFileAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gcp_gke_integration.py b/src/truefoundry_sdk/types/gcp_gke_integration.py new file mode 100644 index 00000000..c3058179 --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_gke_integration.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gcp_key_file_auth import GcpKeyFileAuth +from .gcp_region import GcpRegion + + +class GcpGkeIntegration(UniversalBaseModel): + """ + +icon=gcp-gke + +label=GCP GKE + """ + + type: typing.Literal["integration/cluster/gcp/gke-standard"] = pydantic.Field( + default="integration/cluster/gcp/gke-standard" + ) + """ + +value=integration/cluster/gcp/gke-standard + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + location: GcpRegion + cluster_name: str = pydantic.Field() + """ + +label=Cluster Name + +usage=Name of the cluster given in the cloud account. + +sort=300 + """ + + auth_data: typing.Optional[GcpKeyFileAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gcp_gsm.py b/src/truefoundry_sdk/types/gcp_gsm.py new file mode 100644 index 00000000..def1915d --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_gsm.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gcp_key_file_auth import GcpKeyFileAuth + + +class GcpGsm(UniversalBaseModel): + """ + +icon=gcp-gsm + +label=GCP GSM + """ + + type: typing.Literal["integration/secret-store/gcp/gsm"] = pydantic.Field( + default="integration/secret-store/gcp/gsm" + ) + """ + +value=integration/secret-store/gcp/gsm + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + auth_data: typing.Optional[GcpKeyFileAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gcp_integrations.py b/src/truefoundry_sdk/types/gcp_integrations.py new file mode 100644 index 00000000..f826d4bd --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_integrations.py @@ -0,0 +1,12 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .gcp_gcr import GcpGcr +from .gcp_gcs import GcpGcs +from .gcp_gke_integration import GcpGkeIntegration +from .gcp_gsm import GcpGsm +from .google_model import GoogleModel +from .vertex_model import VertexModel + +GcpIntegrations = typing.Union[GcpGcr, GcpGcs, GcpGsm, GcpGkeIntegration, VertexModel, GoogleModel] diff --git a/src/truefoundry_sdk/types/gcp_key_file_auth.py b/src/truefoundry_sdk/types/gcp_key_file_auth.py new file mode 100644 index 00000000..ef92de65 --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_key_file_auth.py @@ -0,0 +1,32 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class GcpKeyFileAuth(UniversalBaseModel): + """ + +label=GCP Key File Auth + """ + + type: typing.Literal["key-file"] = pydantic.Field(default="key-file") + """ + +value=key-file + """ + + key_file_content: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field() + """ + +uiType=JsonInput + +label=Key File Content + +sort=100 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gcp_provider_account.py b/src/truefoundry_sdk/types/gcp_provider_account.py new file mode 100644 index 00000000..344e95f7 --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_provider_account.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gcp_integrations import GcpIntegrations +from .gcp_provider_account_auth_data import GcpProviderAccountAuthData + + +class GcpProviderAccount(UniversalBaseModel): + """ + +label=GCP + +icon=googleCloud + +heroDataKey=project_id + """ + + type: typing.Literal["provider-account/gcp"] = pydantic.Field(default="provider-account/gcp") + """ + +value=provider-account/gcp + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the GCP provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + project_id: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Project Id + +usage=The project id of the GCP account. + +sort=200 + """ + + auth_data: typing.Optional[GcpProviderAccountAuthData] = pydantic.Field(default=None) + """ + +label=GCP Account Auth Data + +usage=Authentication data for the GCP account. + +sort=400 + """ + + integrations: typing.List[GcpIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the GCP provider account. + +sort=500 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gcp_provider_account_auth_data.py b/src/truefoundry_sdk/types/gcp_provider_account_auth_data.py new file mode 100644 index 00000000..e3702657 --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_provider_account_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .gcp_api_key_auth import GcpApiKeyAuth +from .gcp_key_file_auth import GcpKeyFileAuth + +GcpProviderAccountAuthData = typing.Union[GcpKeyFileAuth, GcpApiKeyAuth] diff --git a/src/truefoundry_sdk/types/gcp_region.py b/src/truefoundry_sdk/types/gcp_region.py new file mode 100644 index 00000000..8434758b --- /dev/null +++ b/src/truefoundry_sdk/types/gcp_region.py @@ -0,0 +1,161 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class GcpRegion(str, enum.Enum): + NORTHAMERICA_NORTHEAST1 = "northamerica-northeast1" + NORTHAMERICA_NORTHEAST2 = "northamerica-northeast2" + SOUTHAMERICA_EAST1 = "southamerica-east1" + US_CENTRAL1 = "us-central1" + US_EAST1 = "us-east1" + US_EAST4 = "us-east4" + US_EAST5 = "us-east5" + US_SOUTH1 = "us-south1" + US_WEST1 = "us-west1" + US_WEST2 = "us-west2" + US_WEST3 = "us-west3" + US_WEST4 = "us-west4" + ASIA_EAST1 = "asia-east1" + ASIA_EAST2 = "asia-east2" + ASIA_NORTHEAST1 = "asia-northeast1" + ASIA_NORTHEAST2 = "asia-northeast2" + ASIA_NORTHEAST3 = "asia-northeast3" + ASIA_SOUTH1 = "asia-south1" + ASIA_SOUTH2 = "asia-south2" + ASIA_SOUTHEAST1 = "asia-southeast1" + ASIA_SOUTHEAST2 = "asia-southeast2" + AUSTRALIA_SOUTHEAST1 = "australia-southeast1" + AUSTRALIA_SOUTHEAST2 = "australia-southeast2" + EUROPE_CENTRAL2 = "europe-central2" + EUROPE_NORTH1 = "europe-north1" + EUROPE_SOUTHWEST1 = "europe-southwest1" + EUROPE_WEST1 = "europe-west1" + EUROPE_WEST2 = "europe-west2" + EUROPE_WEST3 = "europe-west3" + EUROPE_WEST4 = "europe-west4" + EUROPE_WEST6 = "europe-west6" + EUROPE_WEST8 = "europe-west8" + EUROPE_WEST9 = "europe-west9" + ME_CENTRAL1 = "me-central1" + ME_CENTRAL2 = "me-central2" + ME_WEST1 = "me-west1" + GLOBAL = "global" + + def visit( + self, + northamerica_northeast1: typing.Callable[[], T_Result], + northamerica_northeast2: typing.Callable[[], T_Result], + southamerica_east1: typing.Callable[[], T_Result], + us_central1: typing.Callable[[], T_Result], + us_east1: typing.Callable[[], T_Result], + us_east4: typing.Callable[[], T_Result], + us_east5: typing.Callable[[], T_Result], + us_south1: typing.Callable[[], T_Result], + us_west1: typing.Callable[[], T_Result], + us_west2: typing.Callable[[], T_Result], + us_west3: typing.Callable[[], T_Result], + us_west4: typing.Callable[[], T_Result], + asia_east1: typing.Callable[[], T_Result], + asia_east2: typing.Callable[[], T_Result], + asia_northeast1: typing.Callable[[], T_Result], + asia_northeast2: typing.Callable[[], T_Result], + asia_northeast3: typing.Callable[[], T_Result], + asia_south1: typing.Callable[[], T_Result], + asia_south2: typing.Callable[[], T_Result], + asia_southeast1: typing.Callable[[], T_Result], + asia_southeast2: typing.Callable[[], T_Result], + australia_southeast1: typing.Callable[[], T_Result], + australia_southeast2: typing.Callable[[], T_Result], + europe_central2: typing.Callable[[], T_Result], + europe_north1: typing.Callable[[], T_Result], + europe_southwest1: typing.Callable[[], T_Result], + europe_west1: typing.Callable[[], T_Result], + europe_west2: typing.Callable[[], T_Result], + europe_west3: typing.Callable[[], T_Result], + europe_west4: typing.Callable[[], T_Result], + europe_west6: typing.Callable[[], T_Result], + europe_west8: typing.Callable[[], T_Result], + europe_west9: typing.Callable[[], T_Result], + me_central1: typing.Callable[[], T_Result], + me_central2: typing.Callable[[], T_Result], + me_west1: typing.Callable[[], T_Result], + global_: typing.Callable[[], T_Result], + ) -> T_Result: + if self is GcpRegion.NORTHAMERICA_NORTHEAST1: + return northamerica_northeast1() + if self is GcpRegion.NORTHAMERICA_NORTHEAST2: + return northamerica_northeast2() + if self is GcpRegion.SOUTHAMERICA_EAST1: + return southamerica_east1() + if self is GcpRegion.US_CENTRAL1: + return us_central1() + if self is GcpRegion.US_EAST1: + return us_east1() + if self is GcpRegion.US_EAST4: + return us_east4() + if self is GcpRegion.US_EAST5: + return us_east5() + if self is GcpRegion.US_SOUTH1: + return us_south1() + if self is GcpRegion.US_WEST1: + return us_west1() + if self is GcpRegion.US_WEST2: + return us_west2() + if self is GcpRegion.US_WEST3: + return us_west3() + if self is GcpRegion.US_WEST4: + return us_west4() + if self is GcpRegion.ASIA_EAST1: + return asia_east1() + if self is GcpRegion.ASIA_EAST2: + return asia_east2() + if self is GcpRegion.ASIA_NORTHEAST1: + return asia_northeast1() + if self is GcpRegion.ASIA_NORTHEAST2: + return asia_northeast2() + if self is GcpRegion.ASIA_NORTHEAST3: + return asia_northeast3() + if self is GcpRegion.ASIA_SOUTH1: + return asia_south1() + if self is GcpRegion.ASIA_SOUTH2: + return asia_south2() + if self is GcpRegion.ASIA_SOUTHEAST1: + return asia_southeast1() + if self is GcpRegion.ASIA_SOUTHEAST2: + return asia_southeast2() + if self is GcpRegion.AUSTRALIA_SOUTHEAST1: + return australia_southeast1() + if self is GcpRegion.AUSTRALIA_SOUTHEAST2: + return australia_southeast2() + if self is GcpRegion.EUROPE_CENTRAL2: + return europe_central2() + if self is GcpRegion.EUROPE_NORTH1: + return europe_north1() + if self is GcpRegion.EUROPE_SOUTHWEST1: + return europe_southwest1() + if self is GcpRegion.EUROPE_WEST1: + return europe_west1() + if self is GcpRegion.EUROPE_WEST2: + return europe_west2() + if self is GcpRegion.EUROPE_WEST3: + return europe_west3() + if self is GcpRegion.EUROPE_WEST4: + return europe_west4() + if self is GcpRegion.EUROPE_WEST6: + return europe_west6() + if self is GcpRegion.EUROPE_WEST8: + return europe_west8() + if self is GcpRegion.EUROPE_WEST9: + return europe_west9() + if self is GcpRegion.ME_CENTRAL1: + return me_central1() + if self is GcpRegion.ME_CENTRAL2: + return me_central2() + if self is GcpRegion.ME_WEST1: + return me_west1() + if self is GcpRegion.GLOBAL: + return global_() diff --git a/src/truefoundry_sdk/types/gemini_model_v2.py b/src/truefoundry_sdk/types/gemini_model_v2.py new file mode 100644 index 00000000..df169183 --- /dev/null +++ b/src/truefoundry_sdk/types/gemini_model_v2.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class GeminiModelV2(UniversalBaseModel): + """ + +label=Gemini Model + +icon=googleCloud + """ + + type: typing.Literal["integration/model/gemini"] = pydantic.Field(default="integration/model/gemini") + """ + +value=integration/model/gemini + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Gemini model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The unique identifier for the Gemini model + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Gemini model (e.g., chat, text, etc.) + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/github_integration.py b/src/truefoundry_sdk/types/github_integration.py new file mode 100644 index 00000000..a4b977b9 --- /dev/null +++ b/src/truefoundry_sdk/types/github_integration.py @@ -0,0 +1,45 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class GithubIntegration(UniversalBaseModel): + """ + +label=Github + +icon=github + """ + + type: typing.Literal["integration/vcs/github"] = pydantic.Field(default="integration/vcs/github") + """ + +value=integration/vcs/github + """ + + name: str = pydantic.Field() + """ + +sort=100 + """ + + account_name: str = pydantic.Field() + """ + +label=Account Name + +sort=200 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/github_provider_account.py b/src/truefoundry_sdk/types/github_provider_account.py new file mode 100644 index 00000000..aa06a9d2 --- /dev/null +++ b/src/truefoundry_sdk/types/github_provider_account.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .github_integration import GithubIntegration + + +class GithubProviderAccount(UniversalBaseModel): + """ + +label=Github + +icon=github + """ + + type: typing.Literal["provider-account/github"] = pydantic.Field(default="provider-account/github") + """ + +value=provider-account/github + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + """ + + integrations: typing.List[GithubIntegration] = pydantic.Field() + """ + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gitlab_integration.py b/src/truefoundry_sdk/types/gitlab_integration.py new file mode 100644 index 00000000..810de13d --- /dev/null +++ b/src/truefoundry_sdk/types/gitlab_integration.py @@ -0,0 +1,45 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class GitlabIntegration(UniversalBaseModel): + """ + +label=Gitlab + +icon=gitlab + """ + + type: typing.Literal["integration/vcs/gitlab"] = pydantic.Field(default="integration/vcs/gitlab") + """ + +value=integration/vcs/gitlab + """ + + name: str = pydantic.Field() + """ + +sort=100 + """ + + account_name: str = pydantic.Field() + """ + +label=Account Name + +sort=200 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/gitlab_provider_account.py b/src/truefoundry_sdk/types/gitlab_provider_account.py new file mode 100644 index 00000000..20b432fa --- /dev/null +++ b/src/truefoundry_sdk/types/gitlab_provider_account.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gitlab_integration import GitlabIntegration + + +class GitlabProviderAccount(UniversalBaseModel): + """ + +label=Gitlab + +icon=gitlab + """ + + type: typing.Literal["provider-account/gitlab"] = pydantic.Field(default="provider-account/gitlab") + """ + +value=provider-account/gitlab + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + """ + + integrations: typing.List[GitlabIntegration] = pydantic.Field() + """ + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/google_gemini_provider_account.py b/src/truefoundry_sdk/types/google_gemini_provider_account.py new file mode 100644 index 00000000..58873078 --- /dev/null +++ b/src/truefoundry_sdk/types/google_gemini_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .gcp_api_key_auth import GcpApiKeyAuth +from .gemini_model_v2 import GeminiModelV2 + + +class GoogleGeminiProviderAccount(UniversalBaseModel): + """ + +label=Google Gemini Provider Account + +icon=googleCloud + """ + + type: typing.Literal["provider-account/google-gemini"] = pydantic.Field(default="provider-account/google-gemini") + """ + +value=provider-account/google-gemini + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Google Gemini provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: GcpApiKeyAuth + integrations: typing.List[GeminiModelV2] = pydantic.Field() + """ + +label=Integrations + +sort=500 + +usage=List of integrations that are associated with the Google Gemini provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=200 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/google_model.py b/src/truefoundry_sdk/types/google_model.py new file mode 100644 index 00000000..61c3b6fc --- /dev/null +++ b/src/truefoundry_sdk/types/google_model.py @@ -0,0 +1,56 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gcp_api_key_auth import GcpApiKeyAuth +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class GoogleModel(UniversalBaseModel): + """ + +label=Google Model + +icon=googleCloud + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +sort=2 + """ + + type: typing.Literal["integration/model/gcp/google"] = pydantic.Field(default="integration/model/gcp/google") + """ + +value=integration/model/gcp/google + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +usage=Specify the type of the model + +sort=4 + """ + + auth_data: typing.Optional[GcpApiKeyAuth] = None + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/google_vertex_provider_account.py b/src/truefoundry_sdk/types/google_vertex_provider_account.py new file mode 100644 index 00000000..82aa8120 --- /dev/null +++ b/src/truefoundry_sdk/types/google_vertex_provider_account.py @@ -0,0 +1,66 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .gcp_key_file_auth import GcpKeyFileAuth +from .gcp_region import GcpRegion +from .vertex_model_v2 import VertexModelV2 + + +class GoogleVertexProviderAccount(UniversalBaseModel): + """ + +label=Google Vertex Provider Account + +icon=googleCloud + +heroDataKey=project_id + """ + + type: typing.Literal["provider-account/google-vertex"] = pydantic.Field(default="provider-account/google-vertex") + """ + +value=provider-account/google-vertex + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Google Vertex provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + project_id: str = pydantic.Field() + """ + +label=Project ID + +sort=200 + +usage=The Google Cloud project ID where Vertex AI is enabled + +message=Project ID must not be empty + """ + + region: GcpRegion + auth_data: typing.Optional[GcpKeyFileAuth] = None + integrations: typing.List[VertexModelV2] = pydantic.Field() + """ + +label=Integrations + +sort=500 + +usage=List of integrations that are associated with the Google Vertex provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=600 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/groq_integrations.py b/src/truefoundry_sdk/types/groq_integrations.py new file mode 100644 index 00000000..0a94547a --- /dev/null +++ b/src/truefoundry_sdk/types/groq_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .groq_model import GroqModel + +GroqIntegrations = GroqModel diff --git a/src/truefoundry_sdk/types/groq_key_auth.py b/src/truefoundry_sdk/types/groq_key_auth.py new file mode 100644 index 00000000..f781dd72 --- /dev/null +++ b/src/truefoundry_sdk/types/groq_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class GroqKeyAuth(UniversalBaseModel): + """ + +label=Groq API Key Auth + +icon=groq + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=The API key for Groq authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/groq_model.py b/src/truefoundry_sdk/types/groq_model.py new file mode 100644 index 00000000..a7115f3d --- /dev/null +++ b/src/truefoundry_sdk/types/groq_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class GroqModel(UniversalBaseModel): + """ + +label=Groq Model + +icon=groq + """ + + type: typing.Literal["integration/model/groq"] = pydantic.Field(default="integration/model/groq") + """ + +value=integration/model/groq + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Groq model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Groq model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Groq model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/groq_provider_account.py b/src/truefoundry_sdk/types/groq_provider_account.py new file mode 100644 index 00000000..aeaa39f4 --- /dev/null +++ b/src/truefoundry_sdk/types/groq_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .groq_integrations import GroqIntegrations +from .groq_key_auth import GroqKeyAuth + + +class GroqProviderAccount(UniversalBaseModel): + """ + +label=Groq Provider Account + +icon=groq + """ + + type: typing.Literal["provider-account/groq"] = pydantic.Field(default="provider-account/groq") + """ + +value=provider-account/groq + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Groq provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: GroqKeyAuth + integrations: typing.Optional[typing.List[GroqIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the Groq provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/guardrail_config.py b/src/truefoundry_sdk/types/guardrail_config.py new file mode 100644 index 00000000..d561d95c --- /dev/null +++ b/src/truefoundry_sdk/types/guardrail_config.py @@ -0,0 +1,30 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .guardrail_config_action import GuardrailConfigAction +from .guardrails_options import GuardrailsOptions + + +class GuardrailConfig(UniversalBaseModel): + type: str = pydantic.Field() + """ + +usage=Type of the guardrail + """ + + action: GuardrailConfigAction = pydantic.Field() + """ + +usage=Action to perform with the guardrail + """ + + options: GuardrailsOptions + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/guardrail_config_action.py b/src/truefoundry_sdk/types/guardrail_config_action.py new file mode 100644 index 00000000..05f5f202 --- /dev/null +++ b/src/truefoundry_sdk/types/guardrail_config_action.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class GuardrailConfigAction(str, enum.Enum): + """ + +usage=Action to perform with the guardrail + """ + + VALIDATE = "validate" + TRANSFORM = "transform" + + def visit(self, validate: typing.Callable[[], T_Result], transform: typing.Callable[[], T_Result]) -> T_Result: + if self is GuardrailConfigAction.VALIDATE: + return validate() + if self is GuardrailConfigAction.TRANSFORM: + return transform() diff --git a/src/truefoundry_sdk/types/guardrails_config.py b/src/truefoundry_sdk/types/guardrails_config.py new file mode 100644 index 00000000..f798cae2 --- /dev/null +++ b/src/truefoundry_sdk/types/guardrails_config.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .guardrails_rule import GuardrailsRule + + +class GuardrailsConfig(UniversalBaseModel): + name: str = pydantic.Field() + """ + +usage=Name of the guardrails configuration + """ + + type: typing.Literal["gateway-guardrails-config"] = pydantic.Field(default="gateway-guardrails-config") + """ + +value=gateway-guardrails-config + """ + + rules: typing.List[GuardrailsRule] = pydantic.Field() + """ + +usage=List of guardrail rules + """ + + guardrails_service_url: str = pydantic.Field() + """ + +usage=URL of the guardrails service + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/guardrails_options.py b/src/truefoundry_sdk/types/guardrails_options.py new file mode 100644 index 00000000..98bdcc08 --- /dev/null +++ b/src/truefoundry_sdk/types/guardrails_options.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +GuardrailsOptions = typing.Dict[str, typing.Optional[typing.Any]] diff --git a/src/truefoundry_sdk/types/guardrails_rule.py b/src/truefoundry_sdk/types/guardrails_rule.py new file mode 100644 index 00000000..7041025a --- /dev/null +++ b/src/truefoundry_sdk/types/guardrails_rule.py @@ -0,0 +1,34 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .guardrail_config import GuardrailConfig +from .guardrails_when import GuardrailsWhen + + +class GuardrailsRule(UniversalBaseModel): + id: str = pydantic.Field() + """ + +usage=Unique identifier for the rule + """ + + when: GuardrailsWhen + input_guardrails: typing.List[GuardrailConfig] = pydantic.Field() + """ + +usage=Guardrails to apply to the input + """ + + output_guardrails: typing.List[GuardrailConfig] = pydantic.Field() + """ + +usage=Guardrails to apply to the output + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/guardrails_when.py b/src/truefoundry_sdk/types/guardrails_when.py new file mode 100644 index 00000000..ee751785 --- /dev/null +++ b/src/truefoundry_sdk/types/guardrails_when.py @@ -0,0 +1,31 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class GuardrailsWhen(UniversalBaseModel): + subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +usage=List of subjects that this rule applies to + """ + + models: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +usage=List of models that this rule applies to + """ + + metadata: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None) + """ + +usage=Metadata key-value pairs that this rule applies to + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/infra_provider_account.py b/src/truefoundry_sdk/types/infra_provider_account.py new file mode 100644 index 00000000..c2248965 --- /dev/null +++ b/src/truefoundry_sdk/types/infra_provider_account.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .aws_provider_account import AwsProviderAccount +from .azure_provider_account import AzureProviderAccount +from .bitbucket_provider_account import BitbucketProviderAccount +from .custom_provider_account import CustomProviderAccount +from .dockerhub_provider_account import DockerhubProviderAccount +from .gcp_provider_account import GcpProviderAccount +from .github_provider_account import GithubProviderAccount +from .gitlab_provider_account import GitlabProviderAccount +from .jfrog_provider_account import JfrogProviderAccount +from .pager_duty_provider_account import PagerDutyProviderAccount +from .quay_provider_account import QuayProviderAccount +from .slack_provider_account import SlackProviderAccount +from .true_foundry_provider_account import TrueFoundryProviderAccount +from .ttl_provider_account import TtlProviderAccount +from .webhook_provider_account import WebhookProviderAccount + +InfraProviderAccount = typing.Union[ + AwsProviderAccount, + AzureProviderAccount, + GcpProviderAccount, + DockerhubProviderAccount, + BitbucketProviderAccount, + CustomProviderAccount, + GithubProviderAccount, + GitlabProviderAccount, + JfrogProviderAccount, + TtlProviderAccount, + TrueFoundryProviderAccount, + QuayProviderAccount, + SlackProviderAccount, + WebhookProviderAccount, + PagerDutyProviderAccount, +] diff --git a/src/truefoundry_sdk/types/input_output_based_cost_metric_value.py b/src/truefoundry_sdk/types/input_output_based_cost_metric_value.py new file mode 100644 index 00000000..85a5b1ce --- /dev/null +++ b/src/truefoundry_sdk/types/input_output_based_cost_metric_value.py @@ -0,0 +1,19 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class InputOutputBasedCostMetricValue(UniversalBaseModel): + input: float + output: float + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/j_frog_integrations.py b/src/truefoundry_sdk/types/j_frog_integrations.py new file mode 100644 index 00000000..88bda706 --- /dev/null +++ b/src/truefoundry_sdk/types/j_frog_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .jfrog_artifacts_registry import JfrogArtifactsRegistry + +JFrogIntegrations = JfrogArtifactsRegistry diff --git a/src/truefoundry_sdk/types/jfrog_artifacts_registry.py b/src/truefoundry_sdk/types/jfrog_artifacts_registry.py new file mode 100644 index 00000000..7f405e26 --- /dev/null +++ b/src/truefoundry_sdk/types/jfrog_artifacts_registry.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .jfrog_basic_auth import JfrogBasicAuth + + +class JfrogArtifactsRegistry(UniversalBaseModel): + """ + +label=Jfrog Artifacts Registry + +icon=jfrog + """ + + type: typing.Literal["integration/docker-registry/jfrog"] = pydantic.Field( + default="integration/docker-registry/jfrog" + ) + """ + +value=integration/docker-registry/jfrog + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + registry_url: str = pydantic.Field() + """ + +label=Registry URL + +usage=The URL of the registry. + +sort=200 + """ + + auth_data: typing.Optional[JfrogBasicAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/jfrog_basic_auth.py b/src/truefoundry_sdk/types/jfrog_basic_auth.py new file mode 100644 index 00000000..66ececee --- /dev/null +++ b/src/truefoundry_sdk/types/jfrog_basic_auth.py @@ -0,0 +1,40 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class JfrogBasicAuth(UniversalBaseModel): + """ + +label=Jfrog Basic Auth + """ + + type: typing.Literal["basic-auth"] = pydantic.Field(default="basic-auth") + """ + +value=basic-auth + """ + + username: str = pydantic.Field() + """ + +label=Username + +usage=The username for the basic authentication. + +sort=100 + """ + + password: str = pydantic.Field() + """ + +sort=200 + +label=Password + +usage=The password for the basic authentication. + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/jfrog_provider_account.py b/src/truefoundry_sdk/types/jfrog_provider_account.py new file mode 100644 index 00000000..7ae1076e --- /dev/null +++ b/src/truefoundry_sdk/types/jfrog_provider_account.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .j_frog_integrations import JFrogIntegrations +from .jfrog_basic_auth import JfrogBasicAuth + + +class JfrogProviderAccount(UniversalBaseModel): + """ + +label=Jfrog + +icon=jfrog + """ + + type: typing.Literal["provider-account/jfrog"] = pydantic.Field(default="provider-account/jfrog") + """ + +value=provider-account/jfrog + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + account_name: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Account Name + +usage=The name of the JFrog account. + +sort=200 + """ + + auth_data: typing.Optional[JfrogBasicAuth] = None + integrations: typing.List[JFrogIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/job.py b/src/truefoundry_sdk/types/job.py index 86333f4c..03e50811 100644 --- a/src/truefoundry_sdk/types/job.py +++ b/src/truefoundry_sdk/types/job.py @@ -54,6 +54,7 @@ class Job(UniversalBaseModel): params: typing.Optional[typing.List[Param]] = pydantic.Field(default=None) """ +label=Params for input + +uiType=ParamsInput +usage=Configure params and pass it to create different job runs +sort=400 """ diff --git a/src/truefoundry_sdk/types/latency_based_load_balance_target.py b/src/truefoundry_sdk/types/latency_based_load_balance_target.py new file mode 100644 index 00000000..864c1f00 --- /dev/null +++ b/src/truefoundry_sdk/types/latency_based_load_balance_target.py @@ -0,0 +1,19 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class LatencyBasedLoadBalanceTarget(UniversalBaseModel): + target: str + override_params: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/latency_based_load_balancing_rule.py b/src/truefoundry_sdk/types/latency_based_load_balancing_rule.py new file mode 100644 index 00000000..97670e30 --- /dev/null +++ b/src/truefoundry_sdk/types/latency_based_load_balancing_rule.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .latency_based_load_balance_target import LatencyBasedLoadBalanceTarget +from .load_balancing_when import LoadBalancingWhen + + +class LatencyBasedLoadBalancingRule(UniversalBaseModel): + id: str + when: LoadBalancingWhen + load_balance_targets: typing.List[LatencyBasedLoadBalanceTarget] + type: typing.Literal["latency-based-routing"] = "latency-based-routing" + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/load_balance_target.py b/src/truefoundry_sdk/types/load_balance_target.py new file mode 100644 index 00000000..8c3d4d49 --- /dev/null +++ b/src/truefoundry_sdk/types/load_balance_target.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class LoadBalanceTarget(UniversalBaseModel): + target: str + weight: int + override_params: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/load_balancing_config.py b/src/truefoundry_sdk/types/load_balancing_config.py new file mode 100644 index 00000000..9615e0c6 --- /dev/null +++ b/src/truefoundry_sdk/types/load_balancing_config.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .load_balancing_rule import LoadBalancingRule +from .model_config import ModelConfig + + +class LoadBalancingConfig(UniversalBaseModel): + name: str + type: typing.Literal["gateway-load-balancing-config"] = "gateway-load-balancing-config" + model_configs: typing.Optional[typing.List[ModelConfig]] = None + rules: typing.List[LoadBalancingRule] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/load_balancing_rule.py b/src/truefoundry_sdk/types/load_balancing_rule.py new file mode 100644 index 00000000..9bbe83cc --- /dev/null +++ b/src/truefoundry_sdk/types/load_balancing_rule.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .latency_based_load_balancing_rule import LatencyBasedLoadBalancingRule +from .weight_based_load_balancing_rule import WeightBasedLoadBalancingRule + +LoadBalancingRule = typing.Union[WeightBasedLoadBalancingRule, LatencyBasedLoadBalancingRule] diff --git a/src/truefoundry_sdk/types/load_balancing_when.py b/src/truefoundry_sdk/types/load_balancing_when.py new file mode 100644 index 00000000..b854e043 --- /dev/null +++ b/src/truefoundry_sdk/types/load_balancing_when.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class LoadBalancingWhen(UniversalBaseModel): + subjects: typing.Optional[typing.List[str]] = None + models: typing.List[str] + metadata: typing.Optional[typing.Dict[str, str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/mcp_server_auth.py b/src/truefoundry_sdk/types/mcp_server_auth.py new file mode 100644 index 00000000..6b9f46ca --- /dev/null +++ b/src/truefoundry_sdk/types/mcp_server_auth.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .mcp_server_header_auth import McpServerHeaderAuth +from .mcp_server_o_auth2 import McpServerOAuth2 + +McpServerAuth = typing.Union[McpServerHeaderAuth, McpServerOAuth2] diff --git a/src/truefoundry_sdk/types/mcp_server_header_auth.py b/src/truefoundry_sdk/types/mcp_server_header_auth.py new file mode 100644 index 00000000..5f1d65d6 --- /dev/null +++ b/src/truefoundry_sdk/types/mcp_server_header_auth.py @@ -0,0 +1,27 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class McpServerHeaderAuth(UniversalBaseModel): + """ + +label=Header Auth + """ + + type: typing.Literal["header"] = pydantic.Field(default="header") + """ + +value=header + """ + + headers: typing.Dict[str, str] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/mcp_server_integration.py b/src/truefoundry_sdk/types/mcp_server_integration.py new file mode 100644 index 00000000..f4356450 --- /dev/null +++ b/src/truefoundry_sdk/types/mcp_server_integration.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .mcp_server_auth import McpServerAuth + + +class McpServerIntegration(UniversalBaseModel): + """ + +label=MCP Server + +icon=puzzle-piece + """ + + type: typing.Literal["integration/mcp-server/hosted-mcp-server"] = pydantic.Field( + default="integration/mcp-server/hosted-mcp-server" + ) + """ + +value=integration/mcp-server/hosted-mcp-server + """ + + name: str = pydantic.Field() + """ + +label=Name + +usage=The name of the MCP Server. + +sort=100 + """ + + description: str = pydantic.Field() + """ + +label=Description + +usage=Provide a brief description of the purpose of this MCP Server. + +uiType=TextArea + +message=1 to 1000 characters long, may contain any character except newlines + +sort=200 + +uiProps={"descriptionInline":true} + """ + + url: str = pydantic.Field() + """ + +label=URL + +usage=The endpoint URL for the MCP Server. The system will first try a connection using streamable-http transport on this URL. If that fails, it will attempt a connection using SSE transport on /sse. + +sort=300 + """ + + auth_data: typing.Optional[McpServerAuth] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/mcp_server_integrations.py b/src/truefoundry_sdk/types/mcp_server_integrations.py new file mode 100644 index 00000000..e61b35c4 --- /dev/null +++ b/src/truefoundry_sdk/types/mcp_server_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .mcp_server_integration import McpServerIntegration + +McpServerIntegrations = McpServerIntegration diff --git a/src/truefoundry_sdk/types/mcp_server_o_auth2.py b/src/truefoundry_sdk/types/mcp_server_o_auth2.py new file mode 100644 index 00000000..36d46cca --- /dev/null +++ b/src/truefoundry_sdk/types/mcp_server_o_auth2.py @@ -0,0 +1,26 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from .base_o_auth2login import BaseOAuth2Login + + +class McpServerOAuth2(BaseOAuth2Login): + """ + +label=OAuth2 + """ + + type: typing.Optional[typing.Literal["oauth2"]] = pydantic.Field(default=None) + """ + +value=oauth2 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/mcp_server_provider_account.py b/src/truefoundry_sdk/types/mcp_server_provider_account.py new file mode 100644 index 00000000..cc11c6d5 --- /dev/null +++ b/src/truefoundry_sdk/types/mcp_server_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .mcp_server_integrations import McpServerIntegrations + + +class McpServerProviderAccount(UniversalBaseModel): + """ + +label=MCP Server Group + +icon=puzzle-piece + """ + + type: typing.Literal["provider-account/hosted-mcp-server"] = pydantic.Field( + default="provider-account/hosted-mcp-server" + ) + """ + +value=provider-account/hosted-mcp-server + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the MCP Server Group. + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=200 + +usage=List of users who have access to this MCP Server Group. + +uiType=Collaborators + """ + + integrations: typing.List[McpServerIntegrations] = pydantic.Field() + """ + +label=MCP Servers + +usage=List of MCP Servers, which are part of this MCP Server Group. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/mistral_ai_integrations.py b/src/truefoundry_sdk/types/mistral_ai_integrations.py new file mode 100644 index 00000000..6a51934d --- /dev/null +++ b/src/truefoundry_sdk/types/mistral_ai_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .mistral_ai_model import MistralAiModel + +MistralAiIntegrations = MistralAiModel diff --git a/src/truefoundry_sdk/types/mistral_ai_key_auth.py b/src/truefoundry_sdk/types/mistral_ai_key_auth.py new file mode 100644 index 00000000..7e4757e5 --- /dev/null +++ b/src/truefoundry_sdk/types/mistral_ai_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class MistralAiKeyAuth(UniversalBaseModel): + """ + +label=Mistral AI API Key Auth + +icon=mistral-ai + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=The API key for Mistral AI authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/mistral_ai_model.py b/src/truefoundry_sdk/types/mistral_ai_model.py new file mode 100644 index 00000000..157457e2 --- /dev/null +++ b/src/truefoundry_sdk/types/mistral_ai_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class MistralAiModel(UniversalBaseModel): + """ + +label=Mistral AI Model + +icon=mistral-ai + """ + + type: typing.Literal["integration/model/mistral-ai"] = pydantic.Field(default="integration/model/mistral-ai") + """ + +value=integration/model/mistral-ai + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Mistral AI model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Mistral AI model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Mistral AI model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/mistral_ai_provider_account.py b/src/truefoundry_sdk/types/mistral_ai_provider_account.py new file mode 100644 index 00000000..6d3dd514 --- /dev/null +++ b/src/truefoundry_sdk/types/mistral_ai_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .mistral_ai_integrations import MistralAiIntegrations +from .mistral_ai_key_auth import MistralAiKeyAuth + + +class MistralAiProviderAccount(UniversalBaseModel): + """ + +label=Mistral AI Provider Account + +icon=mistral-ai + """ + + type: typing.Literal["provider-account/mistral-ai"] = pydantic.Field(default="provider-account/mistral-ai") + """ + +value=provider-account/mistral-ai + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Mistral AI provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: MistralAiKeyAuth + integrations: typing.Optional[typing.List[MistralAiIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the Mistral AI provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/model_config.py b/src/truefoundry_sdk/types/model_config.py new file mode 100644 index 00000000..08786b19 --- /dev/null +++ b/src/truefoundry_sdk/types/model_config.py @@ -0,0 +1,22 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .failure_tolerance_config import FailureToleranceConfig +from .usage_limits import UsageLimits + + +class ModelConfig(UniversalBaseModel): + model: str + usage_limits: typing.Optional[UsageLimits] = None + failure_tolerance: typing.Optional[FailureToleranceConfig] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/model_cost_metric.py b/src/truefoundry_sdk/types/model_cost_metric.py new file mode 100644 index 00000000..18d6deb3 --- /dev/null +++ b/src/truefoundry_sdk/types/model_cost_metric.py @@ -0,0 +1,9 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .per_thousand_embedding_tokens_cost_metric import PerThousandEmbeddingTokensCostMetric +from .per_thousand_tokens_cost_metric import PerThousandTokensCostMetric +from .public_cost_metric import PublicCostMetric + +ModelCostMetric = typing.Union[PerThousandTokensCostMetric, PerThousandEmbeddingTokensCostMetric, PublicCostMetric] diff --git a/src/truefoundry_sdk/types/model_provider_account.py b/src/truefoundry_sdk/types/model_provider_account.py new file mode 100644 index 00000000..fdea4144 --- /dev/null +++ b/src/truefoundry_sdk/types/model_provider_account.py @@ -0,0 +1,45 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .ai21provider_account import Ai21ProviderAccount +from .anthropic_provider_account import AnthropicProviderAccount +from .aws_bedrock_provider_account import AwsBedrockProviderAccount +from .azure_foundry_provider_account import AzureFoundryProviderAccount +from .azure_open_ai_provider_account import AzureOpenAiProviderAccount +from .cohere_provider_account import CohereProviderAccount +from .databricks_provider_account import DatabricksProviderAccount +from .deepinfra_provider_account import DeepinfraProviderAccount +from .google_gemini_provider_account import GoogleGeminiProviderAccount +from .google_vertex_provider_account import GoogleVertexProviderAccount +from .groq_provider_account import GroqProviderAccount +from .mistral_ai_provider_account import MistralAiProviderAccount +from .nomic_provider_account import NomicProviderAccount +from .ollama_provider_account import OllamaProviderAccount +from .openai_provider_account import OpenaiProviderAccount +from .palm_provider_account import PalmProviderAccount +from .perplexity_ai_provider_account import PerplexityAiProviderAccount +from .self_hosted_model_provider_account import SelfHostedModelProviderAccount +from .together_ai_provider_account import TogetherAiProviderAccount + +ModelProviderAccount = typing.Union[ + AwsBedrockProviderAccount, + GoogleVertexProviderAccount, + GoogleGeminiProviderAccount, + AzureOpenAiProviderAccount, + AzureFoundryProviderAccount, + CohereProviderAccount, + Ai21ProviderAccount, + AnthropicProviderAccount, + DeepinfraProviderAccount, + GroqProviderAccount, + MistralAiProviderAccount, + PerplexityAiProviderAccount, + TogetherAiProviderAccount, + NomicProviderAccount, + PalmProviderAccount, + OllamaProviderAccount, + OpenaiProviderAccount, + DatabricksProviderAccount, + SelfHostedModelProviderAccount, +] diff --git a/src/truefoundry_sdk/types/model_type.py b/src/truefoundry_sdk/types/model_type.py new file mode 100644 index 00000000..03bb42fc --- /dev/null +++ b/src/truefoundry_sdk/types/model_type.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class ModelType(str, enum.Enum): + """ + +label=Model Type + +uiType=Select + """ + + CHAT = "chat" + COMPLETION = "completion" + EMBEDDING = "embedding" + REALTIME = "realtime" + RERANK = "rerank" + AUDIO = "audio" + MODERATION = "moderation" + + def visit( + self, + chat: typing.Callable[[], T_Result], + completion: typing.Callable[[], T_Result], + embedding: typing.Callable[[], T_Result], + realtime: typing.Callable[[], T_Result], + rerank: typing.Callable[[], T_Result], + audio: typing.Callable[[], T_Result], + moderation: typing.Callable[[], T_Result], + ) -> T_Result: + if self is ModelType.CHAT: + return chat() + if self is ModelType.COMPLETION: + return completion() + if self is ModelType.EMBEDDING: + return embedding() + if self is ModelType.REALTIME: + return realtime() + if self is ModelType.RERANK: + return rerank() + if self is ModelType.AUDIO: + return audio() + if self is ModelType.MODERATION: + return moderation() diff --git a/src/truefoundry_sdk/types/nomic_integrations.py b/src/truefoundry_sdk/types/nomic_integrations.py new file mode 100644 index 00000000..0bbeb3a4 --- /dev/null +++ b/src/truefoundry_sdk/types/nomic_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .nomic_model import NomicModel + +NomicIntegrations = NomicModel diff --git a/src/truefoundry_sdk/types/nomic_key_auth.py b/src/truefoundry_sdk/types/nomic_key_auth.py new file mode 100644 index 00000000..8b8ff5e7 --- /dev/null +++ b/src/truefoundry_sdk/types/nomic_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class NomicKeyAuth(UniversalBaseModel): + """ + +label=Nomic API Key Auth + +icon=nomic + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=The API key for Nomic authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/nomic_model.py b/src/truefoundry_sdk/types/nomic_model.py new file mode 100644 index 00000000..32c22376 --- /dev/null +++ b/src/truefoundry_sdk/types/nomic_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class NomicModel(UniversalBaseModel): + """ + +label=Nomic Model + +icon=nomic + """ + + type: typing.Literal["integration/model/nomic"] = pydantic.Field(default="integration/model/nomic") + """ + +value=integration/model/nomic + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Nomic model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Nomic model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Nomic model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/nomic_provider_account.py b/src/truefoundry_sdk/types/nomic_provider_account.py new file mode 100644 index 00000000..26f27f8d --- /dev/null +++ b/src/truefoundry_sdk/types/nomic_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .nomic_integrations import NomicIntegrations +from .nomic_key_auth import NomicKeyAuth + + +class NomicProviderAccount(UniversalBaseModel): + """ + +label=Nomic Provider Account + +icon=nomic + """ + + type: typing.Literal["provider-account/nomic"] = pydantic.Field(default="provider-account/nomic") + """ + +value=provider-account/nomic + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Nomic provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: NomicKeyAuth + integrations: typing.Optional[typing.List[NomicIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the Nomic provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/notification_target_for_alert_rule.py b/src/truefoundry_sdk/types/notification_target_for_alert_rule.py new file mode 100644 index 00000000..08427567 --- /dev/null +++ b/src/truefoundry_sdk/types/notification_target_for_alert_rule.py @@ -0,0 +1,9 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .email import Email +from .pager_duty import PagerDuty +from .slack_bot import SlackBot + +NotificationTargetForAlertRule = typing.Union[Email, SlackBot, PagerDuty] diff --git a/src/truefoundry_sdk/types/o_auth2login_provider.py b/src/truefoundry_sdk/types/o_auth2login_provider.py new file mode 100644 index 00000000..943de518 --- /dev/null +++ b/src/truefoundry_sdk/types/o_auth2login_provider.py @@ -0,0 +1,22 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from .base_o_auth2login import BaseOAuth2Login + + +class OAuth2LoginProvider(BaseOAuth2Login): + type: typing.Optional[typing.Literal["oauth2"]] = pydantic.Field(default=None) + """ + +value=oauth2 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/ollama_integrations.py b/src/truefoundry_sdk/types/ollama_integrations.py new file mode 100644 index 00000000..472120e8 --- /dev/null +++ b/src/truefoundry_sdk/types/ollama_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .ollama_model import OllamaModel + +OllamaIntegrations = OllamaModel diff --git a/src/truefoundry_sdk/types/ollama_key_auth.py b/src/truefoundry_sdk/types/ollama_key_auth.py new file mode 100644 index 00000000..4990ddd9 --- /dev/null +++ b/src/truefoundry_sdk/types/ollama_key_auth.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class OllamaKeyAuth(UniversalBaseModel): + """ + +label=Ollama API Key Auth + +icon=ollama + """ + + custom_host: str = pydantic.Field() + """ + +label=Custom Host + +sort=100 + +usage=The custom host URL for Ollama API + +message=Host URL must not be empty + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/ollama_model.py b/src/truefoundry_sdk/types/ollama_model.py new file mode 100644 index 00000000..295bebd3 --- /dev/null +++ b/src/truefoundry_sdk/types/ollama_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class OllamaModel(UniversalBaseModel): + """ + +label=Ollama Model + +icon=ollama + """ + + type: typing.Literal["integration/model/ollama"] = pydantic.Field(default="integration/model/ollama") + """ + +value=integration/model/ollama + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Ollama model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Ollama model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Ollama model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/ollama_provider_account.py b/src/truefoundry_sdk/types/ollama_provider_account.py new file mode 100644 index 00000000..f2e9d940 --- /dev/null +++ b/src/truefoundry_sdk/types/ollama_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .ollama_integrations import OllamaIntegrations +from .ollama_key_auth import OllamaKeyAuth + + +class OllamaProviderAccount(UniversalBaseModel): + """ + +label=Ollama Provider Account + +icon=ollama + """ + + type: typing.Literal["provider-account/ollama"] = pydantic.Field(default="provider-account/ollama") + """ + +value=provider-account/ollama + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Ollama provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: OllamaKeyAuth + integrations: typing.List[OllamaIntegrations] = pydantic.Field() + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the Ollama provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/open_ai_integrations.py b/src/truefoundry_sdk/types/open_ai_integrations.py new file mode 100644 index 00000000..9d16e4d6 --- /dev/null +++ b/src/truefoundry_sdk/types/open_ai_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .open_ai_model import OpenAiModel + +OpenAiIntegrations = OpenAiModel diff --git a/src/truefoundry_sdk/types/open_ai_model.py b/src/truefoundry_sdk/types/open_ai_model.py new file mode 100644 index 00000000..85f588df --- /dev/null +++ b/src/truefoundry_sdk/types/open_ai_model.py @@ -0,0 +1,61 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class OpenAiModel(UniversalBaseModel): + """ + +label=OpenAI Model + +icon=openai + """ + + type: typing.Literal["integration/model/openai"] = pydantic.Field(default="integration/model/openai") + """ + +value=integration/model/openai + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this OpenAI model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the OpenAI model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the OpenAI model + +uiType=Select + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/openai_api_key_auth.py b/src/truefoundry_sdk/types/openai_api_key_auth.py new file mode 100644 index 00000000..088d2c22 --- /dev/null +++ b/src/truefoundry_sdk/types/openai_api_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class OpenaiApiKeyAuth(UniversalBaseModel): + """ + +label=OpenAI API Key Auth + +icon=openai + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=Your OpenAI API key for authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/openai_provider_account.py b/src/truefoundry_sdk/types/openai_provider_account.py new file mode 100644 index 00000000..9c890c6c --- /dev/null +++ b/src/truefoundry_sdk/types/openai_provider_account.py @@ -0,0 +1,63 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .open_ai_integrations import OpenAiIntegrations +from .openai_api_key_auth import OpenaiApiKeyAuth + + +class OpenaiProviderAccount(UniversalBaseModel): + """ + +label=OpenAI Provider Account + +icon=openai + """ + + type: typing.Literal["provider-account/openai"] = pydantic.Field(default="provider-account/openai") + """ + +value=provider-account/openai + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the OpenAI provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: OpenaiApiKeyAuth + base_url: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Base URL + +sort=300 + +usage=Optional custom base URL for OpenAI API + +message=Base URL must not be empty + """ + + integrations: typing.List[OpenAiIntegrations] = pydantic.Field() + """ + +label=Integrations + +sort=400 + +usage=List of integrations that are associated with the OpenAI provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=500 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/pager_duty.py b/src/truefoundry_sdk/types/pager_duty.py new file mode 100644 index 00000000..a18d5168 --- /dev/null +++ b/src/truefoundry_sdk/types/pager_duty.py @@ -0,0 +1,30 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PagerDuty(UniversalBaseModel): + type: typing.Literal["pagerduty"] = pydantic.Field(default="pagerduty") + """ + +value=pagerduty + """ + + notification_channel: str = pydantic.Field() + """ + +label=Notification Channel + +usage=Specify the notification channel to send alerts to + +uiType=AlertNotificationChannel + +uiProps={"integrationType":"notification-channel"} + +sort=660 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/pager_duty_integration.py b/src/truefoundry_sdk/types/pager_duty_integration.py new file mode 100644 index 00000000..dfd8c3fd --- /dev/null +++ b/src/truefoundry_sdk/types/pager_duty_integration.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .pager_duty_integration_key_auth import PagerDutyIntegrationKeyAuth + + +class PagerDutyIntegration(UniversalBaseModel): + """ + +label=PagerDuty Integration + +icon=https://assets.production.truefoundry.com/pagerduty.png + """ + + type: typing.Literal["integration/notification-channel/pagerduty"] = pydantic.Field( + default="integration/notification-channel/pagerduty" + ) + """ + +value=integration/notification-channel/pagerduty + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=100 + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +uiProps={"disableEdit":false} + """ + + auth_data: PagerDutyIntegrationKeyAuth + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=10005 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/pager_duty_integration_key_auth.py b/src/truefoundry_sdk/types/pager_duty_integration_key_auth.py new file mode 100644 index 00000000..55ce9943 --- /dev/null +++ b/src/truefoundry_sdk/types/pager_duty_integration_key_auth.py @@ -0,0 +1,42 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PagerDutyIntegrationKeyAuth(UniversalBaseModel): + """ + +label=PagerDuty Credentails + """ + + type: typing.Literal["pagerduty-integration-auth"] = pydantic.Field(default="pagerduty-integration-auth") + """ + +value=pagerduty-integration-auth + """ + + integration_key: str = pydantic.Field() + """ + +label=Integration Key + +sort=100 + +usage=The integration key for the PagerDuty integration + +uiType=Password + """ + + integration_url: str = pydantic.Field() + """ + +label=Integration URL + +sort=200 + +usage=The integration URL for the PagerDuty integration + +docs=The integration URL for the PagerDuty integration. This is the URL that will be used to send events to PagerDuty. eg. https://events.pagerduty.com/generic/2010-04-15/create_event.json + +placeholder=https://events.pagerduty.com/generic/2010-04-15/create_event.json + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/pager_duty_integrations.py b/src/truefoundry_sdk/types/pager_duty_integrations.py new file mode 100644 index 00000000..b6ff58f0 --- /dev/null +++ b/src/truefoundry_sdk/types/pager_duty_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .pager_duty_integration import PagerDutyIntegration + +PagerDutyIntegrations = PagerDutyIntegration diff --git a/src/truefoundry_sdk/types/pager_duty_provider_account.py b/src/truefoundry_sdk/types/pager_duty_provider_account.py new file mode 100644 index 00000000..d0b8078d --- /dev/null +++ b/src/truefoundry_sdk/types/pager_duty_provider_account.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .pager_duty_integrations import PagerDutyIntegrations + + +class PagerDutyProviderAccount(UniversalBaseModel): + """ + +label=PagerDuty Provider Account + +icon=https://assets.production.truefoundry.com/pagerduty.png + """ + + type: typing.Literal["provider-account/pagerduty"] = pydantic.Field(default="provider-account/pagerduty") + """ + +value=provider-account/pagerduty + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the PagerDuty provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + integrations: typing.List[PagerDutyIntegrations] = pydantic.Field() + """ + +label=Integrations + +sort=500 + +usage=List of integrations that are associated with the PagerDuty provider account + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/palm_integrations.py b/src/truefoundry_sdk/types/palm_integrations.py new file mode 100644 index 00000000..78d41c48 --- /dev/null +++ b/src/truefoundry_sdk/types/palm_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .palm_model import PalmModel + +PalmIntegrations = PalmModel diff --git a/src/truefoundry_sdk/types/palm_key_auth.py b/src/truefoundry_sdk/types/palm_key_auth.py new file mode 100644 index 00000000..ce634635 --- /dev/null +++ b/src/truefoundry_sdk/types/palm_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PalmKeyAuth(UniversalBaseModel): + """ + +label=PaLM API Key Auth + +icon=palm + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=Your PaLM API key for authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/palm_model.py b/src/truefoundry_sdk/types/palm_model.py new file mode 100644 index 00000000..343eeb60 --- /dev/null +++ b/src/truefoundry_sdk/types/palm_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class PalmModel(UniversalBaseModel): + """ + +label=PaLM Model + +icon=palm + """ + + type: typing.Literal["integration/model/palm"] = pydantic.Field(default="integration/model/palm") + """ + +value=integration/model/palm + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this PaLM model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the PaLM model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the PaLM model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/palm_provider_account.py b/src/truefoundry_sdk/types/palm_provider_account.py new file mode 100644 index 00000000..e01ee88b --- /dev/null +++ b/src/truefoundry_sdk/types/palm_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .palm_integrations import PalmIntegrations +from .palm_key_auth import PalmKeyAuth + + +class PalmProviderAccount(UniversalBaseModel): + """ + +label=PaLM Provider Account + +icon=palm + """ + + type: typing.Literal["provider-account/palm"] = pydantic.Field(default="provider-account/palm") + """ + +value=provider-account/palm + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the PaLM provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: PalmKeyAuth + integrations: typing.Optional[typing.List[PalmIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the PaLM provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/per_thousand_embedding_tokens_cost_metric.py b/src/truefoundry_sdk/types/per_thousand_embedding_tokens_cost_metric.py new file mode 100644 index 00000000..0536eb62 --- /dev/null +++ b/src/truefoundry_sdk/types/per_thousand_embedding_tokens_cost_metric.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PerThousandEmbeddingTokensCostMetric(UniversalBaseModel): + metric: str = pydantic.Field() + """ + +value=per_1000_embedding_tokens + """ + + value: float + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/per_thousand_tokens_cost_metric.py b/src/truefoundry_sdk/types/per_thousand_tokens_cost_metric.py new file mode 100644 index 00000000..5f96f861 --- /dev/null +++ b/src/truefoundry_sdk/types/per_thousand_tokens_cost_metric.py @@ -0,0 +1,24 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .input_output_based_cost_metric_value import InputOutputBasedCostMetricValue + + +class PerThousandTokensCostMetric(UniversalBaseModel): + metric: str = pydantic.Field() + """ + +value=per_1000_tokens + """ + + value: InputOutputBasedCostMetricValue + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/perplexity_ai_key_auth.py b/src/truefoundry_sdk/types/perplexity_ai_key_auth.py new file mode 100644 index 00000000..5e402727 --- /dev/null +++ b/src/truefoundry_sdk/types/perplexity_ai_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PerplexityAiKeyAuth(UniversalBaseModel): + """ + +label=Perplexity AI API Key Auth + +icon=perplexity-ai + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=Your Perplexity AI API key for authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/perplexity_ai_model.py b/src/truefoundry_sdk/types/perplexity_ai_model.py new file mode 100644 index 00000000..30c05abc --- /dev/null +++ b/src/truefoundry_sdk/types/perplexity_ai_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class PerplexityAiModel(UniversalBaseModel): + """ + +label=Perplexity AI Model + +icon=perplexity-ai + """ + + type: typing.Literal["integration/model/perplexity-ai"] = pydantic.Field(default="integration/model/perplexity-ai") + """ + +value=integration/model/perplexity-ai + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Perplexity AI model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Perplexity AI model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Perplexity AI model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/perplexity_ai_provider_account.py b/src/truefoundry_sdk/types/perplexity_ai_provider_account.py new file mode 100644 index 00000000..69d225b8 --- /dev/null +++ b/src/truefoundry_sdk/types/perplexity_ai_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .perplexity_ai_key_auth import PerplexityAiKeyAuth +from .perplexity_integrations import PerplexityIntegrations + + +class PerplexityAiProviderAccount(UniversalBaseModel): + """ + +label=Perplexity AI Provider Account + +icon=perplexity-ai + """ + + type: typing.Literal["provider-account/perplexity-ai"] = pydantic.Field(default="provider-account/perplexity-ai") + """ + +value=provider-account/perplexity-ai + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Perplexity AI provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: PerplexityAiKeyAuth + integrations: typing.Optional[typing.List[PerplexityIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the Perplexity AI provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/perplexity_integrations.py b/src/truefoundry_sdk/types/perplexity_integrations.py new file mode 100644 index 00000000..e1d0bc94 --- /dev/null +++ b/src/truefoundry_sdk/types/perplexity_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .perplexity_ai_model import PerplexityAiModel + +PerplexityIntegrations = PerplexityAiModel diff --git a/src/truefoundry_sdk/types/policy_actions.py b/src/truefoundry_sdk/types/policy_actions.py new file mode 100644 index 00000000..80f57ac9 --- /dev/null +++ b/src/truefoundry_sdk/types/policy_actions.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +PolicyActions = typing.Literal["apply"] diff --git a/src/truefoundry_sdk/types/policy_entity_types.py b/src/truefoundry_sdk/types/policy_entity_types.py new file mode 100644 index 00000000..fa541140 --- /dev/null +++ b/src/truefoundry_sdk/types/policy_entity_types.py @@ -0,0 +1,41 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class PolicyEntityTypes(str, enum.Enum): + SERVICE = "service" + ASYNC_SERVICE = "async-service" + JOB = "job" + NOTEBOOK = "notebook" + SSH_SERVER = "ssh-server" + WORKFLOW = "workflow" + HELM = "helm" + + def visit( + self, + service: typing.Callable[[], T_Result], + async_service: typing.Callable[[], T_Result], + job: typing.Callable[[], T_Result], + notebook: typing.Callable[[], T_Result], + ssh_server: typing.Callable[[], T_Result], + workflow: typing.Callable[[], T_Result], + helm: typing.Callable[[], T_Result], + ) -> T_Result: + if self is PolicyEntityTypes.SERVICE: + return service() + if self is PolicyEntityTypes.ASYNC_SERVICE: + return async_service() + if self is PolicyEntityTypes.JOB: + return job() + if self is PolicyEntityTypes.NOTEBOOK: + return notebook() + if self is PolicyEntityTypes.SSH_SERVER: + return ssh_server() + if self is PolicyEntityTypes.WORKFLOW: + return workflow() + if self is PolicyEntityTypes.HELM: + return helm() diff --git a/src/truefoundry_sdk/types/policy_filters.py b/src/truefoundry_sdk/types/policy_filters.py new file mode 100644 index 00000000..a292c614 --- /dev/null +++ b/src/truefoundry_sdk/types/policy_filters.py @@ -0,0 +1,41 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PolicyFilters(UniversalBaseModel): + """ + +label=Filters + """ + + cluster_names: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Clusters + +usage=Cluster names where Policy applies + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + workspace_names: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Workspaces + +usage=Workspace names where Policy applies + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + env_names: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Environments + +usage=Environment names where Policy applies + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/policy_manifest.py b/src/truefoundry_sdk/types/policy_manifest.py new file mode 100644 index 00000000..4d20029d --- /dev/null +++ b/src/truefoundry_sdk/types/policy_manifest.py @@ -0,0 +1,85 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .policy_actions import PolicyActions +from .policy_entity_types import PolicyEntityTypes +from .policy_filters import PolicyFilters +from .policy_manifest_mode import PolicyManifestMode +from .policy_manifest_operation import PolicyManifestOperation + + +class PolicyManifest(UniversalBaseModel): + type: typing.Literal["policy"] = pydantic.Field(default="policy") + """ + +value=policy + """ + + name: str = pydantic.Field() + """ + +label=Name + +usage=Unique identifier of the policy across the organisation + +sort=2 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + description: str = pydantic.Field() + """ + +label=Description + +usage=Description of the policy that explains what the policy does, its purpose, and how it affects resources. This helps other users understand the policy's behavior and impact. + +sort=3 + ++uiProps={"descriptionInline":true} + +message=Description must be between 1 byte and 1024 bytes + """ + + operation: PolicyManifestOperation = pydantic.Field() + """ + +label=Policy Action + +usage=Defines if the policy validates or mutates resources. Validation policies check TrueFoundry manifests to ensure they meet conditions and can block deployments. Mutation policies modify Kubernetes manifests before they're applied to the cluster. See this [documentation](https://docs.truefoundry.com/docs/applying-custom-policies#applying-custom-policies) for more details. + +sort=4 + """ + + mode: PolicyManifestMode = pydantic.Field() + """ + +label=Mode + +usage=Mode of the policy: `Audit` logs all policy evaluations without blocking deployments. `Enforce` blocks deployments if the policy fails. `Disabled` deactivates the policy. + +uiType=MultiSelectPills + +sort=6 + """ + + entities: typing.List[PolicyEntityTypes] = pydantic.Field() + """ + +label=Entities + +usage=Types of applications this policy applies to + +uiType=MultiSelect + +sort=8 + """ + + actions: typing.List[PolicyActions] = pydantic.Field() + """ + +label=Actions + +usage=Actions this policy applies to + +uiType=Hidden + +sort=9 + """ + + filters: typing.Optional[PolicyFilters] = None + code: str = pydantic.Field() + """ + +label=Policy Code + +usage=TypeScript code for Policy logic. To write and test your policy code, please refer to this [repository](https://github.com/truefoundry/tfy-typescript-policy) + +sort=13 + +uiType=CodeEditor + +uiProps={"language":"typescript"} + +message=Code size must be between 1 byte and 10 KB + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/policy_manifest_mode.py b/src/truefoundry_sdk/types/policy_manifest_mode.py new file mode 100644 index 00000000..af0df6b8 --- /dev/null +++ b/src/truefoundry_sdk/types/policy_manifest_mode.py @@ -0,0 +1,32 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class PolicyManifestMode(str, enum.Enum): + """ + +label=Mode + +usage=Mode of the policy: `Audit` logs all policy evaluations without blocking deployments. `Enforce` blocks deployments if the policy fails. `Disabled` deactivates the policy. + +uiType=MultiSelectPills + +sort=6 + """ + + AUDIT = "audit" + ENFORCE = "enforce" + DISABLED = "disabled" + + def visit( + self, + audit: typing.Callable[[], T_Result], + enforce: typing.Callable[[], T_Result], + disabled: typing.Callable[[], T_Result], + ) -> T_Result: + if self is PolicyManifestMode.AUDIT: + return audit() + if self is PolicyManifestMode.ENFORCE: + return enforce() + if self is PolicyManifestMode.DISABLED: + return disabled() diff --git a/src/truefoundry_sdk/types/policy_manifest_operation.py b/src/truefoundry_sdk/types/policy_manifest_operation.py new file mode 100644 index 00000000..00acab23 --- /dev/null +++ b/src/truefoundry_sdk/types/policy_manifest_operation.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .policy_mutation_operation import PolicyMutationOperation +from .policy_validation_operation import PolicyValidationOperation + +PolicyManifestOperation = typing.Union[PolicyMutationOperation, PolicyValidationOperation] diff --git a/src/truefoundry_sdk/types/policy_mutation_operation.py b/src/truefoundry_sdk/types/policy_mutation_operation.py new file mode 100644 index 00000000..4714a6fc --- /dev/null +++ b/src/truefoundry_sdk/types/policy_mutation_operation.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PolicyMutationOperation(UniversalBaseModel): + """ + +label=Mutate + """ + + type: typing.Literal["mutate"] = pydantic.Field(default="mutate") + """ + +label=Action Type + +usage=Mutates or Validates Resources + +value=mutate + """ + + order: int = pydantic.Field() + """ + +label=Execution Order + +usage=Determines the sequence in which mutation policies are executed. Policies with lower order value run first, followed by higher value. For example, a policy with order 10 runs before one with order 20. This is crucial when multiple mutation policies need to run in a specific sequence. The order must be between 1 and 100. + +sort=5 + +message=Order must be a positive integer less than or equal to 100 + +uiProps={"descriptionInline":true} + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/policy_validation_operation.py b/src/truefoundry_sdk/types/policy_validation_operation.py new file mode 100644 index 00000000..541336c4 --- /dev/null +++ b/src/truefoundry_sdk/types/policy_validation_operation.py @@ -0,0 +1,27 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PolicyValidationOperation(UniversalBaseModel): + """ + +label=Validate + """ + + type: typing.Literal["validate"] = pydantic.Field(default="validate") + """ + +label=Action Type + +usage=Mutates or Validates Resources + +value=validate + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/prometheus_alert_rule.py b/src/truefoundry_sdk/types/prometheus_alert_rule.py new file mode 100644 index 00000000..cabbef63 --- /dev/null +++ b/src/truefoundry_sdk/types/prometheus_alert_rule.py @@ -0,0 +1,74 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .alert_severity import AlertSeverity + + +class PrometheusAlertRule(UniversalBaseModel): + """ + +label=Prometheus Alert Rule + """ + + type: typing.Literal["prometheus-alert-rule"] = pydantic.Field(default="prometheus-alert-rule") + """ + +label=Type + +value=prometheus-alert-rule + """ + + name: str = pydantic.Field() + """ + +label=Name + +usage=Enter a unique, descriptive name for your Prometheus alert rule. Choose a name that clearly indicates the condition being monitored. Please note that reserved alert names for TrueFoundry managed alerts are not allowed. For checking the list of reserved alert names, please refer to the documentation. + +uiProps={"descriptionInline":true} + +message=3 to 35 alphanumeric characters long, can contain - in between, cannot start with a number and cannot end with a - + +sort=1 + """ + + expression: str = pydantic.Field() + """ + +label=Prometheus Expression + +usage=Enter a valid PromQL expression that defines the condition for triggering this alert. The alert will fire when this expression evaluates to true for the duration specified in the duration to trigger alert field. + +uiProps={"descriptionInline":true, "language": "promql"} + +placeholder=sum(increase(container_cpu_cfs_throttled_periods_total{container="postgresql", namespace="prod-ws"}[5m])) by (container, namespace) / sum(increase(container_cpu_cfs_periods_total[5m])) by (container, namespace) > ( 25 / 100 ) + +sort=3 + +uiType=CodeEditor + """ + + for_: typing_extensions.Annotated[float, FieldMetadata(alias="for")] = pydantic.Field() + """ + +label=Trigger After (seconds) + +placeholder=300 + +usage=The prometheus expression must remain true for this duration (in seconds) before the alert is triggered. If the condition becomes false before this time elapses, the alert will not fire. + +sort=4 + """ + + severity: AlertSeverity + description: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Description + +usage=Description of the alert rule which will be displayed in the alert rule list. This can be used to provide more context about the alert rule. + +uiProps={"descriptionInline":true} + +placeholder=CPU throttled for more than 25% of the time in the last 5 minutes for + +sort=2 + """ + + notification_enabled: bool = pydantic.Field(default=True) + """ + +label=Notification Enabled + +usage=When enabled, notifications will be sent to all configured target channels when the alert conditions are met. + +uiProps={"descriptionInline":true} + +sort=7 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/provider_accounts.py b/src/truefoundry_sdk/types/provider_accounts.py new file mode 100644 index 00000000..efd12a7f --- /dev/null +++ b/src/truefoundry_sdk/types/provider_accounts.py @@ -0,0 +1,9 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .infra_provider_account import InfraProviderAccount +from .mcp_server_provider_account import McpServerProviderAccount +from .model_provider_account import ModelProviderAccount + +ProviderAccounts = typing.Union[InfraProviderAccount, ModelProviderAccount, McpServerProviderAccount] diff --git a/src/truefoundry_sdk/types/public_cost_metric.py b/src/truefoundry_sdk/types/public_cost_metric.py new file mode 100644 index 00000000..8e3aebae --- /dev/null +++ b/src/truefoundry_sdk/types/public_cost_metric.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PublicCostMetric(UniversalBaseModel): + metric: str = pydantic.Field() + """ + +value=public_cost + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/quay_artifacts_registry.py b/src/truefoundry_sdk/types/quay_artifacts_registry.py new file mode 100644 index 00000000..5f5ee44b --- /dev/null +++ b/src/truefoundry_sdk/types/quay_artifacts_registry.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .quay_basic_auth import QuayBasicAuth + + +class QuayArtifactsRegistry(UniversalBaseModel): + """ + +label=Quay Artifacts Registry + +icon=quay + """ + + type: typing.Literal["integration/docker-registry/quay"] = pydantic.Field( + default="integration/docker-registry/quay" + ) + """ + +value=integration/docker-registry/quay + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + registry_url: str = pydantic.Field() + """ + +label=Registry URL + +usage=The URL of the registry. + +sort=200 + """ + + auth_data: typing.Optional[QuayBasicAuth] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/quay_basic_auth.py b/src/truefoundry_sdk/types/quay_basic_auth.py new file mode 100644 index 00000000..61a7ee4c --- /dev/null +++ b/src/truefoundry_sdk/types/quay_basic_auth.py @@ -0,0 +1,40 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class QuayBasicAuth(UniversalBaseModel): + """ + +label=Quay Basic Auth + """ + + type: typing.Literal["basic-auth"] = pydantic.Field(default="basic-auth") + """ + +value=basic-auth + """ + + username: str = pydantic.Field() + """ + +label=Username + +usage=The username for the basic authentication. + +sort=100 + """ + + password: str = pydantic.Field() + """ + +label=Password + +usage=The password for the basic authentication. + +sort=200 + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/quay_integrations.py b/src/truefoundry_sdk/types/quay_integrations.py new file mode 100644 index 00000000..f2820c2d --- /dev/null +++ b/src/truefoundry_sdk/types/quay_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .quay_artifacts_registry import QuayArtifactsRegistry + +QuayIntegrations = QuayArtifactsRegistry diff --git a/src/truefoundry_sdk/types/quay_provider_account.py b/src/truefoundry_sdk/types/quay_provider_account.py new file mode 100644 index 00000000..5c586b4b --- /dev/null +++ b/src/truefoundry_sdk/types/quay_provider_account.py @@ -0,0 +1,53 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .quay_basic_auth import QuayBasicAuth +from .quay_integrations import QuayIntegrations + + +class QuayProviderAccount(UniversalBaseModel): + """ + +label=Quay + +icon=puzzle-piece + """ + + type: typing.Literal["provider-account/quay"] = pydantic.Field(default="provider-account/quay") + """ + +value=provider-account/quay + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + account_name: typing.Optional[str] = pydantic.Field(default=None) + """ + +label=Account Name + +usage=The name of the account on Quay. + +sort=200 + """ + + auth_data: typing.Optional[QuayBasicAuth] = None + integrations: typing.List[QuayIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/rate_limit_config.py b/src/truefoundry_sdk/types/rate_limit_config.py new file mode 100644 index 00000000..3965c4e6 --- /dev/null +++ b/src/truefoundry_sdk/types/rate_limit_config.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .rate_limit_rule import RateLimitRule + + +class RateLimitConfig(UniversalBaseModel): + name: str + type: typing.Literal["gateway-rate-limiting-config"] = "gateway-rate-limiting-config" + rules: typing.List[RateLimitRule] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/rate_limit_rule.py b/src/truefoundry_sdk/types/rate_limit_rule.py new file mode 100644 index 00000000..0ac9c3f6 --- /dev/null +++ b/src/truefoundry_sdk/types/rate_limit_rule.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .rate_limit_unit import RateLimitUnit +from .rate_limit_when import RateLimitWhen + + +class RateLimitRule(UniversalBaseModel): + id: str + when: RateLimitWhen + limit_to: int + unit: RateLimitUnit + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/rate_limit_unit.py b/src/truefoundry_sdk/types/rate_limit_unit.py new file mode 100644 index 00000000..084c7225 --- /dev/null +++ b/src/truefoundry_sdk/types/rate_limit_unit.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class RateLimitUnit(str, enum.Enum): + REQUESTS_PER_DAY = "requests_per_day" + TOKENS_PER_MINUTE = "tokens_per_minute" + REQUESTS_PER_MINUTE = "requests_per_minute" + TOKENS_PER_DAY = "tokens_per_day" + REQUESTS_PER_HOUR = "requests_per_hour" + TOKENS_PER_HOUR = "tokens_per_hour" + + def visit( + self, + requests_per_day: typing.Callable[[], T_Result], + tokens_per_minute: typing.Callable[[], T_Result], + requests_per_minute: typing.Callable[[], T_Result], + tokens_per_day: typing.Callable[[], T_Result], + requests_per_hour: typing.Callable[[], T_Result], + tokens_per_hour: typing.Callable[[], T_Result], + ) -> T_Result: + if self is RateLimitUnit.REQUESTS_PER_DAY: + return requests_per_day() + if self is RateLimitUnit.TOKENS_PER_MINUTE: + return tokens_per_minute() + if self is RateLimitUnit.REQUESTS_PER_MINUTE: + return requests_per_minute() + if self is RateLimitUnit.TOKENS_PER_DAY: + return tokens_per_day() + if self is RateLimitUnit.REQUESTS_PER_HOUR: + return requests_per_hour() + if self is RateLimitUnit.TOKENS_PER_HOUR: + return tokens_per_hour() diff --git a/src/truefoundry_sdk/types/rate_limit_when.py b/src/truefoundry_sdk/types/rate_limit_when.py new file mode 100644 index 00000000..9484407a --- /dev/null +++ b/src/truefoundry_sdk/types/rate_limit_when.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class RateLimitWhen(UniversalBaseModel): + subjects: typing.Optional[typing.List[str]] = None + models: typing.Optional[typing.List[str]] = None + metadata: typing.Optional[typing.Dict[str, str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/self_hosted_model.py b/src/truefoundry_sdk/types/self_hosted_model.py new file mode 100644 index 00000000..76441a18 --- /dev/null +++ b/src/truefoundry_sdk/types/self_hosted_model.py @@ -0,0 +1,92 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType +from .self_hosted_model_auth_data import SelfHostedModelAuthData +from .self_hosted_model_model_server import SelfHostedModelModelServer + + +class SelfHostedModel(UniversalBaseModel): + """ + +label=Self Hosted Model Integration + +icon=puzzle-piece + """ + + type: typing.Literal["integration/model/self-hosted-model"] = pydantic.Field( + default="integration/model/self-hosted-model" + ) + """ + +value=integration/model/self-hosted-model + """ + + name: str = pydantic.Field() + """ + +sort=1 + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + hosted_model_name: str = pydantic.Field() + """ + +label=Hosted Model Name + +sort=2 + +usage=The name of the hosted model + """ + + url: str = pydantic.Field() + """ + +sort=3 + +message=enter valid https/http URL that should not end with trailing slash + """ + + model_server: SelfHostedModelModelServer = pydantic.Field() + """ + +sort=4 + +label=Model Server Type + +usage=The type of model server being used + """ + + tfy_application_id: typing.Optional[str] = pydantic.Field(default=None) + """ + +uiType=Hidden + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +usage=Specify the type of the model + +sort=4 + """ + + auth_data: typing.Optional[SelfHostedModelAuthData] = pydantic.Field(default=None) + """ + +label=Auth Data + +usage=SelfHostedModel authentication data for the integration. + +sort=300 + """ + + headers: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None) + """ + +label=SelfHostedModel Headers + +usage=SelfHostedModel headers for the integration. Forwarded to the provider as is. For example: `{"Authorization": "APIKey "}` + +sort=500 + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/self_hosted_model_auth_data.py b/src/truefoundry_sdk/types/self_hosted_model_auth_data.py new file mode 100644 index 00000000..8fcb3086 --- /dev/null +++ b/src/truefoundry_sdk/types/self_hosted_model_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .custom_basic_auth import CustomBasicAuth +from .custom_bearer_auth import CustomBearerAuth + +SelfHostedModelAuthData = typing.Union[CustomBasicAuth, CustomBearerAuth] diff --git a/src/truefoundry_sdk/types/self_hosted_model_integrations.py b/src/truefoundry_sdk/types/self_hosted_model_integrations.py new file mode 100644 index 00000000..7fa8db58 --- /dev/null +++ b/src/truefoundry_sdk/types/self_hosted_model_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .self_hosted_model import SelfHostedModel + +SelfHostedModelIntegrations = SelfHostedModel diff --git a/src/truefoundry_sdk/types/self_hosted_model_model_server.py b/src/truefoundry_sdk/types/self_hosted_model_model_server.py new file mode 100644 index 00000000..eef84a03 --- /dev/null +++ b/src/truefoundry_sdk/types/self_hosted_model_model_server.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class SelfHostedModelModelServer(str, enum.Enum): + """ + +sort=4 + +label=Model Server Type + +usage=The type of model server being used + """ + + VLLM_OPENAI = "vllm-openai" + TEI = "tei" + INFINITY = "infinity" + NEMO_RETRIEVER = "nemo-retriever" + + def visit( + self, + vllm_openai: typing.Callable[[], T_Result], + tei: typing.Callable[[], T_Result], + infinity: typing.Callable[[], T_Result], + nemo_retriever: typing.Callable[[], T_Result], + ) -> T_Result: + if self is SelfHostedModelModelServer.VLLM_OPENAI: + return vllm_openai() + if self is SelfHostedModelModelServer.TEI: + return tei() + if self is SelfHostedModelModelServer.INFINITY: + return infinity() + if self is SelfHostedModelModelServer.NEMO_RETRIEVER: + return nemo_retriever() diff --git a/src/truefoundry_sdk/types/self_hosted_model_provider_account.py b/src/truefoundry_sdk/types/self_hosted_model_provider_account.py new file mode 100644 index 00000000..208560b9 --- /dev/null +++ b/src/truefoundry_sdk/types/self_hosted_model_provider_account.py @@ -0,0 +1,54 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .self_hosted_model_integrations import SelfHostedModelIntegrations + + +class SelfHostedModelProviderAccount(UniversalBaseModel): + """ + +label=Self Hosted + +icon=puzzle-piece + """ + + type: typing.Literal["provider-account/self-hosted-model"] = pydantic.Field( + default="provider-account/self-hosted-model" + ) + """ + +value=provider-account/self-hosted-model + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + integrations: typing.List[SelfHostedModelIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=200 + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/slack_bot_auth.py b/src/truefoundry_sdk/types/slack_bot_auth.py new file mode 100644 index 00000000..0d73efd9 --- /dev/null +++ b/src/truefoundry_sdk/types/slack_bot_auth.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class SlackBotAuth(UniversalBaseModel): + type: typing.Literal["slack-bot"] = pydantic.Field(default="slack-bot") + """ + +value=auth/slack-bot + """ + + bot_token: str = pydantic.Field() + """ + +label=Bot Token + +usage=The bot token for the slack bot to send messages to the channels. This bot should have the following permissions: chat:write, chat:write.public + +sort=100 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/slack_bot_integration.py b/src/truefoundry_sdk/types/slack_bot_integration.py new file mode 100644 index 00000000..a11632a8 --- /dev/null +++ b/src/truefoundry_sdk/types/slack_bot_integration.py @@ -0,0 +1,47 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .slack_bot_auth import SlackBotAuth + + +class SlackBotIntegration(UniversalBaseModel): + """ + +label=Slack Bot Integration + +icon=https://assets.production.truefoundry.com/slack.svg + """ + + type: typing.Literal["integration/notification-channel/slack-bot"] = pydantic.Field( + default="integration/notification-channel/slack-bot" + ) + """ + +value=integration/notification-channel/slack-bot + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +uiProps={"disableEdit":false} + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + auth_data: SlackBotAuth + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=10005 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/slack_integrations.py b/src/truefoundry_sdk/types/slack_integrations.py new file mode 100644 index 00000000..c504ff59 --- /dev/null +++ b/src/truefoundry_sdk/types/slack_integrations.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .slack_bot_integration import SlackBotIntegration +from .slack_webhook_integration import SlackWebhookIntegration + +SlackIntegrations = typing.Union[SlackWebhookIntegration, SlackBotIntegration] diff --git a/src/truefoundry_sdk/types/slack_provider_account.py b/src/truefoundry_sdk/types/slack_provider_account.py new file mode 100644 index 00000000..252d2dea --- /dev/null +++ b/src/truefoundry_sdk/types/slack_provider_account.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .slack_integrations import SlackIntegrations + + +class SlackProviderAccount(UniversalBaseModel): + """ + +label=Slack Provider Account + +icon=slack + """ + + type: typing.Literal["provider-account/slack"] = pydantic.Field(default="provider-account/slack") + """ + +value=provider-account/slack + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":false} + +label=Name + +usage=The name of the provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + integrations: typing.List[SlackIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/slack_webhook_auth.py b/src/truefoundry_sdk/types/slack_webhook_auth.py new file mode 100644 index 00000000..c6a38fd0 --- /dev/null +++ b/src/truefoundry_sdk/types/slack_webhook_auth.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class SlackWebhookAuth(UniversalBaseModel): + type: typing.Literal["slack-webhook"] = pydantic.Field(default="slack-webhook") + """ + +value=auth/slack-webhook + """ + + webhook_url: str = pydantic.Field() + """ + +label=Webhook URL + +usage=The URL of the slack webhook + +sort=100 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/slack_webhook_integration.py b/src/truefoundry_sdk/types/slack_webhook_integration.py new file mode 100644 index 00000000..59611512 --- /dev/null +++ b/src/truefoundry_sdk/types/slack_webhook_integration.py @@ -0,0 +1,47 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .slack_webhook_auth import SlackWebhookAuth + + +class SlackWebhookIntegration(UniversalBaseModel): + """ + +label=Slack Webhook Integration + +icon=https://assets.production.truefoundry.com/slack.svg + """ + + type: typing.Literal["integration/notification-channel/slack-webhook"] = pydantic.Field( + default="integration/notification-channel/slack-webhook" + ) + """ + +value=integration/notification-channel/slack-webhook + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +uiProps={"disableEdit":false} + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + auth_data: SlackWebhookAuth + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=10005 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/smtp_credentials.py b/src/truefoundry_sdk/types/smtp_credentials.py new file mode 100644 index 00000000..2c4f22e9 --- /dev/null +++ b/src/truefoundry_sdk/types/smtp_credentials.py @@ -0,0 +1,62 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class SmtpCredentials(UniversalBaseModel): + """ + +label=SMTP Credentials + """ + + type: typing.Literal["smtp-credentials"] = pydantic.Field(default="smtp-credentials") + """ + +value=smtp-credentials + +sort=250 + """ + + host: str = pydantic.Field() + """ + +label=Host + +usage=The SMTP host of the email server. + +sort=300 + """ + + username: str = pydantic.Field() + """ + +label=Username + +usage=The username for the SMTP server. + +sort=400 + """ + + password: str = pydantic.Field() + """ + +label=Password + +usage=The password for the SMTP server. + +sort=500 + +uiType=Password + """ + + port: int = pydantic.Field(default=587) + """ + +label=Port + +usage=The port of the SMTP server. + +sort=600 + """ + + tls: bool = pydantic.Field(default=True) + """ + +label=TLS + +usage=Whether to use TLS for the SMTP server. + +sort=700 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/together_ai_integrations.py b/src/truefoundry_sdk/types/together_ai_integrations.py new file mode 100644 index 00000000..7b9f6152 --- /dev/null +++ b/src/truefoundry_sdk/types/together_ai_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .together_ai_model import TogetherAiModel + +TogetherAiIntegrations = TogetherAiModel diff --git a/src/truefoundry_sdk/types/together_ai_key_auth.py b/src/truefoundry_sdk/types/together_ai_key_auth.py new file mode 100644 index 00000000..5ad747cf --- /dev/null +++ b/src/truefoundry_sdk/types/together_ai_key_auth.py @@ -0,0 +1,35 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class TogetherAiKeyAuth(UniversalBaseModel): + """ + +label=Together AI API Key Auth + +icon=together-ai + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + +label=API Key + +sort=100 + +usage=Your Together AI API key for authentication + +message=API key must not be empty + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/together_ai_model.py b/src/truefoundry_sdk/types/together_ai_model.py new file mode 100644 index 00000000..48dfe180 --- /dev/null +++ b/src/truefoundry_sdk/types/together_ai_model.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class TogetherAiModel(UniversalBaseModel): + """ + +label=Together AI Model + +icon=together-ai + """ + + type: typing.Literal["integration/model/together-ai"] = pydantic.Field(default="integration/model/together-ai") + """ + +value=integration/model/together-ai + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Together AI model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The name of the Together AI model to use + +message=Model ID must not be empty + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=3 + +usage=Specify the type of the Together AI model + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=5 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/together_ai_provider_account.py b/src/truefoundry_sdk/types/together_ai_provider_account.py new file mode 100644 index 00000000..71c977d2 --- /dev/null +++ b/src/truefoundry_sdk/types/together_ai_provider_account.py @@ -0,0 +1,55 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .collaborator import Collaborator +from .together_ai_integrations import TogetherAiIntegrations +from .together_ai_key_auth import TogetherAiKeyAuth + + +class TogetherAiProviderAccount(UniversalBaseModel): + """ + +label=Together AI Provider Account + +icon=together-ai + """ + + type: typing.Literal["provider-account/together-ai"] = pydantic.Field(default="provider-account/together-ai") + """ + +value=provider-account/together-ai + """ + + name: str = pydantic.Field() + """ + +label=Name + +sort=100 + +usage=The name of the Together AI provider account + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + +uiProps={"disableEdit":true} + """ + + auth_data: TogetherAiKeyAuth + integrations: typing.Optional[typing.List[TogetherAiIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +sort=300 + +usage=List of integrations that are associated with the Together AI provider account + +uiType=IntegrationsGroup + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + +label=Collaborators + +sort=400 + +usage=List of users who have access to this provider account + +uiType=Collaborators + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/true_foundry_apply_request_manifest.py b/src/truefoundry_sdk/types/true_foundry_apply_request_manifest.py new file mode 100644 index 00000000..76be457a --- /dev/null +++ b/src/truefoundry_sdk/types/true_foundry_apply_request_manifest.py @@ -0,0 +1,61 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .agent_manifest import AgentManifest +from .agent_open_api_tool_manifest import AgentOpenApiToolManifest +from .alert_config import AlertConfig +from .application_set import ApplicationSet +from .artifact_manifest import ArtifactManifest +from .async_service import AsyncService +from .chat_prompt_manifest import ChatPromptManifest +from .cluster_manifest import ClusterManifest +from .data_directory import DataDirectory +from .gateway_config import GatewayConfig +from .helm import Helm +from .job import Job +from .ml_repo_manifest import MlRepoManifest +from .model_manifest import ModelManifest +from .notebook import Notebook +from .policy_manifest import PolicyManifest +from .provider_accounts import ProviderAccounts +from .r_studio import RStudio +from .service import Service +from .spark_job import SparkJob +from .ssh_server import SshServer +from .team_manifest import TeamManifest +from .tracing_project_manifest import TracingProjectManifest +from .virtual_account_manifest import VirtualAccountManifest +from .volume import Volume +from .workflow import Workflow +from .workspace_manifest import WorkspaceManifest + +TrueFoundryApplyRequestManifest = typing.Union[ + MlRepoManifest, + ArtifactManifest, + ModelManifest, + ChatPromptManifest, + AgentOpenApiToolManifest, + AgentManifest, + DataDirectory, + Service, + ApplicationSet, + ProviderAccounts, + ClusterManifest, + WorkspaceManifest, + Job, + Helm, + Volume, + Notebook, + RStudio, + Workflow, + AsyncService, + SshServer, + SparkJob, + GatewayConfig, + TeamManifest, + PolicyManifest, + AlertConfig, + TracingProjectManifest, + VirtualAccountManifest, +] diff --git a/src/truefoundry_sdk/types/true_foundry_apply_response.py b/src/truefoundry_sdk/types/true_foundry_apply_response.py new file mode 100644 index 00000000..02c24e4b --- /dev/null +++ b/src/truefoundry_sdk/types/true_foundry_apply_response.py @@ -0,0 +1,32 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .true_foundry_apply_response_action import TrueFoundryApplyResponseAction +from .true_foundry_apply_response_existing_manifest import TrueFoundryApplyResponseExistingManifest + + +class TrueFoundryApplyResponse(UniversalBaseModel): + existing_manifest: typing_extensions.Annotated[ + typing.Optional[TrueFoundryApplyResponseExistingManifest], FieldMetadata(alias="existingManifest") + ] = pydantic.Field(default=None) + """ + The existing manifest of the resource + """ + + action: typing.Optional[TrueFoundryApplyResponseAction] = pydantic.Field(default=None) + """ + The action performed: CREATE or UPDATE + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/true_foundry_apply_response_action.py b/src/truefoundry_sdk/types/true_foundry_apply_response_action.py new file mode 100644 index 00000000..bd6f6003 --- /dev/null +++ b/src/truefoundry_sdk/types/true_foundry_apply_response_action.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class TrueFoundryApplyResponseAction(str, enum.Enum): + """ + The action performed: CREATE or UPDATE + """ + + CREATE = "CREATE" + UPDATE = "UPDATE" + + def visit(self, create: typing.Callable[[], T_Result], update: typing.Callable[[], T_Result]) -> T_Result: + if self is TrueFoundryApplyResponseAction.CREATE: + return create() + if self is TrueFoundryApplyResponseAction.UPDATE: + return update() diff --git a/src/truefoundry_sdk/types/true_foundry_apply_response_existing_manifest.py b/src/truefoundry_sdk/types/true_foundry_apply_response_existing_manifest.py new file mode 100644 index 00000000..073fcc81 --- /dev/null +++ b/src/truefoundry_sdk/types/true_foundry_apply_response_existing_manifest.py @@ -0,0 +1,61 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .agent_manifest import AgentManifest +from .agent_open_api_tool_manifest import AgentOpenApiToolManifest +from .alert_config import AlertConfig +from .application_set import ApplicationSet +from .artifact_manifest import ArtifactManifest +from .async_service import AsyncService +from .chat_prompt_manifest import ChatPromptManifest +from .cluster_manifest import ClusterManifest +from .data_directory import DataDirectory +from .gateway_config import GatewayConfig +from .helm import Helm +from .job import Job +from .ml_repo_manifest import MlRepoManifest +from .model_manifest import ModelManifest +from .notebook import Notebook +from .policy_manifest import PolicyManifest +from .provider_accounts import ProviderAccounts +from .r_studio import RStudio +from .service import Service +from .spark_job import SparkJob +from .ssh_server import SshServer +from .team_manifest import TeamManifest +from .tracing_project_manifest import TracingProjectManifest +from .virtual_account_manifest import VirtualAccountManifest +from .volume import Volume +from .workflow import Workflow +from .workspace_manifest import WorkspaceManifest + +TrueFoundryApplyResponseExistingManifest = typing.Union[ + MlRepoManifest, + ArtifactManifest, + ModelManifest, + ChatPromptManifest, + AgentOpenApiToolManifest, + AgentManifest, + DataDirectory, + Service, + ApplicationSet, + ProviderAccounts, + ClusterManifest, + WorkspaceManifest, + Job, + Helm, + Volume, + Notebook, + RStudio, + Workflow, + AsyncService, + SshServer, + SparkJob, + GatewayConfig, + TeamManifest, + PolicyManifest, + AlertConfig, + TracingProjectManifest, + VirtualAccountManifest, +] diff --git a/src/truefoundry_sdk/types/true_foundry_dbssm.py b/src/truefoundry_sdk/types/true_foundry_dbssm.py new file mode 100644 index 00000000..3bfd2935 --- /dev/null +++ b/src/truefoundry_sdk/types/true_foundry_dbssm.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class TrueFoundryDbssm(UniversalBaseModel): + """ + +label=TrueFoundry DBSSM + +icon=truefoundry + """ + + type: typing.Literal["integration/secret-store/truefoundry/db"] = pydantic.Field( + default="integration/secret-store/truefoundry/db" + ) + """ + +value=integration/secret-store/truefoundry/db + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/true_foundry_delete_request_manifest.py b/src/truefoundry_sdk/types/true_foundry_delete_request_manifest.py new file mode 100644 index 00000000..37d16f9d --- /dev/null +++ b/src/truefoundry_sdk/types/true_foundry_delete_request_manifest.py @@ -0,0 +1,61 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .agent_manifest import AgentManifest +from .agent_open_api_tool_manifest import AgentOpenApiToolManifest +from .alert_config import AlertConfig +from .application_set import ApplicationSet +from .artifact_manifest import ArtifactManifest +from .async_service import AsyncService +from .chat_prompt_manifest import ChatPromptManifest +from .cluster_manifest import ClusterManifest +from .data_directory import DataDirectory +from .gateway_config import GatewayConfig +from .helm import Helm +from .job import Job +from .ml_repo_manifest import MlRepoManifest +from .model_manifest import ModelManifest +from .notebook import Notebook +from .policy_manifest import PolicyManifest +from .provider_accounts import ProviderAccounts +from .r_studio import RStudio +from .service import Service +from .spark_job import SparkJob +from .ssh_server import SshServer +from .team_manifest import TeamManifest +from .tracing_project_manifest import TracingProjectManifest +from .virtual_account_manifest import VirtualAccountManifest +from .volume import Volume +from .workflow import Workflow +from .workspace_manifest import WorkspaceManifest + +TrueFoundryDeleteRequestManifest = typing.Union[ + MlRepoManifest, + ArtifactManifest, + ModelManifest, + ChatPromptManifest, + AgentOpenApiToolManifest, + AgentManifest, + DataDirectory, + Service, + ApplicationSet, + ProviderAccounts, + ClusterManifest, + WorkspaceManifest, + Job, + Helm, + Volume, + Notebook, + RStudio, + Workflow, + AsyncService, + SshServer, + SparkJob, + GatewayConfig, + TeamManifest, + PolicyManifest, + AlertConfig, + TracingProjectManifest, + VirtualAccountManifest, +] diff --git a/src/truefoundry_sdk/types/true_foundry_integrations.py b/src/truefoundry_sdk/types/true_foundry_integrations.py new file mode 100644 index 00000000..c1f1afc6 --- /dev/null +++ b/src/truefoundry_sdk/types/true_foundry_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .true_foundry_dbssm import TrueFoundryDbssm + +TrueFoundryIntegrations = TrueFoundryDbssm diff --git a/src/truefoundry_sdk/types/true_foundry_provider_account.py b/src/truefoundry_sdk/types/true_foundry_provider_account.py new file mode 100644 index 00000000..7e850d75 --- /dev/null +++ b/src/truefoundry_sdk/types/true_foundry_provider_account.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .true_foundry_integrations import TrueFoundryIntegrations + + +class TrueFoundryProviderAccount(UniversalBaseModel): + """ + +label=TrueFoundry + +icon=truefoundry + """ + + type: typing.Literal["provider-account/truefoundry"] = pydantic.Field(default="provider-account/truefoundry") + """ + +value=provider-account/truefoundry + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + integrations: typing.Optional[typing.List[TrueFoundryIntegrations]] = pydantic.Field(default=None) + """ + +label=Integrations + +usage=List of integrations that are associated with the provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/ttl_integrations.py b/src/truefoundry_sdk/types/ttl_integrations.py new file mode 100644 index 00000000..03d49afb --- /dev/null +++ b/src/truefoundry_sdk/types/ttl_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .ttl_registry import TtlRegistry + +TtlIntegrations = TtlRegistry diff --git a/src/truefoundry_sdk/types/ttl_provider_account.py b/src/truefoundry_sdk/types/ttl_provider_account.py new file mode 100644 index 00000000..cba15628 --- /dev/null +++ b/src/truefoundry_sdk/types/ttl_provider_account.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .ttl_integrations import TtlIntegrations + + +class TtlProviderAccount(UniversalBaseModel): + """ + +label=TTL + +icon=puzzle-piece + """ + + type: typing.Literal["provider-account/ttl"] = pydantic.Field(default="provider-account/ttl") + """ + +value=provider-account/ttl + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + integrations: typing.List[TtlIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/ttl_registry.py b/src/truefoundry_sdk/types/ttl_registry.py new file mode 100644 index 00000000..843169da --- /dev/null +++ b/src/truefoundry_sdk/types/ttl_registry.py @@ -0,0 +1,49 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class TtlRegistry(UniversalBaseModel): + """ + +label=TTL + +icon=docker + """ + + type: typing.Literal["integration/docker-registry/ttl"] = pydantic.Field(default="integration/docker-registry/ttl") + """ + +value=integration/docker-registry/ttl + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + registry_url: str = pydantic.Field(default="https://ttl.sh") + """ + +label=Registry URL + +usage=The URL of the registry. + +sort=200 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=600 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/usage_limits.py b/src/truefoundry_sdk/types/usage_limits.py new file mode 100644 index 00000000..47be28e3 --- /dev/null +++ b/src/truefoundry_sdk/types/usage_limits.py @@ -0,0 +1,19 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class UsageLimits(UniversalBaseModel): + tokens_per_minute: typing.Optional[int] = None + requests_per_minute: typing.Optional[int] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/vertex_model.py b/src/truefoundry_sdk/types/vertex_model.py new file mode 100644 index 00000000..021320e6 --- /dev/null +++ b/src/truefoundry_sdk/types/vertex_model.py @@ -0,0 +1,56 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gcp_region import GcpRegion +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class VertexModel(UniversalBaseModel): + """ + +label=Vertex Model + +icon=https://assets.production.truefoundry.com/vertex-ai.png + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +sort=2 + """ + + type: typing.Literal["integration/model/gcp/vertex"] = pydantic.Field(default="integration/model/gcp/vertex") + """ + +value=integration/model/gcp/vertex + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + +usage=Specify the type of the model + +sort=4 + """ + + region: typing.Optional[GcpRegion] = None + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/vertex_model_v2.py b/src/truefoundry_sdk/types/vertex_model_v2.py new file mode 100644 index 00000000..e4520565 --- /dev/null +++ b/src/truefoundry_sdk/types/vertex_model_v2.py @@ -0,0 +1,62 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .gcp_region import GcpRegion +from .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class VertexModelV2(UniversalBaseModel): + """ + +label=Vertex Model + +icon=googleCloud + """ + + type: typing.Literal["integration/model/vertex"] = pydantic.Field(default="integration/model/vertex") + """ + +value=integration/model/vertex + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +sort=1 + +usage=Name to identify this Vertex AI model in the UI + +message=2 to 62 characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + model_id: str = pydantic.Field() + """ + +label=Model ID + +sort=2 + +usage=The unique identifier for the Vertex AI model + +message=Model ID must not be empty + """ + + region: typing.Optional[GcpRegion] = None + model_types: typing.List[ModelType] = pydantic.Field() + """ + +label=Model Types + +sort=4 + +usage=Specify the type of the Vertex AI model (e.g., chat, text, etc.) + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +sort=6 + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +uiType=Hidden + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/webhook_basic_auth.py b/src/truefoundry_sdk/types/webhook_basic_auth.py new file mode 100644 index 00000000..00410529 --- /dev/null +++ b/src/truefoundry_sdk/types/webhook_basic_auth.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class WebhookBasicAuth(UniversalBaseModel): + type: typing.Literal["webhook-basic"] = pydantic.Field(default="webhook-basic") + """ + +value=auth/webhook-basic + """ + + username: str = pydantic.Field() + """ + +label=Username + +usage=Basic auth username + +sort=100 + """ + + password: str = pydantic.Field() + """ + +label=Password + +usage=Basic auth password + +sort=200 + +uiType=Password + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/webhook_bearer_auth.py b/src/truefoundry_sdk/types/webhook_bearer_auth.py new file mode 100644 index 00000000..7de6083e --- /dev/null +++ b/src/truefoundry_sdk/types/webhook_bearer_auth.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class WebhookBearerAuth(UniversalBaseModel): + type: typing.Literal["webhook-bearer"] = pydantic.Field(default="webhook-bearer") + """ + +value=auth/webhook-bearer + """ + + token: str = pydantic.Field() + """ + +label=Token + +usage=Bearer token for authentication + +sort=100 + +uiType=Password + """ + + prefix: str = pydantic.Field(default="Bearer") + """ + +label=Prefix + +usage=Prefix for the token + +sort=200 + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/webhook_integration.py b/src/truefoundry_sdk/types/webhook_integration.py new file mode 100644 index 00000000..e43671e8 --- /dev/null +++ b/src/truefoundry_sdk/types/webhook_integration.py @@ -0,0 +1,60 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .webhook_integration_auth_data import WebhookIntegrationAuthData + + +class WebhookIntegration(UniversalBaseModel): + """ + +label=Webhook Integration + +icon=https://assets.production.truefoundry.com/webhook.svg + """ + + type: typing.Literal["integration/gateway-request-logger/webhook"] = pydantic.Field( + default="integration/gateway-request-logger/webhook" + ) + """ + +value=integration/gateway-request-logger/webhook + """ + + name: str = pydantic.Field() + """ + +label=Display Name + +uiProps={"disableEdit":true} + +usage=The name of the integration that will be displayed in the TrueFoundry UI. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + webhook_url: str = pydantic.Field() + """ + +label=Webhook URL + +usage=The URL of the webhook endpoint + +sort=200 + """ + + auth_data: typing.Optional[WebhookIntegrationAuthData] = pydantic.Field(default=None) + """ + +label=Authentication + +usage=Authentication configuration for the webhook + +sort=300 + """ + + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + +label=Access Control + +usage=List of subjects that are authorized to access this integration. List of user fqn in format :. + +sort=10005 + +uiType=AuthorizedSubjects + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/webhook_integration_auth_data.py b/src/truefoundry_sdk/types/webhook_integration_auth_data.py new file mode 100644 index 00000000..08eb650e --- /dev/null +++ b/src/truefoundry_sdk/types/webhook_integration_auth_data.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .webhook_basic_auth import WebhookBasicAuth +from .webhook_bearer_auth import WebhookBearerAuth + +WebhookIntegrationAuthData = typing.Union[WebhookBasicAuth, WebhookBearerAuth] diff --git a/src/truefoundry_sdk/types/webhook_integrations.py b/src/truefoundry_sdk/types/webhook_integrations.py new file mode 100644 index 00000000..23b96f02 --- /dev/null +++ b/src/truefoundry_sdk/types/webhook_integrations.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .webhook_integration import WebhookIntegration + +WebhookIntegrations = WebhookIntegration diff --git a/src/truefoundry_sdk/types/webhook_provider_account.py b/src/truefoundry_sdk/types/webhook_provider_account.py new file mode 100644 index 00000000..5b690061 --- /dev/null +++ b/src/truefoundry_sdk/types/webhook_provider_account.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .webhook_integrations import WebhookIntegrations + + +class WebhookProviderAccount(UniversalBaseModel): + """ + +label=Webhook Provider Account + +icon=webhook + """ + + type: typing.Literal["provider-account/webhook"] = pydantic.Field(default="provider-account/webhook") + """ + +value=provider-account/webhook + """ + + name: str = pydantic.Field() + """ + +uiProps={"disableEdit":true} + +label=Name + +usage=The name of the provider account. + +sort=100 + +message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number + """ + + integrations: typing.List[WebhookIntegrations] = pydantic.Field() + """ + +label=Integrations + +usage=List of integrations that are associated with the provider account. + +sort=400 + +uiType=IntegrationsGroup + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/weight_based_load_balancing_rule.py b/src/truefoundry_sdk/types/weight_based_load_balancing_rule.py new file mode 100644 index 00000000..5ea2d547 --- /dev/null +++ b/src/truefoundry_sdk/types/weight_based_load_balancing_rule.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .load_balance_target import LoadBalanceTarget +from .load_balancing_when import LoadBalancingWhen + + +class WeightBasedLoadBalancingRule(UniversalBaseModel): + id: str + when: LoadBalancingWhen + load_balance_targets: typing.List[LoadBalanceTarget] + type: typing.Literal["weight-based-routing"] = "weight-based-routing" + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow