From ef7bd3dceb534e0e070ec81dc812d392d0333c8c Mon Sep 17 00:00:00 2001
From: fern-api <115122769+fern-api[bot]@users.noreply.github.com>
Date: Mon, 30 Jun 2025 10:17:02 +0000
Subject: [PATCH 1/2] SDK regeneration
---
reference.md | 229 ++++++--
src/truefoundry_sdk/__init__.py | 524 +++++++++++++++++-
src/truefoundry_sdk/agents/client.py | 12 -
.../artifact_versions/client.py | 14 +-
src/truefoundry_sdk/artifacts/client.py | 18 +-
src/truefoundry_sdk/base_client.py | 232 ++++++++
src/truefoundry_sdk/internal/ml/client.py | 28 +-
src/truefoundry_sdk/models/client.py | 14 +-
src/truefoundry_sdk/prompts/client.py | 18 +-
src/truefoundry_sdk/raw_base_client.py | 219 ++++++++
src/truefoundry_sdk/tools/client.py | 34 +-
src/truefoundry_sdk/types/__init__.py | 524 +++++++++++++++++-
.../types/addon_component_name.py | 4 +
src/truefoundry_sdk/types/agent_app.py | 8 +-
src/truefoundry_sdk/types/agent_manifest.py | 69 +--
...with_fqn.py => agent_manifest_with_fqn.py} | 2 +-
.../types/agent_open_api_tool_manifest.py | 76 ++-
.../agent_open_api_tool_manifest_method.py | 40 ++
...ent_open_api_tool_manifest_openapi_spec.py | 2 +-
... agent_open_api_tool_manifest_with_fqn.py} | 6 +-
...pi_tool_manifest_with_fqn_openapi_spec.py} | 4 +-
src/truefoundry_sdk/types/ai21integrations.py | 5 +
src/truefoundry_sdk/types/ai21key_auth.py | 34 ++
src/truefoundry_sdk/types/ai21model.py | 60 ++
.../types/ai21provider_account.py | 55 ++
src/truefoundry_sdk/types/alert_config.py | 54 ++
src/truefoundry_sdk/types/alert_severity.py | 17 +
.../types/anthropic_integrations.py | 5 +
.../types/anthropic_key_auth.py | 34 ++
src/truefoundry_sdk/types/anthropic_model.py | 60 ++
.../types/anthropic_provider_account.py | 55 ++
.../types/artifact_manifest.py | 45 +-
src/truefoundry_sdk/types/artifact_path.py | 6 +-
.../types/assistant_message.py | 19 +-
.../types/aws_access_key_based_auth.py | 41 ++
.../types/aws_assumed_role_based_auth.py | 32 ++
.../types/aws_bedrock_provider_account.py | 63 +++
.../aws_bedrock_provider_account_auth_data.py | 8 +
src/truefoundry_sdk/types/aws_ecr.py | 59 ++
.../types/aws_ecr_auth_data.py | 8 +
.../types/aws_eks_integration.py | 59 ++
.../types/aws_eks_integration_auth_data.py | 8 +
src/truefoundry_sdk/types/aws_integrations.py | 12 +
.../types/aws_parameter_store.py | 54 ++
.../types/aws_parameter_store_auth_data.py | 8 +
.../types/aws_provider_account.py | 60 ++
.../types/aws_provider_account_auth_data.py | 8 +
src/truefoundry_sdk/types/aws_region.py | 157 ++++++
src/truefoundry_sdk/types/aws_s3.py | 59 ++
src/truefoundry_sdk/types/aws_s3auth_data.py | 8 +
.../types/aws_secrets_manager.py | 54 ++
.../types/aws_secrets_manager_auth_data.py | 8 +
.../types/azure_ai_inference_model.py | 66 +++
...e_ai_inference_model_deployment_details.py | 8 +
.../types/azure_ai_managed_deployment.py | 41 ++
.../types/azure_ai_serverless_deployment.py | 41 ++
.../types/azure_aks_integration.py | 58 ++
src/truefoundry_sdk/types/azure_basic_auth.py | 40 ++
.../types/azure_blob_storage.py | 53 ++
.../types/azure_connection_string_auth.py | 32 ++
.../types/azure_container_registry.py | 53 ++
.../types/azure_foundry_model.py | 68 +++
.../types/azure_foundry_model_v2.py | 76 +++
.../types/azure_foundry_provider_account.py | 53 ++
.../types/azure_integrations.py | 23 +
src/truefoundry_sdk/types/azure_key_auth.py | 35 ++
src/truefoundry_sdk/types/azure_o_auth.py | 54 ++
.../types/azure_open_ai_model.py | 70 +++
.../types/azure_open_ai_model_v2.py | 68 +++
.../types/azure_open_ai_provider_account.py | 63 +++
.../types/azure_provider_account.py | 52 ++
.../types/azure_repos_integration.py | 45 ++
src/truefoundry_sdk/types/azure_vault.py | 53 ++
.../types/base_artifact_version.py | 57 +-
.../types/base_artifact_version_manifest.py | 13 -
.../types/base_o_auth2login.py | 64 +++
.../types/base_o_auth2login_jwt_source.py | 23 +
src/truefoundry_sdk/types/bedrock_key_auth.py | 35 ++
src/truefoundry_sdk/types/bedrock_model.py | 62 +++
.../types/bedrock_model_auth_data.py | 8 +
src/truefoundry_sdk/types/bedrock_model_v2.py | 62 +++
.../types/bitbucket_integration.py | 45 ++
.../types/bitbucket_provider_account.py | 37 ++
.../types/blob_storage_reference.py | 20 +-
...py => blob_storage_reference_mime_type.py} | 15 +-
src/truefoundry_sdk/types/budget_config.py | 21 +
.../types/budget_limit_unit.py | 29 +
src/truefoundry_sdk/types/budget_rule.py | 23 +
src/truefoundry_sdk/types/budget_when.py | 20 +
..._messages_item.py => chat_message_turn.py} | 4 +-
.../types/chat_prompt_manifest.py | 52 +-
.../types/cohere_integrations.py | 5 +
src/truefoundry_sdk/types/cohere_key_auth.py | 35 ++
src/truefoundry_sdk/types/cohere_model.py | 60 ++
.../types/cohere_provider_account.py | 55 ++
.../types/custom_basic_auth.py | 39 ++
.../types/custom_bearer_auth.py | 28 +
.../types/custom_blob_storage.py | 58 ++
src/truefoundry_sdk/types/custom_helm_repo.py | 51 ++
.../types/custom_integrations.py | 21 +
.../types/custom_jwt_auth_integration.py | 58 ++
.../types/custom_mcp_server_integration.py | 59 ++
src/truefoundry_sdk/types/custom_model.py | 77 +++
.../types/custom_model_auth_data.py | 8 +
.../types/custom_model_model_server.py | 29 +
.../types/custom_provider_account.py | 46 ++
...om_username_password_artifacts_registry.py | 53 ++
src/truefoundry_sdk/types/data_directory.py | 57 +-
.../types/data_directory_source.py | 8 +
.../types/databricks_api_key_auth.py | 33 ++
.../types/databricks_integrations.py | 5 +
src/truefoundry_sdk/types/databricks_model.py | 61 ++
.../types/databricks_provider_account.py | 69 +++
.../databricks_provider_account_auth_data.py | 8 +
.../databricks_service_principal_auth.py | 42 ++
.../types/deepinfra_integrations.py | 5 +
.../types/deepinfra_key_auth.py | 35 ++
src/truefoundry_sdk/types/deepinfra_model.py | 60 ++
.../types/deepinfra_provider_account.py | 55 ++
.../types/developer_message.py | 13 +-
.../types/dockerhub_basic_auth.py | 36 ++
.../types/dockerhub_integrations.py | 5 +
.../types/dockerhub_provider_account.py | 45 ++
.../types/dockerhub_registry.py | 52 ++
.../types/dynamic_volume_config.py | 2 +-
.../types/email_notification_channel.py | 53 ++
.../types/external_blob_storage_source.py | 11 +-
.../types/failure_tolerance_config.py | 20 +
src/truefoundry_sdk/types/fallback_config.py | 21 +
src/truefoundry_sdk/types/fallback_model.py | 19 +
src/truefoundry_sdk/types/fallback_rule.py | 22 +
src/truefoundry_sdk/types/fallback_when.py | 21 +
.../types/fast_ai_framework.py | 9 +-
src/truefoundry_sdk/types/function.py | 6 +-
src/truefoundry_sdk/types/function_schema.py | 19 +-
src/truefoundry_sdk/types/gateway_config.py | 11 +
src/truefoundry_sdk/types/gcp_api_key_auth.py | 33 ++
src/truefoundry_sdk/types/gcp_gcr.py | 53 ++
src/truefoundry_sdk/types/gcp_gcs.py | 53 ++
.../types/gcp_gke_integration.py | 55 ++
src/truefoundry_sdk/types/gcp_gsm.py | 46 ++
src/truefoundry_sdk/types/gcp_integrations.py | 12 +
.../types/gcp_key_file_auth.py | 32 ++
.../types/gcp_provider_account.py | 60 ++
.../types/gcp_provider_account_auth_data.py | 8 +
src/truefoundry_sdk/types/gcp_region.py | 161 ++++++
src/truefoundry_sdk/types/gemini_model_v2.py | 60 ++
.../types/github_integration.py | 45 ++
.../types/github_provider_account.py | 37 ++
.../types/gitlab_integration.py | 45 ++
.../types/gitlab_provider_account.py | 37 ++
src/truefoundry_sdk/types/gluon_framework.py | 9 +-
.../types/google_gemini_provider_account.py | 55 ++
src/truefoundry_sdk/types/google_model.py | 56 ++
.../types/google_vertex_provider_account.py | 66 +++
.../types/groq_integrations.py | 5 +
src/truefoundry_sdk/types/groq_key_auth.py | 35 ++
src/truefoundry_sdk/types/groq_model.py | 60 ++
.../types/groq_provider_account.py | 55 ++
src/truefoundry_sdk/types/guardrail_config.py | 30 +
.../types/guardrail_config_action.py | 21 +
.../types/guardrails_config.py | 37 ++
.../types/guardrails_options.py | 5 +
src/truefoundry_sdk/types/guardrails_rule.py | 34 ++
src/truefoundry_sdk/types/guardrails_when.py | 31 ++
src/truefoundry_sdk/types/h2o_framework.py | 9 +-
.../types/image_content_part.py | 13 +-
.../types/image_content_part_image_url.py | 33 ++
...py => image_content_part_image_url_url.py} | 2 +-
.../types/infra_provider_account.py | 37 ++
.../input_output_based_cost_metric_value.py | 19 +
.../types/j_frog_integrations.py | 5 +
.../types/jfrog_artifacts_registry.py | 53 ++
src/truefoundry_sdk/types/jfrog_basic_auth.py | 40 ++
.../types/jfrog_provider_account.py | 53 ++
src/truefoundry_sdk/types/job.py | 1 +
src/truefoundry_sdk/types/keras_framework.py | 9 +-
.../latency_based_load_balance_target.py | 19 +
.../latency_based_load_balancing_rule.py | 23 +
.../types/light_gbm_framework.py | 9 +-
.../types/load_balance_target.py | 20 +
.../types/load_balancing_config.py | 23 +
.../types/load_balancing_rule.py | 8 +
.../types/load_balancing_when.py | 20 +
.../types/local_artifact_source.py | 7 +-
.../types/local_model_source.py | 7 +-
src/truefoundry_sdk/types/mcp_server_auth.py | 8 +
...image_url.py => mcp_server_header_auth.py} | 11 +-
.../types/mcp_server_integration.py | 55 ++
.../types/mcp_server_integrations.py | 5 +
.../types/mcp_server_o_auth2.py | 26 +
.../types/mcp_server_provider_account.py | 55 ++
.../types/mistral_ai_integrations.py | 5 +
.../types/mistral_ai_key_auth.py | 35 ++
src/truefoundry_sdk/types/mistral_ai_model.py | 60 ++
.../types/mistral_ai_provider_account.py | 55 ++
src/truefoundry_sdk/types/model_config.py | 22 +
.../types/model_configuration.py | 26 +-
...s.py => model_configuration_parameters.py} | 9 +-
.../model_configuration_parameters_stop.py | 5 +
.../types/model_cost_metric.py | 9 +
src/truefoundry_sdk/types/model_manifest.py | 49 +-
.../types/model_provider_account.py | 45 ++
src/truefoundry_sdk/types/model_type.py | 46 ++
.../types/model_version_environment.py | 10 +-
.../types/nomic_integrations.py | 5 +
src/truefoundry_sdk/types/nomic_key_auth.py | 35 ++
src/truefoundry_sdk/types/nomic_model.py | 60 ++
.../types/nomic_provider_account.py | 55 ++
.../notification_target_for_alert_rule.py | 9 +
.../types/o_auth2login_provider.py | 22 +
.../types/ollama_integrations.py | 5 +
src/truefoundry_sdk/types/ollama_key_auth.py | 29 +
src/truefoundry_sdk/types/ollama_model.py | 60 ++
.../types/ollama_provider_account.py | 55 ++
src/truefoundry_sdk/types/onnx_framework.py | 9 +-
.../types/open_ai_integrations.py | 5 +
src/truefoundry_sdk/types/open_ai_model.py | 61 ++
.../types/openai_api_key_auth.py | 35 ++
.../types/openai_provider_account.py | 63 +++
src/truefoundry_sdk/types/paddle_framework.py | 9 +-
src/truefoundry_sdk/types/pager_duty.py | 30 +
.../types/pager_duty_integration.py | 46 ++
.../types/pager_duty_integration_key_auth.py | 42 ++
.../types/pager_duty_integrations.py | 5 +
.../types/pager_duty_provider_account.py | 44 ++
.../types/palm_integrations.py | 5 +
src/truefoundry_sdk/types/palm_key_auth.py | 35 ++
src/truefoundry_sdk/types/palm_model.py | 60 ++
.../types/palm_provider_account.py | 55 ++
...r_thousand_embedding_tokens_cost_metric.py | 23 +
.../types/per_thousand_tokens_cost_metric.py | 24 +
.../types/perplexity_ai_key_auth.py | 35 ++
.../types/perplexity_ai_model.py | 60 ++
.../types/perplexity_ai_provider_account.py | 55 ++
.../types/perplexity_integrations.py | 5 +
.../{parameters_stop.py => policy_actions.py} | 2 +-
.../types/policy_entity_types.py | 41 ++
src/truefoundry_sdk/types/policy_filters.py | 41 ++
src/truefoundry_sdk/types/policy_manifest.py | 85 +++
.../types/policy_manifest_mode.py | 32 ++
.../types/policy_manifest_operation.py | 8 +
.../types/policy_mutation_operation.py | 36 ++
.../types/policy_validation_operation.py | 27 +
.../types/prometheus_alert_rule.py | 74 +++
.../types/provider_accounts.py | 9 +
.../types/public_cost_metric.py | 21 +
.../types/py_torch_framework.py | 9 +-
.../types/quay_artifacts_registry.py | 53 ++
src/truefoundry_sdk/types/quay_basic_auth.py | 40 ++
.../types/quay_integrations.py | 5 +
.../types/quay_provider_account.py | 53 ++
.../types/rate_limit_config.py | 21 +
src/truefoundry_sdk/types/rate_limit_rule.py | 23 +
src/truefoundry_sdk/types/rate_limit_unit.py | 37 ++
src/truefoundry_sdk/types/rate_limit_when.py | 20 +
.../types/refusal_content_part.py | 6 +-
.../types/self_hosted_model.py | 92 +++
.../types/self_hosted_model_auth_data.py | 8 +
.../types/self_hosted_model_integrations.py | 5 +
.../types/self_hosted_model_model_server.py | 35 ++
.../self_hosted_model_provider_account.py | 54 ++
.../types/sklearn_framework.py | 13 +-
.../types/sklearn_model_schema.py | 19 +-
...sklearn_model_schema_infer_method_name.py} | 9 +-
.../types/sklearn_serialization_format.py | 3 +-
src/truefoundry_sdk/types/slack_bot_auth.py | 28 +
.../types/slack_bot_integration.py | 47 ++
.../types/slack_integrations.py | 8 +
.../types/slack_provider_account.py | 44 ++
.../types/slack_webhook_auth.py | 28 +
.../types/slack_webhook_integration.py | 47 ++
src/truefoundry_sdk/types/smtp_credentials.py | 62 +++
src/truefoundry_sdk/types/spa_cy_framework.py | 9 +-
.../types/stats_models_framework.py | 9 +-
src/truefoundry_sdk/types/system_message.py | 16 +-
.../types/tensor_flow_framework.py | 9 +-
.../types/text_content_part.py | 9 +-
.../types/together_ai_integrations.py | 5 +
.../types/together_ai_key_auth.py | 35 ++
.../types/together_ai_model.py | 60 ++
.../types/together_ai_provider_account.py | 55 ++
src/truefoundry_sdk/types/tool_call.py | 6 +-
src/truefoundry_sdk/types/tool_message.py | 12 +-
src/truefoundry_sdk/types/tool_schema.py | 6 +-
.../types/tracing_project_manifest.py | 12 +-
.../types/transformers_framework.py | 24 +-
...=> transformers_framework_library_name.py} | 11 +-
.../true_foundry_apply_request_manifest.py | 61 ++
.../types/true_foundry_apply_response.py | 32 ++
.../true_foundry_apply_response_action.py | 21 +
...oundry_apply_response_existing_manifest.py | 61 ++
.../types/true_foundry_dbssm.py | 44 ++
.../true_foundry_delete_request_manifest.py | 61 ++
.../types/true_foundry_integrations.py | 5 +
.../types/true_foundry_managed_source.py | 15 +-
.../types/true_foundry_provider_account.py | 44 ++
src/truefoundry_sdk/types/ttl_integrations.py | 5 +
.../types/ttl_provider_account.py | 44 ++
src/truefoundry_sdk/types/ttl_registry.py | 49 ++
src/truefoundry_sdk/types/usage_limits.py | 19 +
src/truefoundry_sdk/types/user_message.py | 15 +-
src/truefoundry_sdk/types/vertex_model.py | 56 ++
src/truefoundry_sdk/types/vertex_model_v2.py | 62 +++
.../types/webhook_basic_auth.py | 36 ++
.../types/webhook_bearer_auth.py | 36 ++
.../types/webhook_integration.py | 60 ++
.../types/webhook_integration_auth_data.py | 8 +
.../types/webhook_integrations.py | 5 +
.../types/webhook_provider_account.py | 44 ++
.../types/weight_based_load_balancing_rule.py | 23 +
.../types/xg_boost_framework.py | 12 +-
.../types/xg_boost_model_schema.py | 14 +-
.../types/xg_boost_serialization_format.py | 3 +-
314 files changed, 11251 insertions(+), 589 deletions(-)
create mode 100644 src/truefoundry_sdk/raw_base_client.py
rename src/truefoundry_sdk/types/{agent_with_fqn.py => agent_manifest_with_fqn.py} (97%)
create mode 100644 src/truefoundry_sdk/types/agent_open_api_tool_manifest_method.py
rename src/truefoundry_sdk/types/{agent_open_api_tool_with_fqn.py => agent_open_api_tool_manifest_with_fqn.py} (90%)
rename src/truefoundry_sdk/types/{agent_open_api_tool_with_fqn_openapi_spec.py => agent_open_api_tool_manifest_with_fqn_openapi_spec.py} (50%)
create mode 100644 src/truefoundry_sdk/types/ai21integrations.py
create mode 100644 src/truefoundry_sdk/types/ai21key_auth.py
create mode 100644 src/truefoundry_sdk/types/ai21model.py
create mode 100644 src/truefoundry_sdk/types/ai21provider_account.py
create mode 100644 src/truefoundry_sdk/types/alert_config.py
create mode 100644 src/truefoundry_sdk/types/alert_severity.py
create mode 100644 src/truefoundry_sdk/types/anthropic_integrations.py
create mode 100644 src/truefoundry_sdk/types/anthropic_key_auth.py
create mode 100644 src/truefoundry_sdk/types/anthropic_model.py
create mode 100644 src/truefoundry_sdk/types/anthropic_provider_account.py
create mode 100644 src/truefoundry_sdk/types/aws_access_key_based_auth.py
create mode 100644 src/truefoundry_sdk/types/aws_assumed_role_based_auth.py
create mode 100644 src/truefoundry_sdk/types/aws_bedrock_provider_account.py
create mode 100644 src/truefoundry_sdk/types/aws_bedrock_provider_account_auth_data.py
create mode 100644 src/truefoundry_sdk/types/aws_ecr.py
create mode 100644 src/truefoundry_sdk/types/aws_ecr_auth_data.py
create mode 100644 src/truefoundry_sdk/types/aws_eks_integration.py
create mode 100644 src/truefoundry_sdk/types/aws_eks_integration_auth_data.py
create mode 100644 src/truefoundry_sdk/types/aws_integrations.py
create mode 100644 src/truefoundry_sdk/types/aws_parameter_store.py
create mode 100644 src/truefoundry_sdk/types/aws_parameter_store_auth_data.py
create mode 100644 src/truefoundry_sdk/types/aws_provider_account.py
create mode 100644 src/truefoundry_sdk/types/aws_provider_account_auth_data.py
create mode 100644 src/truefoundry_sdk/types/aws_region.py
create mode 100644 src/truefoundry_sdk/types/aws_s3.py
create mode 100644 src/truefoundry_sdk/types/aws_s3auth_data.py
create mode 100644 src/truefoundry_sdk/types/aws_secrets_manager.py
create mode 100644 src/truefoundry_sdk/types/aws_secrets_manager_auth_data.py
create mode 100644 src/truefoundry_sdk/types/azure_ai_inference_model.py
create mode 100644 src/truefoundry_sdk/types/azure_ai_inference_model_deployment_details.py
create mode 100644 src/truefoundry_sdk/types/azure_ai_managed_deployment.py
create mode 100644 src/truefoundry_sdk/types/azure_ai_serverless_deployment.py
create mode 100644 src/truefoundry_sdk/types/azure_aks_integration.py
create mode 100644 src/truefoundry_sdk/types/azure_basic_auth.py
create mode 100644 src/truefoundry_sdk/types/azure_blob_storage.py
create mode 100644 src/truefoundry_sdk/types/azure_connection_string_auth.py
create mode 100644 src/truefoundry_sdk/types/azure_container_registry.py
create mode 100644 src/truefoundry_sdk/types/azure_foundry_model.py
create mode 100644 src/truefoundry_sdk/types/azure_foundry_model_v2.py
create mode 100644 src/truefoundry_sdk/types/azure_foundry_provider_account.py
create mode 100644 src/truefoundry_sdk/types/azure_integrations.py
create mode 100644 src/truefoundry_sdk/types/azure_key_auth.py
create mode 100644 src/truefoundry_sdk/types/azure_o_auth.py
create mode 100644 src/truefoundry_sdk/types/azure_open_ai_model.py
create mode 100644 src/truefoundry_sdk/types/azure_open_ai_model_v2.py
create mode 100644 src/truefoundry_sdk/types/azure_open_ai_provider_account.py
create mode 100644 src/truefoundry_sdk/types/azure_provider_account.py
create mode 100644 src/truefoundry_sdk/types/azure_repos_integration.py
create mode 100644 src/truefoundry_sdk/types/azure_vault.py
delete mode 100644 src/truefoundry_sdk/types/base_artifact_version_manifest.py
create mode 100644 src/truefoundry_sdk/types/base_o_auth2login.py
create mode 100644 src/truefoundry_sdk/types/base_o_auth2login_jwt_source.py
create mode 100644 src/truefoundry_sdk/types/bedrock_key_auth.py
create mode 100644 src/truefoundry_sdk/types/bedrock_model.py
create mode 100644 src/truefoundry_sdk/types/bedrock_model_auth_data.py
create mode 100644 src/truefoundry_sdk/types/bedrock_model_v2.py
create mode 100644 src/truefoundry_sdk/types/bitbucket_integration.py
create mode 100644 src/truefoundry_sdk/types/bitbucket_provider_account.py
rename src/truefoundry_sdk/types/{mime_type.py => blob_storage_reference_mime_type.py} (66%)
create mode 100644 src/truefoundry_sdk/types/budget_config.py
create mode 100644 src/truefoundry_sdk/types/budget_limit_unit.py
create mode 100644 src/truefoundry_sdk/types/budget_rule.py
create mode 100644 src/truefoundry_sdk/types/budget_when.py
rename src/truefoundry_sdk/types/{chat_prompt_manifest_messages_item.py => chat_message_turn.py} (69%)
create mode 100644 src/truefoundry_sdk/types/cohere_integrations.py
create mode 100644 src/truefoundry_sdk/types/cohere_key_auth.py
create mode 100644 src/truefoundry_sdk/types/cohere_model.py
create mode 100644 src/truefoundry_sdk/types/cohere_provider_account.py
create mode 100644 src/truefoundry_sdk/types/custom_basic_auth.py
create mode 100644 src/truefoundry_sdk/types/custom_bearer_auth.py
create mode 100644 src/truefoundry_sdk/types/custom_blob_storage.py
create mode 100644 src/truefoundry_sdk/types/custom_helm_repo.py
create mode 100644 src/truefoundry_sdk/types/custom_integrations.py
create mode 100644 src/truefoundry_sdk/types/custom_jwt_auth_integration.py
create mode 100644 src/truefoundry_sdk/types/custom_mcp_server_integration.py
create mode 100644 src/truefoundry_sdk/types/custom_model.py
create mode 100644 src/truefoundry_sdk/types/custom_model_auth_data.py
create mode 100644 src/truefoundry_sdk/types/custom_model_model_server.py
create mode 100644 src/truefoundry_sdk/types/custom_provider_account.py
create mode 100644 src/truefoundry_sdk/types/custom_username_password_artifacts_registry.py
create mode 100644 src/truefoundry_sdk/types/data_directory_source.py
create mode 100644 src/truefoundry_sdk/types/databricks_api_key_auth.py
create mode 100644 src/truefoundry_sdk/types/databricks_integrations.py
create mode 100644 src/truefoundry_sdk/types/databricks_model.py
create mode 100644 src/truefoundry_sdk/types/databricks_provider_account.py
create mode 100644 src/truefoundry_sdk/types/databricks_provider_account_auth_data.py
create mode 100644 src/truefoundry_sdk/types/databricks_service_principal_auth.py
create mode 100644 src/truefoundry_sdk/types/deepinfra_integrations.py
create mode 100644 src/truefoundry_sdk/types/deepinfra_key_auth.py
create mode 100644 src/truefoundry_sdk/types/deepinfra_model.py
create mode 100644 src/truefoundry_sdk/types/deepinfra_provider_account.py
create mode 100644 src/truefoundry_sdk/types/dockerhub_basic_auth.py
create mode 100644 src/truefoundry_sdk/types/dockerhub_integrations.py
create mode 100644 src/truefoundry_sdk/types/dockerhub_provider_account.py
create mode 100644 src/truefoundry_sdk/types/dockerhub_registry.py
create mode 100644 src/truefoundry_sdk/types/email_notification_channel.py
create mode 100644 src/truefoundry_sdk/types/failure_tolerance_config.py
create mode 100644 src/truefoundry_sdk/types/fallback_config.py
create mode 100644 src/truefoundry_sdk/types/fallback_model.py
create mode 100644 src/truefoundry_sdk/types/fallback_rule.py
create mode 100644 src/truefoundry_sdk/types/fallback_when.py
create mode 100644 src/truefoundry_sdk/types/gateway_config.py
create mode 100644 src/truefoundry_sdk/types/gcp_api_key_auth.py
create mode 100644 src/truefoundry_sdk/types/gcp_gcr.py
create mode 100644 src/truefoundry_sdk/types/gcp_gcs.py
create mode 100644 src/truefoundry_sdk/types/gcp_gke_integration.py
create mode 100644 src/truefoundry_sdk/types/gcp_gsm.py
create mode 100644 src/truefoundry_sdk/types/gcp_integrations.py
create mode 100644 src/truefoundry_sdk/types/gcp_key_file_auth.py
create mode 100644 src/truefoundry_sdk/types/gcp_provider_account.py
create mode 100644 src/truefoundry_sdk/types/gcp_provider_account_auth_data.py
create mode 100644 src/truefoundry_sdk/types/gcp_region.py
create mode 100644 src/truefoundry_sdk/types/gemini_model_v2.py
create mode 100644 src/truefoundry_sdk/types/github_integration.py
create mode 100644 src/truefoundry_sdk/types/github_provider_account.py
create mode 100644 src/truefoundry_sdk/types/gitlab_integration.py
create mode 100644 src/truefoundry_sdk/types/gitlab_provider_account.py
create mode 100644 src/truefoundry_sdk/types/google_gemini_provider_account.py
create mode 100644 src/truefoundry_sdk/types/google_model.py
create mode 100644 src/truefoundry_sdk/types/google_vertex_provider_account.py
create mode 100644 src/truefoundry_sdk/types/groq_integrations.py
create mode 100644 src/truefoundry_sdk/types/groq_key_auth.py
create mode 100644 src/truefoundry_sdk/types/groq_model.py
create mode 100644 src/truefoundry_sdk/types/groq_provider_account.py
create mode 100644 src/truefoundry_sdk/types/guardrail_config.py
create mode 100644 src/truefoundry_sdk/types/guardrail_config_action.py
create mode 100644 src/truefoundry_sdk/types/guardrails_config.py
create mode 100644 src/truefoundry_sdk/types/guardrails_options.py
create mode 100644 src/truefoundry_sdk/types/guardrails_rule.py
create mode 100644 src/truefoundry_sdk/types/guardrails_when.py
create mode 100644 src/truefoundry_sdk/types/image_content_part_image_url.py
rename src/truefoundry_sdk/types/{image_url_url.py => image_content_part_image_url_url.py} (66%)
create mode 100644 src/truefoundry_sdk/types/infra_provider_account.py
create mode 100644 src/truefoundry_sdk/types/input_output_based_cost_metric_value.py
create mode 100644 src/truefoundry_sdk/types/j_frog_integrations.py
create mode 100644 src/truefoundry_sdk/types/jfrog_artifacts_registry.py
create mode 100644 src/truefoundry_sdk/types/jfrog_basic_auth.py
create mode 100644 src/truefoundry_sdk/types/jfrog_provider_account.py
create mode 100644 src/truefoundry_sdk/types/latency_based_load_balance_target.py
create mode 100644 src/truefoundry_sdk/types/latency_based_load_balancing_rule.py
create mode 100644 src/truefoundry_sdk/types/load_balance_target.py
create mode 100644 src/truefoundry_sdk/types/load_balancing_config.py
create mode 100644 src/truefoundry_sdk/types/load_balancing_rule.py
create mode 100644 src/truefoundry_sdk/types/load_balancing_when.py
create mode 100644 src/truefoundry_sdk/types/mcp_server_auth.py
rename src/truefoundry_sdk/types/{image_url.py => mcp_server_header_auth.py} (67%)
create mode 100644 src/truefoundry_sdk/types/mcp_server_integration.py
create mode 100644 src/truefoundry_sdk/types/mcp_server_integrations.py
create mode 100644 src/truefoundry_sdk/types/mcp_server_o_auth2.py
create mode 100644 src/truefoundry_sdk/types/mcp_server_provider_account.py
create mode 100644 src/truefoundry_sdk/types/mistral_ai_integrations.py
create mode 100644 src/truefoundry_sdk/types/mistral_ai_key_auth.py
create mode 100644 src/truefoundry_sdk/types/mistral_ai_model.py
create mode 100644 src/truefoundry_sdk/types/mistral_ai_provider_account.py
create mode 100644 src/truefoundry_sdk/types/model_config.py
rename src/truefoundry_sdk/types/{parameters.py => model_configuration_parameters.py} (68%)
create mode 100644 src/truefoundry_sdk/types/model_configuration_parameters_stop.py
create mode 100644 src/truefoundry_sdk/types/model_cost_metric.py
create mode 100644 src/truefoundry_sdk/types/model_provider_account.py
create mode 100644 src/truefoundry_sdk/types/model_type.py
create mode 100644 src/truefoundry_sdk/types/nomic_integrations.py
create mode 100644 src/truefoundry_sdk/types/nomic_key_auth.py
create mode 100644 src/truefoundry_sdk/types/nomic_model.py
create mode 100644 src/truefoundry_sdk/types/nomic_provider_account.py
create mode 100644 src/truefoundry_sdk/types/notification_target_for_alert_rule.py
create mode 100644 src/truefoundry_sdk/types/o_auth2login_provider.py
create mode 100644 src/truefoundry_sdk/types/ollama_integrations.py
create mode 100644 src/truefoundry_sdk/types/ollama_key_auth.py
create mode 100644 src/truefoundry_sdk/types/ollama_model.py
create mode 100644 src/truefoundry_sdk/types/ollama_provider_account.py
create mode 100644 src/truefoundry_sdk/types/open_ai_integrations.py
create mode 100644 src/truefoundry_sdk/types/open_ai_model.py
create mode 100644 src/truefoundry_sdk/types/openai_api_key_auth.py
create mode 100644 src/truefoundry_sdk/types/openai_provider_account.py
create mode 100644 src/truefoundry_sdk/types/pager_duty.py
create mode 100644 src/truefoundry_sdk/types/pager_duty_integration.py
create mode 100644 src/truefoundry_sdk/types/pager_duty_integration_key_auth.py
create mode 100644 src/truefoundry_sdk/types/pager_duty_integrations.py
create mode 100644 src/truefoundry_sdk/types/pager_duty_provider_account.py
create mode 100644 src/truefoundry_sdk/types/palm_integrations.py
create mode 100644 src/truefoundry_sdk/types/palm_key_auth.py
create mode 100644 src/truefoundry_sdk/types/palm_model.py
create mode 100644 src/truefoundry_sdk/types/palm_provider_account.py
create mode 100644 src/truefoundry_sdk/types/per_thousand_embedding_tokens_cost_metric.py
create mode 100644 src/truefoundry_sdk/types/per_thousand_tokens_cost_metric.py
create mode 100644 src/truefoundry_sdk/types/perplexity_ai_key_auth.py
create mode 100644 src/truefoundry_sdk/types/perplexity_ai_model.py
create mode 100644 src/truefoundry_sdk/types/perplexity_ai_provider_account.py
create mode 100644 src/truefoundry_sdk/types/perplexity_integrations.py
rename src/truefoundry_sdk/types/{parameters_stop.py => policy_actions.py} (60%)
create mode 100644 src/truefoundry_sdk/types/policy_entity_types.py
create mode 100644 src/truefoundry_sdk/types/policy_filters.py
create mode 100644 src/truefoundry_sdk/types/policy_manifest.py
create mode 100644 src/truefoundry_sdk/types/policy_manifest_mode.py
create mode 100644 src/truefoundry_sdk/types/policy_manifest_operation.py
create mode 100644 src/truefoundry_sdk/types/policy_mutation_operation.py
create mode 100644 src/truefoundry_sdk/types/policy_validation_operation.py
create mode 100644 src/truefoundry_sdk/types/prometheus_alert_rule.py
create mode 100644 src/truefoundry_sdk/types/provider_accounts.py
create mode 100644 src/truefoundry_sdk/types/public_cost_metric.py
create mode 100644 src/truefoundry_sdk/types/quay_artifacts_registry.py
create mode 100644 src/truefoundry_sdk/types/quay_basic_auth.py
create mode 100644 src/truefoundry_sdk/types/quay_integrations.py
create mode 100644 src/truefoundry_sdk/types/quay_provider_account.py
create mode 100644 src/truefoundry_sdk/types/rate_limit_config.py
create mode 100644 src/truefoundry_sdk/types/rate_limit_rule.py
create mode 100644 src/truefoundry_sdk/types/rate_limit_unit.py
create mode 100644 src/truefoundry_sdk/types/rate_limit_when.py
create mode 100644 src/truefoundry_sdk/types/self_hosted_model.py
create mode 100644 src/truefoundry_sdk/types/self_hosted_model_auth_data.py
create mode 100644 src/truefoundry_sdk/types/self_hosted_model_integrations.py
create mode 100644 src/truefoundry_sdk/types/self_hosted_model_model_server.py
create mode 100644 src/truefoundry_sdk/types/self_hosted_model_provider_account.py
rename src/truefoundry_sdk/types/{infer_method_name.py => sklearn_model_schema_infer_method_name.py} (59%)
create mode 100644 src/truefoundry_sdk/types/slack_bot_auth.py
create mode 100644 src/truefoundry_sdk/types/slack_bot_integration.py
create mode 100644 src/truefoundry_sdk/types/slack_integrations.py
create mode 100644 src/truefoundry_sdk/types/slack_provider_account.py
create mode 100644 src/truefoundry_sdk/types/slack_webhook_auth.py
create mode 100644 src/truefoundry_sdk/types/slack_webhook_integration.py
create mode 100644 src/truefoundry_sdk/types/smtp_credentials.py
create mode 100644 src/truefoundry_sdk/types/together_ai_integrations.py
create mode 100644 src/truefoundry_sdk/types/together_ai_key_auth.py
create mode 100644 src/truefoundry_sdk/types/together_ai_model.py
create mode 100644 src/truefoundry_sdk/types/together_ai_provider_account.py
rename src/truefoundry_sdk/types/{library_name.py => transformers_framework_library_name.py} (63%)
create mode 100644 src/truefoundry_sdk/types/true_foundry_apply_request_manifest.py
create mode 100644 src/truefoundry_sdk/types/true_foundry_apply_response.py
create mode 100644 src/truefoundry_sdk/types/true_foundry_apply_response_action.py
create mode 100644 src/truefoundry_sdk/types/true_foundry_apply_response_existing_manifest.py
create mode 100644 src/truefoundry_sdk/types/true_foundry_dbssm.py
create mode 100644 src/truefoundry_sdk/types/true_foundry_delete_request_manifest.py
create mode 100644 src/truefoundry_sdk/types/true_foundry_integrations.py
create mode 100644 src/truefoundry_sdk/types/true_foundry_provider_account.py
create mode 100644 src/truefoundry_sdk/types/ttl_integrations.py
create mode 100644 src/truefoundry_sdk/types/ttl_provider_account.py
create mode 100644 src/truefoundry_sdk/types/ttl_registry.py
create mode 100644 src/truefoundry_sdk/types/usage_limits.py
create mode 100644 src/truefoundry_sdk/types/vertex_model.py
create mode 100644 src/truefoundry_sdk/types/vertex_model_v2.py
create mode 100644 src/truefoundry_sdk/types/webhook_basic_auth.py
create mode 100644 src/truefoundry_sdk/types/webhook_bearer_auth.py
create mode 100644 src/truefoundry_sdk/types/webhook_integration.py
create mode 100644 src/truefoundry_sdk/types/webhook_integration_auth_data.py
create mode 100644 src/truefoundry_sdk/types/webhook_integrations.py
create mode 100644 src/truefoundry_sdk/types/webhook_provider_account.py
create mode 100644 src/truefoundry_sdk/types/weight_based_load_balancing_rule.py
diff --git a/reference.md b/reference.md
index a014e3e6..a2bc55ed 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(...)
@@ -5677,11 +5845,7 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import (
- ArtifactManifest,
- TrueFoundry,
- TrueFoundryManagedSource,
-)
+from truefoundry_sdk import ArtifactManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -5689,10 +5853,7 @@ client = TrueFoundry(
)
client.artifacts.create_or_update(
manifest=ArtifactManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
@@ -5950,13 +6111,7 @@ client = TrueFoundry(
)
client.agents.create_or_update(
manifest=AgentManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- goal="goal",
- instruction="instruction",
- available_tools=["available_tools"],
- model_id="model_id",
),
)
@@ -6206,7 +6361,7 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import ChatPromptManifest, SystemMessage, TrueFoundry
+from truefoundry_sdk import ChatPromptManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -6214,14 +6369,7 @@ client = TrueFoundry(
)
client.prompts.create_or_update(
manifest=ChatPromptManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- messages=[
- SystemMessage(
- content="content",
- )
- ],
),
)
@@ -6471,13 +6619,7 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import (
- AgentOpenApiToolManifest,
- BlobStorageReference,
- Method,
- MimeType,
- TrueFoundry,
-)
+from truefoundry_sdk import AgentOpenApiToolManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -6485,16 +6627,7 @@ client = TrueFoundry(
)
client.tools.create_or_update(
manifest=AgentOpenApiToolManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- openapi_spec=BlobStorageReference(
- path="path",
- mime_type=MimeType.TEXT_PLAIN,
- ),
- base_url="base_url",
- path="path",
- method=Method.GET,
),
)
@@ -6752,7 +6885,7 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
+from truefoundry_sdk import ModelManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -6760,10 +6893,7 @@ client = TrueFoundry(
)
client.models.create_or_update(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
@@ -7229,7 +7359,7 @@ client.artifact_versions.create_multi_part_upload(
-
```python
-from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
+from truefoundry_sdk import ModelManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -7237,10 +7367,7 @@ client = TrueFoundry(
)
client.artifact_versions.stage(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
@@ -10665,7 +10792,7 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
+from truefoundry_sdk import ModelManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -10673,10 +10800,7 @@ client = TrueFoundry(
)
client.internal.ml.apply(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
@@ -10727,7 +10851,7 @@ client.internal.ml.apply(
-
```python
-from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
+from truefoundry_sdk import ModelManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -10735,10 +10859,7 @@ client = TrueFoundry(
)
client.internal.ml.delete(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/__init__.py b/src/truefoundry_sdk/__init__.py
index 18d13893..dd69b885 100644
--- a/src/truefoundry_sdk/__init__.py
+++ b/src/truefoundry_sdk/__init__.py
@@ -11,17 +11,28 @@
Agent,
AgentApp,
AgentManifest,
+ AgentManifestWithFqn,
AgentOpenApiToolManifest,
+ AgentOpenApiToolManifestMethod,
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 +62,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,
+ BlobStorageReferenceMimeType,
BlueGreen,
+ BudgetConfig,
+ BudgetLimitUnit,
+ BudgetRule,
+ BudgetWhen,
Build,
BuildBuildSource,
BuildBuildSpec,
@@ -71,8 +133,8 @@
Canary,
CanaryStep,
ChangePasswordResponse,
+ ChatMessageTurn,
ChatPromptManifest,
- ChatPromptManifestMessagesItem,
Cluster,
ClusterGateway,
ClusterManifest,
@@ -82,6 +144,10 @@
ClusterManifestWorkbenchConfig,
ClusterType,
Codeserver,
+ CohereIntegrations,
+ CohereKeyAuth,
+ CohereModel,
+ CohereProviderAccount,
Collaborator,
ContainerTaskConfig,
ContainerTaskConfigImage,
@@ -91,10 +157,33 @@
CreateMultiPartUploadRequest,
CreatePersonalAccessTokenResponse,
CronMetric,
+ CustomBasicAuth,
+ CustomBearerAuth,
+ CustomBlobStorage,
+ CustomHelmRepo,
+ CustomIntegrations,
+ CustomJwtAuthIntegration,
+ CustomMcpServerIntegration,
+ CustomModel,
+ CustomModelAuthData,
+ CustomModelModelServer,
+ CustomProviderAccount,
+ CustomUsernamePasswordArtifactsRegistry,
DataDirectory,
DataDirectoryManifest,
DataDirectoryManifestSource,
+ DataDirectorySource,
+ DatabricksApiKeyAuth,
+ DatabricksIntegrations,
+ DatabricksModel,
+ DatabricksProviderAccount,
+ DatabricksProviderAccountAuthData,
+ DatabricksServicePrincipalAuth,
DeactivateUserResponse,
+ DeepinfraIntegrations,
+ DeepinfraKeyAuth,
+ DeepinfraModel,
+ DeepinfraProviderAccount,
DeleteApplicationResponse,
DeleteJobRunResponse,
DeletePersonalAccessTokenResponse,
@@ -111,8 +200,13 @@
DeveloperMessageContent,
DockerFileBuild,
DockerFileBuildCommand,
+ DockerhubBasicAuth,
+ DockerhubIntegrations,
+ DockerhubProviderAccount,
+ DockerhubRegistry,
DynamicVolumeConfig,
Email,
+ EmailNotificationChannel,
EmptyResponse,
Endpoint,
Environment,
@@ -124,6 +218,11 @@
EventChartCategory,
EventInvolvedObject,
ExternalBlobStorageSource,
+ FailureToleranceConfig,
+ FallbackConfig,
+ FallbackModel,
+ FallbackRule,
+ FallbackWhen,
FastAiFramework,
FileInfo,
FlyteLaunchPlan,
@@ -140,7 +239,19 @@
ForwardAction,
Function,
FunctionSchema,
+ GatewayConfig,
+ GcpApiKeyAuth,
+ GcpGcr,
+ GcpGcs,
+ GcpGkeIntegration,
+ GcpGsm,
+ GcpIntegrations,
+ GcpKeyFileAuth,
+ GcpProviderAccount,
+ GcpProviderAccountAuthData,
+ GcpRegion,
GcpTpu,
+ GeminiModelV2,
GetAgentResponse,
GetAgentVersionResponse,
GetAlertsResponse,
@@ -177,9 +288,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,
@@ -196,9 +324,10 @@
Image,
ImageCommand,
ImageContentPart,
- ImageUrl,
- ImageUrlUrl,
- InferMethodName,
+ ImageContentPartImageUrl,
+ ImageContentPartImageUrlUrl,
+ InfraProviderAccount,
+ InputOutputBasedCostMetricValue,
Intercept,
InterceptRulesItem,
InterceptRulesItemAction,
@@ -208,6 +337,10 @@
InternalModelVersion,
InviteUserResponse,
IsClusterConnectedResponse,
+ JFrogIntegrations,
+ JfrogArtifactsRegistry,
+ JfrogBasicAuth,
+ JfrogProviderAccount,
Job,
JobAlert,
JobImage,
@@ -227,7 +360,8 @@
KafkaSaslAuth,
KerasFramework,
Kustomize,
- LibraryName,
+ LatencyBasedLoadBalanceTarget,
+ LatencyBasedLoadBalancingRule,
LightGbmFramework,
ListAgentVersionsResponse,
ListAgentsResponse,
@@ -258,6 +392,10 @@
ListVirtualAccountResponse,
ListWorkspacesResponse,
LiteralMap,
+ LoadBalanceTarget,
+ LoadBalancingConfig,
+ LoadBalancingRule,
+ LoadBalancingWhen,
LocalArtifactSource,
LocalModelSource,
LocalSource,
@@ -266,17 +404,32 @@
LogsSearchOperatorType,
LogsSortingDirection,
Manual,
+ McpServerAuth,
+ McpServerHeaderAuth,
+ McpServerIntegration,
+ McpServerIntegrations,
+ McpServerOAuth2,
+ McpServerProviderAccount,
Method,
Metric,
- MimeType,
MirrorAction,
+ MistralAiIntegrations,
+ MistralAiKeyAuth,
+ MistralAiModel,
+ MistralAiProviderAccount,
MlRepo,
MlRepoManifest,
Model,
+ ModelConfig,
ModelConfiguration,
+ ModelConfigurationParameters,
+ ModelConfigurationParametersStop,
+ ModelCostMetric,
ModelManifest,
ModelManifestFramework,
ModelManifestSource,
+ ModelProviderAccount,
+ ModelType,
ModelVersion,
ModelVersionEnvironment,
MultiPartUpload,
@@ -290,38 +443,84 @@
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 +537,11 @@
SecretInput,
SecretMount,
SecretVersion,
+ SelfHostedModel,
+ SelfHostedModelAuthData,
+ SelfHostedModelIntegrations,
+ SelfHostedModelModelServer,
+ SelfHostedModelProviderAccount,
Service,
ServiceAutoscaling,
ServiceAutoscalingMetrics,
@@ -347,9 +551,17 @@
SignedUrl,
SklearnFramework,
SklearnModelSchema,
+ SklearnModelSchemaInferMethodName,
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,
@@ -400,13 +616,26 @@
TracingProject,
TracingProjectManifest,
TransformersFramework,
+ TransformersFrameworkLibraryName,
TriggerJobRunResponse,
+ TrueFoundryApplyRequestManifest,
+ TrueFoundryApplyResponse,
+ TrueFoundryApplyResponseAction,
+ TrueFoundryApplyResponseExistingManifest,
TrueFoundryArtifactSource,
+ TrueFoundryDbssm,
+ TrueFoundryDeleteRequestManifest,
+ TrueFoundryIntegrations,
TrueFoundryInteractiveLogin,
TrueFoundryManagedSource,
+ TrueFoundryProviderAccount,
+ TtlIntegrations,
+ TtlProviderAccount,
+ TtlRegistry,
UpdateSecretInput,
UpdateUserRolesResponse,
UpgradeData,
+ UsageLimits,
User,
UserMessage,
UserMessageContent,
@@ -414,12 +643,21 @@
UserMetadata,
ValidationError,
ValidationErrorLocItem,
+ VertexModel,
+ VertexModelV2,
VirtualAccount,
VirtualAccountManifest,
Volume,
VolumeBrowser,
VolumeConfig,
VolumeMount,
+ WebhookBasicAuth,
+ WebhookBearerAuth,
+ WebhookIntegration,
+ WebhookIntegrationAuthData,
+ WebhookIntegrations,
+ WebhookProviderAccount,
+ WeightBasedLoadBalancingRule,
WorkbenchImage,
WorkerConfig,
WorkerConfigInputConfig,
@@ -498,17 +736,28 @@
"Agent",
"AgentApp",
"AgentManifest",
+ "AgentManifestWithFqn",
"AgentOpenApiToolManifest",
+ "AgentOpenApiToolManifestMethod",
"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 +791,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",
+ "BlobStorageReferenceMimeType",
"BlueGreen",
+ "BudgetConfig",
+ "BudgetLimitUnit",
+ "BudgetRule",
+ "BudgetWhen",
"Build",
"BuildBuildSource",
"BuildBuildSpec",
@@ -563,8 +863,8 @@
"Canary",
"CanaryStep",
"ChangePasswordResponse",
+ "ChatMessageTurn",
"ChatPromptManifest",
- "ChatPromptManifestMessagesItem",
"Cluster",
"ClusterGateway",
"ClusterManifest",
@@ -575,6 +875,10 @@
"ClusterType",
"ClustersDeleteResponse",
"Codeserver",
+ "CohereIntegrations",
+ "CohereKeyAuth",
+ "CohereModel",
+ "CohereProviderAccount",
"Collaborator",
"ConflictError",
"ContainerTaskConfig",
@@ -585,10 +889,33 @@
"CreateMultiPartUploadRequest",
"CreatePersonalAccessTokenResponse",
"CronMetric",
+ "CustomBasicAuth",
+ "CustomBearerAuth",
+ "CustomBlobStorage",
+ "CustomHelmRepo",
+ "CustomIntegrations",
+ "CustomJwtAuthIntegration",
+ "CustomMcpServerIntegration",
+ "CustomModel",
+ "CustomModelAuthData",
+ "CustomModelModelServer",
+ "CustomProviderAccount",
+ "CustomUsernamePasswordArtifactsRegistry",
"DataDirectory",
"DataDirectoryManifest",
"DataDirectoryManifestSource",
+ "DataDirectorySource",
+ "DatabricksApiKeyAuth",
+ "DatabricksIntegrations",
+ "DatabricksModel",
+ "DatabricksProviderAccount",
+ "DatabricksProviderAccountAuthData",
+ "DatabricksServicePrincipalAuth",
"DeactivateUserResponse",
+ "DeepinfraIntegrations",
+ "DeepinfraKeyAuth",
+ "DeepinfraModel",
+ "DeepinfraProviderAccount",
"DeleteApplicationResponse",
"DeleteJobRunResponse",
"DeletePersonalAccessTokenResponse",
@@ -605,8 +932,13 @@
"DeveloperMessageContent",
"DockerFileBuild",
"DockerFileBuildCommand",
+ "DockerhubBasicAuth",
+ "DockerhubIntegrations",
+ "DockerhubProviderAccount",
+ "DockerhubRegistry",
"DynamicVolumeConfig",
"Email",
+ "EmailNotificationChannel",
"EmptyResponse",
"Endpoint",
"Environment",
@@ -620,6 +952,11 @@
"ExpectationFailedError",
"ExternalBlobStorageSource",
"FailedDependencyError",
+ "FailureToleranceConfig",
+ "FallbackConfig",
+ "FallbackModel",
+ "FallbackRule",
+ "FallbackWhen",
"FastAiFramework",
"FileInfo",
"FlyteLaunchPlan",
@@ -637,7 +974,19 @@
"ForwardAction",
"Function",
"FunctionSchema",
+ "GatewayConfig",
+ "GcpApiKeyAuth",
+ "GcpGcr",
+ "GcpGcs",
+ "GcpGkeIntegration",
+ "GcpGsm",
+ "GcpIntegrations",
+ "GcpKeyFileAuth",
+ "GcpProviderAccount",
+ "GcpProviderAccountAuthData",
+ "GcpRegion",
"GcpTpu",
+ "GeminiModelV2",
"GetAgentResponse",
"GetAgentVersionResponse",
"GetAlertsResponse",
@@ -674,9 +1023,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",
@@ -693,9 +1059,10 @@
"Image",
"ImageCommand",
"ImageContentPart",
- "ImageUrl",
- "ImageUrlUrl",
- "InferMethodName",
+ "ImageContentPartImageUrl",
+ "ImageContentPartImageUrlUrl",
+ "InfraProviderAccount",
+ "InputOutputBasedCostMetricValue",
"Intercept",
"InterceptRulesItem",
"InterceptRulesItemAction",
@@ -705,6 +1072,10 @@
"InternalModelVersion",
"InviteUserResponse",
"IsClusterConnectedResponse",
+ "JFrogIntegrations",
+ "JfrogArtifactsRegistry",
+ "JfrogBasicAuth",
+ "JfrogProviderAccount",
"Job",
"JobAlert",
"JobImage",
@@ -724,7 +1095,8 @@
"KafkaSaslAuth",
"KerasFramework",
"Kustomize",
- "LibraryName",
+ "LatencyBasedLoadBalanceTarget",
+ "LatencyBasedLoadBalancingRule",
"LightGbmFramework",
"ListAgentVersionsResponse",
"ListAgentsResponse",
@@ -755,6 +1127,10 @@
"ListVirtualAccountResponse",
"ListWorkspacesResponse",
"LiteralMap",
+ "LoadBalanceTarget",
+ "LoadBalancingConfig",
+ "LoadBalancingRule",
+ "LoadBalancingWhen",
"LocalArtifactSource",
"LocalModelSource",
"LocalSource",
@@ -763,18 +1139,33 @@
"LogsSearchOperatorType",
"LogsSortingDirection",
"Manual",
+ "McpServerAuth",
+ "McpServerHeaderAuth",
+ "McpServerIntegration",
+ "McpServerIntegrations",
+ "McpServerOAuth2",
+ "McpServerProviderAccount",
"Method",
"MethodNotAllowedError",
"Metric",
- "MimeType",
"MirrorAction",
+ "MistralAiIntegrations",
+ "MistralAiKeyAuth",
+ "MistralAiModel",
+ "MistralAiProviderAccount",
"MlRepo",
"MlRepoManifest",
"Model",
+ "ModelConfig",
"ModelConfiguration",
+ "ModelConfigurationParameters",
+ "ModelConfigurationParametersStop",
+ "ModelCostMetric",
"ModelManifest",
"ModelManifestFramework",
"ModelManifestSource",
+ "ModelProviderAccount",
+ "ModelType",
"ModelVersion",
"ModelVersionEnvironment",
"MultiPartUpload",
@@ -788,40 +1179,86 @@
"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",
@@ -847,9 +1289,17 @@
"SignedUrl",
"SklearnFramework",
"SklearnModelSchema",
+ "SklearnModelSchemaInferMethodName",
"SklearnSerializationFormat",
"SlackBot",
+ "SlackBotAuth",
+ "SlackBotIntegration",
+ "SlackIntegrations",
+ "SlackProviderAccount",
"SlackWebhook",
+ "SlackWebhookAuth",
+ "SlackWebhookIntegration",
+ "SmtpCredentials",
"SpaCyFramework",
"SparkBuild",
"SparkConfig",
@@ -891,6 +1341,10 @@
"TerminateJobResponse",
"TextContentPart",
"TextContentPartText",
+ "TogetherAiIntegrations",
+ "TogetherAiKeyAuth",
+ "TogetherAiModel",
+ "TogetherAiProviderAccount",
"TokenPagination",
"Tool",
"ToolCall",
@@ -901,17 +1355,30 @@
"TracingProject",
"TracingProjectManifest",
"TransformersFramework",
+ "TransformersFrameworkLibraryName",
"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 +1386,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/agents/client.py b/src/truefoundry_sdk/agents/client.py
index e520a56c..fe5d3f8e 100644
--- a/src/truefoundry_sdk/agents/client.py
+++ b/src/truefoundry_sdk/agents/client.py
@@ -162,13 +162,7 @@ def create_or_update(
)
client.agents.create_or_update(
manifest=AgentManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- goal="goal",
- instruction="instruction",
- available_tools=["available_tools"],
- model_id="model_id",
),
)
"""
@@ -352,13 +346,7 @@ async def create_or_update(
async def main() -> None:
await client.agents.create_or_update(
manifest=AgentManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- goal="goal",
- instruction="instruction",
- available_tools=["available_tools"],
- model_id="model_id",
),
)
diff --git a/src/truefoundry_sdk/artifact_versions/client.py b/src/truefoundry_sdk/artifact_versions/client.py
index 99ebd35f..5dfa1202 100644
--- a/src/truefoundry_sdk/artifact_versions/client.py
+++ b/src/truefoundry_sdk/artifact_versions/client.py
@@ -263,7 +263,7 @@ def stage(
Examples
--------
- from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
+ from truefoundry_sdk import ModelManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -271,10 +271,7 @@ def stage(
)
client.artifact_versions.stage(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
"""
@@ -648,11 +645,7 @@ async def stage(
--------
import asyncio
- from truefoundry_sdk import (
- AsyncTrueFoundry,
- ModelManifest,
- TrueFoundryManagedSource,
- )
+ from truefoundry_sdk import AsyncTrueFoundry, ModelManifest
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -663,10 +656,7 @@ async def stage(
async def main() -> None:
await client.artifact_versions.stage(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/artifacts/client.py b/src/truefoundry_sdk/artifacts/client.py
index e3b894fb..bd6a8684 100644
--- a/src/truefoundry_sdk/artifacts/client.py
+++ b/src/truefoundry_sdk/artifacts/client.py
@@ -157,11 +157,7 @@ def create_or_update(
Examples
--------
- from truefoundry_sdk import (
- ArtifactManifest,
- TrueFoundry,
- TrueFoundryManagedSource,
- )
+ from truefoundry_sdk import ArtifactManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -169,10 +165,7 @@ def create_or_update(
)
client.artifacts.create_or_update(
manifest=ArtifactManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
"""
@@ -348,11 +341,7 @@ async def create_or_update(
--------
import asyncio
- from truefoundry_sdk import (
- ArtifactManifest,
- AsyncTrueFoundry,
- TrueFoundryManagedSource,
- )
+ from truefoundry_sdk import ArtifactManifest, AsyncTrueFoundry
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -363,10 +352,7 @@ async def create_or_update(
async def main() -> None:
await client.artifacts.create_or_update(
manifest=ArtifactManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
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/internal/ml/client.py b/src/truefoundry_sdk/internal/ml/client.py
index 5158ce6f..c4ae50fe 100644
--- a/src/truefoundry_sdk/internal/ml/client.py
+++ b/src/truefoundry_sdk/internal/ml/client.py
@@ -47,7 +47,7 @@ def apply(
Examples
--------
- from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
+ from truefoundry_sdk import ModelManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -55,10 +55,7 @@ def apply(
)
client.internal.ml.apply(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
"""
@@ -83,7 +80,7 @@ def delete(
Examples
--------
- from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
+ from truefoundry_sdk import ModelManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -91,10 +88,7 @@ def delete(
)
client.internal.ml.delete(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
"""
@@ -137,11 +131,7 @@ async def apply(
--------
import asyncio
- from truefoundry_sdk import (
- AsyncTrueFoundry,
- ModelManifest,
- TrueFoundryManagedSource,
- )
+ from truefoundry_sdk import AsyncTrueFoundry, ModelManifest
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -152,10 +142,7 @@ async def apply(
async def main() -> None:
await client.internal.ml.apply(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
@@ -185,11 +172,7 @@ async def delete(
--------
import asyncio
- from truefoundry_sdk import (
- AsyncTrueFoundry,
- ModelManifest,
- TrueFoundryManagedSource,
- )
+ from truefoundry_sdk import AsyncTrueFoundry, ModelManifest
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -200,10 +183,7 @@ async def delete(
async def main() -> None:
await client.internal.ml.delete(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/models/client.py b/src/truefoundry_sdk/models/client.py
index 3968951c..1d1924e5 100644
--- a/src/truefoundry_sdk/models/client.py
+++ b/src/truefoundry_sdk/models/client.py
@@ -157,7 +157,7 @@ def create_or_update(
Examples
--------
- from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
+ from truefoundry_sdk import ModelManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -165,10 +165,7 @@ def create_or_update(
)
client.models.create_or_update(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
"""
@@ -344,11 +341,7 @@ async def create_or_update(
--------
import asyncio
- from truefoundry_sdk import (
- AsyncTrueFoundry,
- ModelManifest,
- TrueFoundryManagedSource,
- )
+ from truefoundry_sdk import AsyncTrueFoundry, ModelManifest
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -359,10 +352,7 @@ async def create_or_update(
async def main() -> None:
await client.models.create_or_update(
manifest=ModelManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/prompts/client.py b/src/truefoundry_sdk/prompts/client.py
index 2a72e8d6..099c2e41 100644
--- a/src/truefoundry_sdk/prompts/client.py
+++ b/src/truefoundry_sdk/prompts/client.py
@@ -154,7 +154,7 @@ def create_or_update(
Examples
--------
- from truefoundry_sdk import ChatPromptManifest, SystemMessage, TrueFoundry
+ from truefoundry_sdk import ChatPromptManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -162,14 +162,7 @@ def create_or_update(
)
client.prompts.create_or_update(
manifest=ChatPromptManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- messages=[
- SystemMessage(
- content="content",
- )
- ],
),
)
"""
@@ -342,7 +335,7 @@ async def create_or_update(
--------
import asyncio
- from truefoundry_sdk import AsyncTrueFoundry, ChatPromptManifest, SystemMessage
+ from truefoundry_sdk import AsyncTrueFoundry, ChatPromptManifest
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -353,14 +346,7 @@ async def create_or_update(
async def main() -> None:
await client.prompts.create_or_update(
manifest=ChatPromptManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- messages=[
- SystemMessage(
- content="content",
- )
- ],
),
)
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/tools/client.py b/src/truefoundry_sdk/tools/client.py
index 02f60bed..672a637a 100644
--- a/src/truefoundry_sdk/tools/client.py
+++ b/src/truefoundry_sdk/tools/client.py
@@ -154,13 +154,7 @@ def create_or_update(
Examples
--------
- from truefoundry_sdk import (
- AgentOpenApiToolManifest,
- BlobStorageReference,
- Method,
- MimeType,
- TrueFoundry,
- )
+ from truefoundry_sdk import AgentOpenApiToolManifest, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -168,16 +162,7 @@ def create_or_update(
)
client.tools.create_or_update(
manifest=AgentOpenApiToolManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- openapi_spec=BlobStorageReference(
- path="path",
- mime_type=MimeType.TEXT_PLAIN,
- ),
- base_url="base_url",
- path="path",
- method=Method.GET,
),
)
"""
@@ -350,13 +335,7 @@ async def create_or_update(
--------
import asyncio
- from truefoundry_sdk import (
- AgentOpenApiToolManifest,
- AsyncTrueFoundry,
- BlobStorageReference,
- Method,
- MimeType,
- )
+ from truefoundry_sdk import AgentOpenApiToolManifest, AsyncTrueFoundry
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -367,16 +346,7 @@ async def create_or_update(
async def main() -> None:
await client.tools.create_or_update(
manifest=AgentOpenApiToolManifest(
- name="name",
metadata={"key": "value"},
- ml_repo="ml_repo",
- openapi_spec=BlobStorageReference(
- path="path",
- mime_type=MimeType.TEXT_PLAIN,
- ),
- base_url="base_url",
- path="path",
- method=Method.GET,
),
)
diff --git a/src/truefoundry_sdk/types/__init__.py b/src/truefoundry_sdk/types/__init__.py
index 0141feac..c405b84c 100644
--- a/src/truefoundry_sdk/types/__init__.py
+++ b/src/truefoundry_sdk/types/__init__.py
@@ -13,17 +13,28 @@
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_method import AgentOpenApiToolManifestMethod
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 +64,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 .blob_storage_reference_mime_type import BlobStorageReferenceMimeType
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
@@ -73,8 +135,8 @@
from .canary import Canary
from .canary_step import CanaryStep
from .change_password_response import ChangePasswordResponse
+from .chat_message_turn import ChatMessageTurn
from .chat_prompt_manifest import ChatPromptManifest
-from .chat_prompt_manifest_messages_item import ChatPromptManifestMessagesItem
from .cluster import Cluster
from .cluster_gateway import ClusterGateway
from .cluster_manifest import ClusterManifest
@@ -84,6 +146,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 +159,33 @@
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 .data_directory_source import DataDirectorySource
+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 +202,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 +220,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 +241,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 +290,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
@@ -198,9 +326,10 @@
from .image import Image
from .image_command import ImageCommand
from .image_content_part import ImageContentPart
-from .image_url import ImageUrl
-from .image_url_url import ImageUrlUrl
-from .infer_method_name import InferMethodName
+from .image_content_part_image_url import ImageContentPartImageUrl
+from .image_content_part_image_url_url import ImageContentPartImageUrlUrl
+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 +339,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,7 +362,8 @@
from .kafka_sasl_auth import KafkaSaslAuth
from .keras_framework import KerasFramework
from .kustomize import Kustomize
-from .library_name import LibraryName
+from .latency_based_load_balance_target import LatencyBasedLoadBalanceTarget
+from .latency_based_load_balancing_rule import LatencyBasedLoadBalancingRule
from .light_gbm_framework import LightGbmFramework
from .list_agent_versions_response import ListAgentVersionsResponse
from .list_agents_response import ListAgentsResponse
@@ -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,32 @@
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_configuration_parameters import ModelConfigurationParameters
+from .model_configuration_parameters_stop import ModelConfigurationParametersStop
+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 +445,84 @@
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 +536,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
@@ -346,9 +550,17 @@
from .signed_url import SignedUrl
from .sklearn_framework import SklearnFramework
from .sklearn_model_schema import SklearnModelSchema
+from .sklearn_model_schema_infer_method_name import SklearnModelSchemaInferMethodName
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
@@ -399,13 +615,26 @@
from .tracing_project import TracingProject
from .tracing_project_manifest import TracingProjectManifest
from .transformers_framework import TransformersFramework
+from .transformers_framework_library_name import TransformersFrameworkLibraryName
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 +642,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 +680,28 @@
"Agent",
"AgentApp",
"AgentManifest",
+ "AgentManifestWithFqn",
"AgentOpenApiToolManifest",
+ "AgentOpenApiToolManifestMethod",
"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 +731,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",
+ "BlobStorageReferenceMimeType",
"BlueGreen",
+ "BudgetConfig",
+ "BudgetLimitUnit",
+ "BudgetRule",
+ "BudgetWhen",
"Build",
"BuildBuildSource",
"BuildBuildSpec",
@@ -502,8 +802,8 @@
"Canary",
"CanaryStep",
"ChangePasswordResponse",
+ "ChatMessageTurn",
"ChatPromptManifest",
- "ChatPromptManifestMessagesItem",
"Cluster",
"ClusterGateway",
"ClusterManifest",
@@ -513,6 +813,10 @@
"ClusterManifestWorkbenchConfig",
"ClusterType",
"Codeserver",
+ "CohereIntegrations",
+ "CohereKeyAuth",
+ "CohereModel",
+ "CohereProviderAccount",
"Collaborator",
"ContainerTaskConfig",
"ContainerTaskConfigImage",
@@ -522,10 +826,33 @@
"CreateMultiPartUploadRequest",
"CreatePersonalAccessTokenResponse",
"CronMetric",
+ "CustomBasicAuth",
+ "CustomBearerAuth",
+ "CustomBlobStorage",
+ "CustomHelmRepo",
+ "CustomIntegrations",
+ "CustomJwtAuthIntegration",
+ "CustomMcpServerIntegration",
+ "CustomModel",
+ "CustomModelAuthData",
+ "CustomModelModelServer",
+ "CustomProviderAccount",
+ "CustomUsernamePasswordArtifactsRegistry",
"DataDirectory",
"DataDirectoryManifest",
"DataDirectoryManifestSource",
+ "DataDirectorySource",
+ "DatabricksApiKeyAuth",
+ "DatabricksIntegrations",
+ "DatabricksModel",
+ "DatabricksProviderAccount",
+ "DatabricksProviderAccountAuthData",
+ "DatabricksServicePrincipalAuth",
"DeactivateUserResponse",
+ "DeepinfraIntegrations",
+ "DeepinfraKeyAuth",
+ "DeepinfraModel",
+ "DeepinfraProviderAccount",
"DeleteApplicationResponse",
"DeleteJobRunResponse",
"DeletePersonalAccessTokenResponse",
@@ -542,8 +869,13 @@
"DeveloperMessageContent",
"DockerFileBuild",
"DockerFileBuildCommand",
+ "DockerhubBasicAuth",
+ "DockerhubIntegrations",
+ "DockerhubProviderAccount",
+ "DockerhubRegistry",
"DynamicVolumeConfig",
"Email",
+ "EmailNotificationChannel",
"EmptyResponse",
"Endpoint",
"Environment",
@@ -555,6 +887,11 @@
"EventChartCategory",
"EventInvolvedObject",
"ExternalBlobStorageSource",
+ "FailureToleranceConfig",
+ "FallbackConfig",
+ "FallbackModel",
+ "FallbackRule",
+ "FallbackWhen",
"FastAiFramework",
"FileInfo",
"FlyteLaunchPlan",
@@ -571,7 +908,19 @@
"ForwardAction",
"Function",
"FunctionSchema",
+ "GatewayConfig",
+ "GcpApiKeyAuth",
+ "GcpGcr",
+ "GcpGcs",
+ "GcpGkeIntegration",
+ "GcpGsm",
+ "GcpIntegrations",
+ "GcpKeyFileAuth",
+ "GcpProviderAccount",
+ "GcpProviderAccountAuthData",
+ "GcpRegion",
"GcpTpu",
+ "GeminiModelV2",
"GetAgentResponse",
"GetAgentVersionResponse",
"GetAlertsResponse",
@@ -608,9 +957,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",
@@ -627,9 +993,10 @@
"Image",
"ImageCommand",
"ImageContentPart",
- "ImageUrl",
- "ImageUrlUrl",
- "InferMethodName",
+ "ImageContentPartImageUrl",
+ "ImageContentPartImageUrlUrl",
+ "InfraProviderAccount",
+ "InputOutputBasedCostMetricValue",
"Intercept",
"InterceptRulesItem",
"InterceptRulesItemAction",
@@ -639,6 +1006,10 @@
"InternalModelVersion",
"InviteUserResponse",
"IsClusterConnectedResponse",
+ "JFrogIntegrations",
+ "JfrogArtifactsRegistry",
+ "JfrogBasicAuth",
+ "JfrogProviderAccount",
"Job",
"JobAlert",
"JobImage",
@@ -658,7 +1029,8 @@
"KafkaSaslAuth",
"KerasFramework",
"Kustomize",
- "LibraryName",
+ "LatencyBasedLoadBalanceTarget",
+ "LatencyBasedLoadBalancingRule",
"LightGbmFramework",
"ListAgentVersionsResponse",
"ListAgentsResponse",
@@ -689,6 +1061,10 @@
"ListVirtualAccountResponse",
"ListWorkspacesResponse",
"LiteralMap",
+ "LoadBalanceTarget",
+ "LoadBalancingConfig",
+ "LoadBalancingRule",
+ "LoadBalancingWhen",
"LocalArtifactSource",
"LocalModelSource",
"LocalSource",
@@ -697,17 +1073,32 @@
"LogsSearchOperatorType",
"LogsSortingDirection",
"Manual",
+ "McpServerAuth",
+ "McpServerHeaderAuth",
+ "McpServerIntegration",
+ "McpServerIntegrations",
+ "McpServerOAuth2",
+ "McpServerProviderAccount",
"Method",
"Metric",
- "MimeType",
"MirrorAction",
+ "MistralAiIntegrations",
+ "MistralAiKeyAuth",
+ "MistralAiModel",
+ "MistralAiProviderAccount",
"MlRepo",
"MlRepoManifest",
"Model",
+ "ModelConfig",
"ModelConfiguration",
+ "ModelConfigurationParameters",
+ "ModelConfigurationParametersStop",
+ "ModelCostMetric",
"ModelManifest",
"ModelManifestFramework",
"ModelManifestSource",
+ "ModelProviderAccount",
+ "ModelType",
"ModelVersion",
"ModelVersionEnvironment",
"MultiPartUpload",
@@ -721,38 +1112,84 @@
"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",
@@ -778,9 +1220,17 @@
"SignedUrl",
"SklearnFramework",
"SklearnModelSchema",
+ "SklearnModelSchemaInferMethodName",
"SklearnSerializationFormat",
"SlackBot",
+ "SlackBotAuth",
+ "SlackBotIntegration",
+ "SlackIntegrations",
+ "SlackProviderAccount",
"SlackWebhook",
+ "SlackWebhookAuth",
+ "SlackWebhookIntegration",
+ "SmtpCredentials",
"SpaCyFramework",
"SparkBuild",
"SparkConfig",
@@ -821,6 +1271,10 @@
"TerminateJobResponse",
"TextContentPart",
"TextContentPartText",
+ "TogetherAiIntegrations",
+ "TogetherAiKeyAuth",
+ "TogetherAiModel",
+ "TogetherAiProviderAccount",
"TokenPagination",
"Tool",
"ToolCall",
@@ -831,13 +1285,26 @@
"TracingProject",
"TracingProjectManifest",
"TransformersFramework",
+ "TransformersFrameworkLibraryName",
"TriggerJobRunResponse",
+ "TrueFoundryApplyRequestManifest",
+ "TrueFoundryApplyResponse",
+ "TrueFoundryApplyResponseAction",
+ "TrueFoundryApplyResponseExistingManifest",
"TrueFoundryArtifactSource",
+ "TrueFoundryDbssm",
+ "TrueFoundryDeleteRequestManifest",
+ "TrueFoundryIntegrations",
"TrueFoundryInteractiveLogin",
"TrueFoundryManagedSource",
+ "TrueFoundryProviderAccount",
+ "TtlIntegrations",
+ "TtlProviderAccount",
+ "TtlRegistry",
"UpdateSecretInput",
"UpdateUserRolesResponse",
"UpgradeData",
+ "UsageLimits",
"User",
"UserMessage",
"UserMessageContent",
@@ -845,12 +1312,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_manifest.py b/src/truefoundry_sdk/types/agent_manifest.py
index c7d1be76..ad947b9a 100644
--- a/src/truefoundry_sdk/types/agent_manifest.py
+++ b/src/truefoundry_sdk/types/agent_manifest.py
@@ -3,59 +3,48 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from .base_artifact_version import BaseArtifactVersion
-class AgentManifest(UniversalBaseModel):
- """
- Agent manifest.
- """
-
- name: str = pydantic.Field()
- """
- Name of the entity
- """
-
- description: typing.Optional[str] = None
- metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
- """
- Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
- """
-
- version_alias: typing.Optional[str] = pydantic.Field(default=None)
- """
- Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
- """
-
- ml_repo: str = pydantic.Field()
- """
- Name of the ML Repo
- """
-
- version: typing.Optional[int] = pydantic.Field(default=None)
- """
- Version of the entity
- """
-
+class AgentManifest(BaseArtifactVersion):
type: typing.Literal["agent"] = "agent"
- goal: str = pydantic.Field()
+ goal: typing.Optional[str] = pydantic.Field(default=None)
"""
- Short form description. Will be used as `description` when this agent is used as a tool.
+ +sort=100
+ +uiType=TextArea
+ +label=Goal
+ +usage=Short form description. Will be used as `description` when this agent is used as a tool.
+ +uiProps={"descriptionInline":true}
"""
- instruction: str = pydantic.Field()
+ instruction: typing.Optional[str] = pydantic.Field(default=None)
"""
- Instructions for the agent to follow to achieve the goal
+ `instruction` is the system prompt for now. (2.5 * 1024)
+ +sort=150
+ +uiType=AgentInstructions
+ +uiProps={"helpText":"Use the syntax ${Tool FQN} to reference a tool, and ${AGENT FQN} to reference another agent"}
+ +label=Instructions
+ +usage=Instructions for the agent to follow to achieve the goal
+ +uiProps={"descriptionInline":true}
"""
- available_tools: typing.List[str] = pydantic.Field()
+ available_tools: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
"""
- Tools available to the agent
+ +sort=200
+ +uiType=Hidden
+ +label=Tools
+ +usage=Tools available to the agent
+ +uiProps={"descriptionInline":true}
"""
- model_id: str = pydantic.Field()
+ model_id: typing.Optional[str] = pydantic.Field(default=None)
"""
- Model to use when running the agent
+ +sort=300
+ +uiType=EnabledModelSelector
+ +uiProps={"searchable":true,"modelType":"chat","providerType":"openai"}
+ +label=Model
+ +usage=Model to use when running the agent
"""
if IS_PYDANTIC_V2:
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_manifest.py b/src/truefoundry_sdk/types/agent_open_api_tool_manifest.py
index c2dc3dfb..f6469002 100644
--- a/src/truefoundry_sdk/types/agent_open_api_tool_manifest.py
+++ b/src/truefoundry_sdk/types/agent_open_api_tool_manifest.py
@@ -3,66 +3,58 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from .agent_open_api_tool_manifest_method import AgentOpenApiToolManifestMethod
from .agent_open_api_tool_manifest_openapi_spec import AgentOpenApiToolManifestOpenapiSpec
-from .method import Method
+from .base_artifact_version import BaseArtifactVersion
-class AgentOpenApiToolManifest(UniversalBaseModel):
- """
- Agent OpenAPI Tool manifest.
- """
-
- name: str = pydantic.Field()
- """
- Name of the entity
- """
-
- description: typing.Optional[str] = None
- metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
- """
- Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
- """
-
- version_alias: typing.Optional[str] = pydantic.Field(default=None)
- """
- Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
- """
-
- ml_repo: str = pydantic.Field()
- """
- Name of the ML Repo
- """
-
- version: typing.Optional[int] = pydantic.Field(default=None)
- """
- Version of the entity
- """
-
+class AgentOpenApiToolManifest(BaseArtifactVersion):
type: typing.Literal["openapi-tool"] = "openapi-tool"
- openapi_spec: AgentOpenApiToolManifestOpenapiSpec = pydantic.Field()
+ openapi_spec: typing.Optional[AgentOpenApiToolManifestOpenapiSpec] = pydantic.Field(default=None)
"""
- OpenAPI Spec for the tool describing the API, endpoints and parameters. [Sample OpenAPI Spec Link](https://assets.production.truefoundry.com/sample-openapi.json)
+ +sort=20
+ +uiType=OpenapiSchema
+ +label=OpenAPI Spec
+ +usage=OpenAPI Spec for the tool describing the API, endpoints and parameters. [Sample OpenAPI Spec Link](https://assets.production.truefoundry.com/sample-openapi.json)
+ +uiProps={"descriptionInline":true}
+ +placeholder={"openapi":"3.0.0","info":{"title":"LLM Agent Tools API","version":"1.0.0"},"servers":[{"url":"https://api.example.com/v1"}],"paths":{"/weather":{"get":{"summary":"Get current weather","description":"Fetches the current weather for a given location.","parameters":[{"name":"location","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string"},"temperature":{"type":"number"},"condition":{"type":"string"}}}}}}}}}}}
"""
- base_url: str = pydantic.Field()
+ base_url: typing.Optional[str] = pydantic.Field(default=None)
"""
- HTTP endpoint where the API is hosted for the tools. E.g. `https://api.example.com/v1`
+ +sort=30
+ +label=Base URL
+ +usage=HTTP endpoint where the API is hosted for the tools. E.g. `https://api.example.com/v1`
+ +uiProps={"descriptionInline":true}
+ +placeholder=https://api.example.com/v1
"""
- path: str = pydantic.Field()
+ path: typing.Optional[str] = pydantic.Field(default=None)
"""
- API Route Path for the tool call HTTP request. E.g. `GET /weather`
+ +sort=40
+ +uiType=MethodPathSelector
+ +label=API Route Path
+ +usage=API Route Path for the tool call HTTP request. E.g. `GET /weather`
+ +uiProps={"descriptionInline":true}
"""
- method: Method = pydantic.Field()
+ method: typing.Optional[AgentOpenApiToolManifestMethod] = pydantic.Field(default=None)
"""
- HTTP Method for the tool call HTTP request
+ +sort=50
+ +uiType=Hidden
+ +label=API HTTP Method
+ +usage=HTTP Method for the tool call HTTP request
"""
headers: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
"""
- HTTP Headers for the tool call HTTP request. E.g. `Authorization: Bearer `
+ +sort=60
+ +uiType=KV
+ +uiProps={"allowSecrets":true,"secretConfig":{"enableNew":true,"hideOptions":true}}
+ +label=Headers
+ +usage=HTTP Headers for the tool call HTTP request. E.g. `Authorization: Bearer `
+ +uiProps={"descriptionInline":true}
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/agent_open_api_tool_manifest_method.py b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_method.py
new file mode 100644
index 00000000..ed96fabd
--- /dev/null
+++ b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_method.py
@@ -0,0 +1,40 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import enum
+import typing
+
+T_Result = typing.TypeVar("T_Result")
+
+
+class AgentOpenApiToolManifestMethod(str, enum.Enum):
+ """
+ +sort=50
+ +uiType=Hidden
+ +label=API HTTP Method
+ +usage=HTTP Method for the tool call HTTP request
+ """
+
+ GET = "get"
+ POST = "post"
+ PUT = "put"
+ DELETE = "delete"
+ PATCH = "patch"
+
+ def visit(
+ self,
+ get: typing.Callable[[], T_Result],
+ post: typing.Callable[[], T_Result],
+ put: typing.Callable[[], T_Result],
+ delete: typing.Callable[[], T_Result],
+ patch: typing.Callable[[], T_Result],
+ ) -> T_Result:
+ if self is AgentOpenApiToolManifestMethod.GET:
+ return get()
+ if self is AgentOpenApiToolManifestMethod.POST:
+ return post()
+ if self is AgentOpenApiToolManifestMethod.PUT:
+ return put()
+ if self is AgentOpenApiToolManifestMethod.DELETE:
+ return delete()
+ if self is AgentOpenApiToolManifestMethod.PATCH:
+ return patch()
diff --git a/src/truefoundry_sdk/types/agent_open_api_tool_manifest_openapi_spec.py b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_openapi_spec.py
index 5976442c..85a561e9 100644
--- a/src/truefoundry_sdk/types/agent_open_api_tool_manifest_openapi_spec.py
+++ b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_openapi_spec.py
@@ -4,4 +4,4 @@
from .blob_storage_reference import BlobStorageReference
-AgentOpenApiToolManifestOpenapiSpec = typing.Union[BlobStorageReference, typing.Dict[str, typing.Optional[typing.Any]]]
+AgentOpenApiToolManifestOpenapiSpec = typing.Union[BlobStorageReference, typing.Optional[typing.Any]]
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/artifact_manifest.py b/src/truefoundry_sdk/types/artifact_manifest.py
index 2d438a4d..ded37bb6 100644
--- a/src/truefoundry_sdk/types/artifact_manifest.py
+++ b/src/truefoundry_sdk/types/artifact_manifest.py
@@ -3,51 +3,36 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
from .artifact_manifest_source import ArtifactManifestSource
+from .base_artifact_version import BaseArtifactVersion
-class ArtifactManifest(UniversalBaseModel):
+class ArtifactManifest(BaseArtifactVersion):
"""
- Artifact Version manifest.
+ +label=Artifact Version
+ +usage=Log a new Artifact Version containing files and folders with metadata
"""
- name: str = pydantic.Field()
- """
- Name of the entity
- """
-
- description: typing.Optional[str] = None
- metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
- """
- Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
- """
-
- version_alias: typing.Optional[str] = pydantic.Field(default=None)
- """
- Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
- """
-
- ml_repo: str = pydantic.Field()
- """
- Name of the ML Repo
- """
-
- version: typing.Optional[int] = pydantic.Field(default=None)
+ type: typing.Literal["artifact-version"] = "artifact-version"
+ source: typing.Optional[ArtifactManifestSource] = pydantic.Field(default=None)
"""
- Version of the entity
+ +label=Artifact Source
+ +uiType=Group
"""
- type: typing.Literal["artifact-version"] = "artifact-version"
- source: ArtifactManifestSource
step: typing.Optional[int] = pydantic.Field(default=0)
"""
- Step/Epoch number in an iterative training loop the artifact version was created. Generally useful when logging a model version from a MLRepo Run
+ +label=Step
+ +usage=Step/Epoch number in an iterative training loop the artifact version was created. Generally useful when logging a model version from a MLRepo Run
+ +uiProps={"descriptionInline":true}
"""
run_id: typing.Optional[str] = pydantic.Field(default=None)
"""
- ID of the MLRepo Run that generated the artifact version
+ +label=Run ID
+ +usage=ID of the MLRepo Run that generated the artifact version
+ +uiType=Hidden
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/artifact_path.py b/src/truefoundry_sdk/types/artifact_path.py
index 0f5af17e..36d41d37 100644
--- a/src/truefoundry_sdk/types/artifact_path.py
+++ b/src/truefoundry_sdk/types/artifact_path.py
@@ -9,12 +9,14 @@
class ArtifactPath(UniversalBaseModel):
src: str = pydantic.Field()
"""
- Local file or folder path
+ +label=Source path
+ +usage=Local file or folder path
"""
dest: typing.Optional[str] = pydantic.Field(default=None)
"""
- Relative path where the file or folder will be uploaded to in the artifact
+ +label=Destination path
+ +usage=Relative path where the file or folder will be uploaded to in the artifact
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/assistant_message.py b/src/truefoundry_sdk/types/assistant_message.py
index 7dfb4261..1df25669 100644
--- a/src/truefoundry_sdk/types/assistant_message.py
+++ b/src/truefoundry_sdk/types/assistant_message.py
@@ -10,27 +10,36 @@
class AssistantMessage(UniversalBaseModel):
"""
- Assistant message turn
+ +label=Assistant Message
+ +usage=Assistant message turn
"""
role: typing.Literal["assistant"] = pydantic.Field(default="assistant")
"""
- Role of the message
+ +value=assistant
+ +label=Role
+ +usage=Role of the message
+ +uiType=Ignore
"""
content: typing.Optional[AssistantMessageContent] = pydantic.Field(default=None)
"""
- Text content for the assistant message
+ +label=Content
+ +usage=Text content for the assistant message
+ +uiType=CodeEditor
+ +uiProps={"language": "text"}
"""
tool_calls: typing.Optional[typing.List[ToolCall]] = pydantic.Field(default=None)
"""
- List of tool calls made by the assistant
+ +label=Tool Calls
+ +usage=List of tool calls made by the assistant
"""
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- Name of the assistant this message is from
+ +label=Name
+ +usage=Name of the assistant this message is from
"""
if IS_PYDANTIC_V2:
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_artifact_version.py b/src/truefoundry_sdk/types/base_artifact_version.py
index 3a3fee30..91a64ad1 100644
--- a/src/truefoundry_sdk/types/base_artifact_version.py
+++ b/src/truefoundry_sdk/types/base_artifact_version.py
@@ -1,23 +1,58 @@
# This file was auto-generated by Fern from our API Definition.
-import datetime as dt
import typing
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .base_artifact_version_manifest import BaseArtifactVersionManifest
-from .subject import Subject
class BaseArtifactVersion(UniversalBaseModel):
- id: str
- fqn: str
- created_by_subject: Subject
- created_at: typing.Optional[dt.datetime] = None
- updated_at: typing.Optional[dt.datetime] = None
- manifest: typing.Optional[BaseArtifactVersionManifest] = None
- usage_code_snippet: typing.Optional[str] = None
- ml_repo_id: str
+ name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ +sort=1
+ +label=Name
+ +message=The name should start with lowercase alphabets and can contain alphanumeric and can include '-' in between
+ +usage=Name of the entity
+ """
+
+ description: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ +sort=2
+ +label=Description
+ """
+
+ metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ +sort=50000
+ +label=Metadata
+ +usage=Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
+ +uiType=JsonInput
+ +uiProps={"descriptionInline":true}
+ """
+
+ version_alias: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ +sort=51000
+ +label=Version Alias
+ +usage=Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
+ +message=The version alias should start with `v` followed by alphanumeric and can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
+ +uiProps={"descriptionInline":true}
+ +placeholder=v1.0.0
+ """
+
+ ml_repo: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ +label=ML Repo
+ +usage=Name of the ML Repo
+ +uiType=Hidden
+ """
+
+ version: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ +label=Version of the entity
+ +usage=Version of the entity
+ +uiType=Hidden
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
diff --git a/src/truefoundry_sdk/types/base_artifact_version_manifest.py b/src/truefoundry_sdk/types/base_artifact_version_manifest.py
deleted file mode 100644
index c834d618..00000000
--- a/src/truefoundry_sdk/types/base_artifact_version_manifest.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# 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 .artifact_manifest import ArtifactManifest
-from .chat_prompt_manifest import ChatPromptManifest
-from .model_manifest import ModelManifest
-
-BaseArtifactVersionManifest = typing.Union[
- ModelManifest, ChatPromptManifest, AgentOpenApiToolManifest, ArtifactManifest, AgentManifest
-]
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/blob_storage_reference.py b/src/truefoundry_sdk/types/blob_storage_reference.py
index 9e418229..17f19d37 100644
--- a/src/truefoundry_sdk/types/blob_storage_reference.py
+++ b/src/truefoundry_sdk/types/blob_storage_reference.py
@@ -4,23 +4,31 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .mime_type import MimeType
+from .blob_storage_reference_mime_type import BlobStorageReferenceMimeType
class BlobStorageReference(UniversalBaseModel):
"""
- A reference to content offloaded to blob storage
+ +label=Blob Storage Reference
+ +usage=A reference to content offloaded to blob storage
+ +docs=Defines the structure for blob storage content references, including type, path, and mime_type
+ """
+
+ type: typing.Literal["blob-storage"] = pydantic.Field(default="blob-storage")
+ """
+ +value=blob-storage
"""
- type: typing.Literal["blob-storage"] = "blob-storage"
path: str = pydantic.Field()
"""
- Path to the content in blob storage
+ +label=Path
+ +usage=Path to the content in blob storage
"""
- mime_type: MimeType = pydantic.Field()
+ mime_type: BlobStorageReferenceMimeType = pydantic.Field()
"""
- MIME type of the content
+ +label=MIME Type
+ +usage=MIME type of the content
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/mime_type.py b/src/truefoundry_sdk/types/blob_storage_reference_mime_type.py
similarity index 66%
rename from src/truefoundry_sdk/types/mime_type.py
rename to src/truefoundry_sdk/types/blob_storage_reference_mime_type.py
index 13acf9a3..99dd4c15 100644
--- a/src/truefoundry_sdk/types/mime_type.py
+++ b/src/truefoundry_sdk/types/blob_storage_reference_mime_type.py
@@ -6,9 +6,10 @@
T_Result = typing.TypeVar("T_Result")
-class MimeType(str, enum.Enum):
+class BlobStorageReferenceMimeType(str, enum.Enum):
"""
- MIME type of the content
+ +label=MIME Type
+ +usage=MIME type of the content
"""
TEXT_PLAIN = "text/plain"
@@ -25,13 +26,13 @@ def visit(
image_jpeg: typing.Callable[[], T_Result],
application_x_directory: typing.Callable[[], T_Result],
) -> T_Result:
- if self is MimeType.TEXT_PLAIN:
+ if self is BlobStorageReferenceMimeType.TEXT_PLAIN:
return text_plain()
- if self is MimeType.APPLICATION_JSON:
+ if self is BlobStorageReferenceMimeType.APPLICATION_JSON:
return application_json()
- if self is MimeType.IMAGE_PNG:
+ if self is BlobStorageReferenceMimeType.IMAGE_PNG:
return image_png()
- if self is MimeType.IMAGE_JPEG:
+ if self is BlobStorageReferenceMimeType.IMAGE_JPEG:
return image_jpeg()
- if self is MimeType.APPLICATION_X_DIRECTORY:
+ if self is BlobStorageReferenceMimeType.APPLICATION_X_DIRECTORY:
return application_x_directory()
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/chat_prompt_manifest_messages_item.py b/src/truefoundry_sdk/types/chat_message_turn.py
similarity index 69%
rename from src/truefoundry_sdk/types/chat_prompt_manifest_messages_item.py
rename to src/truefoundry_sdk/types/chat_message_turn.py
index c355d64b..f1b701da 100644
--- a/src/truefoundry_sdk/types/chat_prompt_manifest_messages_item.py
+++ b/src/truefoundry_sdk/types/chat_message_turn.py
@@ -8,6 +8,4 @@
from .tool_message import ToolMessage
from .user_message import UserMessage
-ChatPromptManifestMessagesItem = typing.Union[
- SystemMessage, AssistantMessage, UserMessage, ToolMessage, DeveloperMessage
-]
+ChatMessageTurn = typing.Union[SystemMessage, AssistantMessage, UserMessage, ToolMessage, DeveloperMessage]
diff --git a/src/truefoundry_sdk/types/chat_prompt_manifest.py b/src/truefoundry_sdk/types/chat_prompt_manifest.py
index d5bb270a..f9064d8e 100644
--- a/src/truefoundry_sdk/types/chat_prompt_manifest.py
+++ b/src/truefoundry_sdk/types/chat_prompt_manifest.py
@@ -3,58 +3,40 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .chat_prompt_manifest_messages_item import ChatPromptManifestMessagesItem
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from .base_artifact_version import BaseArtifactVersion
+from .chat_message_turn import ChatMessageTurn
from .model_configuration import ModelConfiguration
from .tool_schema import ToolSchema
-class ChatPromptManifest(UniversalBaseModel):
+class ChatPromptManifest(BaseArtifactVersion):
"""
- Chat Prompt manifest.
- """
-
- name: str = pydantic.Field()
- """
- Name of the entity
- """
-
- description: typing.Optional[str] = None
- metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
- """
- Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
- """
-
- version_alias: typing.Optional[str] = pydantic.Field(default=None)
- """
- Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
- """
-
- ml_repo: str = pydantic.Field()
- """
- Name of the ML Repo
- """
-
- version: typing.Optional[int] = pydantic.Field(default=None)
- """
- Version of the entity
+ +label=Chat Prompt
+ +usage=Fill in the information for opening a new chat prompt
"""
type: typing.Literal["chat_prompt"] = "chat_prompt"
- messages: typing.List[ChatPromptManifestMessagesItem] = pydantic.Field()
+ messages: typing.Optional[typing.List[ChatMessageTurn]] = pydantic.Field(default=None)
"""
- List of messages in the chat conversation, must be non-empty
+ +sort=4000
+ +label=Messages in the chat conversation
+ +usage=List of messages in the chat conversation, must be non-empty
"""
- variables: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
+ variables: typing.Optional[typing.Dict[str, typing.Optional[str]]] = pydantic.Field(default=None)
"""
- Variables referenced in messages and that can be replaced when running generation
+ +label=Variables
+ +usage=Variables referenced in messages and that can be replaced when running generation
+ +sort=5000
"""
model_configuration: typing.Optional[ModelConfiguration] = None
tools: typing.Optional[typing.List[ToolSchema]] = pydantic.Field(default=None)
"""
- List of tools to be used in the chat prompt
+ +label=Tools
+ +usage=List of tools to be used in the chat prompt
+ +sort=7000
"""
if IS_PYDANTIC_V2:
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/data_directory.py b/src/truefoundry_sdk/types/data_directory.py
index f9d2d4c8..483355aa 100644
--- a/src/truefoundry_sdk/types/data_directory.py
+++ b/src/truefoundry_sdk/types/data_directory.py
@@ -1,24 +1,57 @@
# This file was auto-generated by Fern from our API Definition.
-import datetime as dt
import typing
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .data_directory_manifest import DataDirectoryManifest
-from .subject import Subject
+from .data_directory_source import DataDirectorySource
class DataDirectory(UniversalBaseModel):
- id: str
- ml_repo_id: str
- name: str
- fqn: str
- created_by_subject: Subject
- created_at: dt.datetime
- updated_at: dt.datetime
- manifest: DataDirectoryManifest
- usage_code_snippet: typing.Optional[str] = None
+ """
+ +label=Data Directory
+ """
+
+ type: typing.Literal["data-dir"] = pydantic.Field(default="data-dir")
+ """
+ +label=Type
+ +value=data-dir
+ """
+
+ name: str = pydantic.Field()
+ """
+ +sort=1
+ +label=Name
+ +usage=Name of the data directory
+ +message=The data directory name should start with lowercase alphabets and can contain alphanumeric and can include '-' in between
+ """
+
+ ml_repo: str = pydantic.Field()
+ """
+ +label=MLRepo
+ +usage=Name of the ML Repo to create the data directory under
+ +uiType=Hidden
+ """
+
+ description: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ +sort=2
+ +label=Description
+ +usage=Description for the data directory
+ """
+
+ metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ +label=Metadata
+ +usage=Key Value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
+ +uiType=JsonInput
+ """
+
+ source: DataDirectorySource = pydantic.Field()
+ """
+ +label=Data Directory Source
+ +uiType=Group
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
diff --git a/src/truefoundry_sdk/types/data_directory_source.py b/src/truefoundry_sdk/types/data_directory_source.py
new file mode 100644
index 00000000..09362053
--- /dev/null
+++ b/src/truefoundry_sdk/types/data_directory_source.py
@@ -0,0 +1,8 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from .external_blob_storage_source import ExternalBlobStorageSource
+from .true_foundry_managed_source import TrueFoundryManagedSource
+
+DataDirectorySource = typing.Union[TrueFoundryManagedSource, ExternalBlobStorageSource]
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/developer_message.py b/src/truefoundry_sdk/types/developer_message.py
index fa831843..124604c6 100644
--- a/src/truefoundry_sdk/types/developer_message.py
+++ b/src/truefoundry_sdk/types/developer_message.py
@@ -9,22 +9,27 @@
class DeveloperMessage(UniversalBaseModel):
"""
- Developer message for the chat
+ +label=Developer Message
+ +usage=Developer message for the chat
"""
role: typing.Literal["developer"] = pydantic.Field(default="developer")
"""
- The role of the messages author, in this case developer.
+ +value=Developer
+ +label=Role
+ +usage=The role of the messages author, in this case developer.
"""
content: DeveloperMessageContent = pydantic.Field()
"""
- The contents of the developer message.
+ +label=Content
+ +usage=The contents of the developer message.
"""
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- An optional name for the participant.
+ +label=Name
+ +usage=An optional name for the participant.
"""
if IS_PYDANTIC_V2:
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/external_blob_storage_source.py b/src/truefoundry_sdk/types/external_blob_storage_source.py
index 5eb00297..ff4f2cfb 100644
--- a/src/truefoundry_sdk/types/external_blob_storage_source.py
+++ b/src/truefoundry_sdk/types/external_blob_storage_source.py
@@ -7,14 +7,21 @@
class ExternalBlobStorageSource(UniversalBaseModel):
+ """
+ +label=External Blob Storage Source
+ """
+
type: typing.Literal["external"] = pydantic.Field(default="external")
"""
- Type of the source
+ +label=Type
+ +usage=Type of the source
+ +value=external
"""
uri: str = pydantic.Field()
"""
- URI referencing a path in the blob storage bucket linked to the MLRepo
+ +label=URI
+ +usage=URI referencing a path in the blob storage bucket linked to the MLRepo
"""
if IS_PYDANTIC_V2:
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/fast_ai_framework.py b/src/truefoundry_sdk/types/fast_ai_framework.py
index a9787fef..bd608613 100644
--- a/src/truefoundry_sdk/types/fast_ai_framework.py
+++ b/src/truefoundry_sdk/types/fast_ai_framework.py
@@ -7,9 +7,16 @@
class FastAiFramework(UniversalBaseModel):
+ """
+ +label=FastAI
+ +icon=fastai
+ """
+
type: typing.Literal["fastai"] = pydantic.Field(default="fastai")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=fastai
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/function.py b/src/truefoundry_sdk/types/function.py
index dbbc926e..539e8777 100644
--- a/src/truefoundry_sdk/types/function.py
+++ b/src/truefoundry_sdk/types/function.py
@@ -9,12 +9,14 @@
class Function(UniversalBaseModel):
name: str = pydantic.Field()
"""
- Name of the tool/function being called
+ +label=Name
+ +usage=Name of the tool/function being called
"""
arguments: str = pydantic.Field()
"""
- Arguments passed to the tool/function
+ +label=Arguments
+ +usage=Arguments passed to the tool/function
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/function_schema.py b/src/truefoundry_sdk/types/function_schema.py
index 99703d51..480f2f38 100644
--- a/src/truefoundry_sdk/types/function_schema.py
+++ b/src/truefoundry_sdk/types/function_schema.py
@@ -8,27 +8,34 @@
class FunctionSchema(UniversalBaseModel):
"""
- Schema defining a function for tool calls
+ +label=Function Schema
+ +usage=Schema defining a function for tool calls
"""
name: str = pydantic.Field()
"""
- Name of the function
+ +label=Function Name
+ +usage=Name of the function
"""
description: str = pydantic.Field()
"""
- Description of the function
+ +label=Description
+ +usage=Description of the function
"""
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
"""
- Parameters schema for the function
+ +label=Parameters
+ +usage=Parameters schema for the function
+ +uiType=JsonInput
+ +uiProps={"descriptionInline":true}
"""
- strict: typing.Optional[bool] = pydantic.Field(default=False)
+ strict: bool = pydantic.Field(default=False)
"""
- Indicates if the function should be called strictly
+ +label=Strict
+ +usage=Indicates if the function should be called strictly
"""
if IS_PYDANTIC_V2:
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/gluon_framework.py b/src/truefoundry_sdk/types/gluon_framework.py
index aab1f051..b6473a13 100644
--- a/src/truefoundry_sdk/types/gluon_framework.py
+++ b/src/truefoundry_sdk/types/gluon_framework.py
@@ -7,9 +7,16 @@
class GluonFramework(UniversalBaseModel):
+ """
+ +label=Gluon
+ +icon=gluon
+ """
+
type: typing.Literal["gluon"] = pydantic.Field(default="gluon")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=gluon
"""
if IS_PYDANTIC_V2:
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/h2o_framework.py b/src/truefoundry_sdk/types/h2o_framework.py
index c23a1c7c..add33afa 100644
--- a/src/truefoundry_sdk/types/h2o_framework.py
+++ b/src/truefoundry_sdk/types/h2o_framework.py
@@ -7,9 +7,16 @@
class H2OFramework(UniversalBaseModel):
+ """
+ +label=H2O
+ +icon=h2o
+ """
+
type: typing.Literal["h2o"] = pydantic.Field(default="h2o")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=h2o
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/image_content_part.py b/src/truefoundry_sdk/types/image_content_part.py
index cb89385b..9b612f0c 100644
--- a/src/truefoundry_sdk/types/image_content_part.py
+++ b/src/truefoundry_sdk/types/image_content_part.py
@@ -4,22 +4,25 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .image_url import ImageUrl
+from .image_content_part_image_url import ImageContentPartImageUrl
class ImageContentPart(UniversalBaseModel):
"""
- Image content for the message
+ +label=Image Content
+ +usage=Image content for the message
"""
type: typing.Literal["image_url"] = pydantic.Field(default="image_url")
"""
- Type of the content part
+ +value=image_url
+ +usage=Type of the content part
"""
- image_url: ImageUrl = pydantic.Field()
+ image_url: ImageContentPartImageUrl = pydantic.Field()
"""
- Image URL linking to the image
+ +label=Image URL
+ +usage=Image URL linking to the image
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/image_content_part_image_url.py b/src/truefoundry_sdk/types/image_content_part_image_url.py
new file mode 100644
index 00000000..02f1cbc5
--- /dev/null
+++ b/src/truefoundry_sdk/types/image_content_part_image_url.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
+from .image_content_part_image_url_url import ImageContentPartImageUrlUrl
+
+
+class ImageContentPartImageUrl(UniversalBaseModel):
+ """
+ +label=Image URL
+ +usage=Image URL linking to the image
+ """
+
+ url: ImageContentPartImageUrlUrl = pydantic.Field()
+ """
+ +label=URL
+ +usage=Image URL linking to the image
+ """
+
+ detail: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ +label=Details
+ """
+
+ 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/image_url_url.py b/src/truefoundry_sdk/types/image_content_part_image_url_url.py
similarity index 66%
rename from src/truefoundry_sdk/types/image_url_url.py
rename to src/truefoundry_sdk/types/image_content_part_image_url_url.py
index b882db84..2cd6bdb6 100644
--- a/src/truefoundry_sdk/types/image_url_url.py
+++ b/src/truefoundry_sdk/types/image_content_part_image_url_url.py
@@ -4,4 +4,4 @@
from .blob_storage_reference import BlobStorageReference
-ImageUrlUrl = typing.Union[str, BlobStorageReference]
+ImageContentPartImageUrlUrl = typing.Union[str, BlobStorageReference]
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/keras_framework.py b/src/truefoundry_sdk/types/keras_framework.py
index c1ac4e15..87837060 100644
--- a/src/truefoundry_sdk/types/keras_framework.py
+++ b/src/truefoundry_sdk/types/keras_framework.py
@@ -7,9 +7,16 @@
class KerasFramework(UniversalBaseModel):
+ """
+ +label=Keras
+ +icon=keras
+ """
+
type: typing.Literal["keras"] = pydantic.Field(default="keras")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=keras
"""
if IS_PYDANTIC_V2:
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/light_gbm_framework.py b/src/truefoundry_sdk/types/light_gbm_framework.py
index 9791c6ad..626216dd 100644
--- a/src/truefoundry_sdk/types/light_gbm_framework.py
+++ b/src/truefoundry_sdk/types/light_gbm_framework.py
@@ -7,9 +7,16 @@
class LightGbmFramework(UniversalBaseModel):
+ """
+ +label=LightGBM
+ +icon=lightbgm
+ """
+
type: typing.Literal["lightgbm"] = pydantic.Field(default="lightgbm")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=lightgbm
"""
if IS_PYDANTIC_V2:
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/local_artifact_source.py b/src/truefoundry_sdk/types/local_artifact_source.py
index 1777eed8..43e48ed2 100644
--- a/src/truefoundry_sdk/types/local_artifact_source.py
+++ b/src/truefoundry_sdk/types/local_artifact_source.py
@@ -10,12 +10,15 @@
class LocalArtifactSource(UniversalBaseModel):
type: typing.Literal["local"] = pydantic.Field(default="local")
"""
- Type of the source
+ +label=Type
+ +usage=Type of the source
+ +value=local
"""
paths: typing.List[ArtifactPath] = pydantic.Field()
"""
- Array of ArtifactPath objects representing the source and destination paths
+ +label=Paths
+ +usage=Array of ArtifactPath objects representing the source and destination paths
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/local_model_source.py b/src/truefoundry_sdk/types/local_model_source.py
index 7e9b66f2..51f15ea8 100644
--- a/src/truefoundry_sdk/types/local_model_source.py
+++ b/src/truefoundry_sdk/types/local_model_source.py
@@ -9,12 +9,15 @@
class LocalModelSource(UniversalBaseModel):
type: typing.Literal["local"] = pydantic.Field(default="local")
"""
- Type of the source
+ +label=Type
+ +usage=Type of the source
+ +value=local
"""
file_or_folder: str = pydantic.Field()
"""
- Path to the model file or folder
+ +label=Path to the model file or folder
+ +usage=Path to the model file or folder
"""
if IS_PYDANTIC_V2:
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/image_url.py b/src/truefoundry_sdk/types/mcp_server_header_auth.py
similarity index 67%
rename from src/truefoundry_sdk/types/image_url.py
rename to src/truefoundry_sdk/types/mcp_server_header_auth.py
index f9718f68..5f1d65d6 100644
--- a/src/truefoundry_sdk/types/image_url.py
+++ b/src/truefoundry_sdk/types/mcp_server_header_auth.py
@@ -4,20 +4,19 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .image_url_url import ImageUrlUrl
-class ImageUrl(UniversalBaseModel):
+class McpServerHeaderAuth(UniversalBaseModel):
"""
- Image URL linking to the image
+ +label=Header Auth
"""
- url: ImageUrlUrl = pydantic.Field()
+ type: typing.Literal["header"] = pydantic.Field(default="header")
"""
- Image URL linking to the image
+ +value=header
"""
- detail: typing.Optional[str] = None
+ headers: typing.Dict[str, str]
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
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_configuration.py b/src/truefoundry_sdk/types/model_configuration.py
index f56f7089..ac2a10f8 100644
--- a/src/truefoundry_sdk/types/model_configuration.py
+++ b/src/truefoundry_sdk/types/model_configuration.py
@@ -4,32 +4,44 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .parameters import Parameters
+from .model_configuration_parameters import ModelConfigurationParameters
class ModelConfiguration(UniversalBaseModel):
"""
- Add a model from Gateway along with parameters to be used for chat completion
+ +label=Model Configuration
+ +icon=fa-cogs:#326ce5
+ +usage=Add a model from Gateway along with parameters to be used for chat completion
"""
provider: str = pydantic.Field()
"""
- Name of the provider, must be one of the integration providers configured for the Gateway
+ +sort=1000
+ +uiType=SelectModelAndProvider
+ +uiProps={"isModel": false,"providerJsonKey": "model_configuration.provider","searchable": true}
+ +label=Provider Name
+ +usage=Name of the provider, must be one of the integration providers configured for the Gateway
"""
model: str = pydantic.Field()
"""
- Name of the model to be used for generations. This model should be available in the provider
+ +sort=1001
+ +uiType=SelectModelAndProvider
+ +uiProps={"isModel": true,"providerJsonKey": "model_configuration.provider","searchable": true}
+ +label=Model Name
+ +usage=Name of the model to be used for generations. This model should be available in the provider
"""
- parameters: typing.Optional[Parameters] = pydantic.Field(default=None)
+ parameters: typing.Optional[ModelConfigurationParameters] = pydantic.Field(default=None)
"""
- Parameters to pass to the model when generating
+ +label=Parameters
+ +usage=Parameters to pass to the model when generating
"""
extra_parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
"""
- Arbitrary extra parameters to pass to the model when generating
+ +label=Extra Parameters
+ +usage=Arbitrary extra parameters to pass to the model when generating
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/parameters.py b/src/truefoundry_sdk/types/model_configuration_parameters.py
similarity index 68%
rename from src/truefoundry_sdk/types/parameters.py
rename to src/truefoundry_sdk/types/model_configuration_parameters.py
index 025f9969..e4c991fb 100644
--- a/src/truefoundry_sdk/types/parameters.py
+++ b/src/truefoundry_sdk/types/model_configuration_parameters.py
@@ -4,19 +4,20 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .parameters_stop import ParametersStop
+from .model_configuration_parameters_stop import ModelConfigurationParametersStop
-class Parameters(UniversalBaseModel):
+class ModelConfigurationParameters(UniversalBaseModel):
"""
- Parameters to pass to the model when generating
+ +label=Parameters
+ +usage=Parameters to pass to the model when generating
"""
max_tokens: typing.Optional[int] = None
temperature: typing.Optional[float] = None
top_k: typing.Optional[float] = None
top_p: typing.Optional[float] = None
- stop: typing.Optional[ParametersStop] = None
+ stop: typing.Optional[ModelConfigurationParametersStop] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
diff --git a/src/truefoundry_sdk/types/model_configuration_parameters_stop.py b/src/truefoundry_sdk/types/model_configuration_parameters_stop.py
new file mode 100644
index 00000000..d6494677
--- /dev/null
+++ b/src/truefoundry_sdk/types/model_configuration_parameters_stop.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+ModelConfigurationParametersStop = typing.Union[typing.List[str], str]
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_manifest.py b/src/truefoundry_sdk/types/model_manifest.py
index 4e0ae5eb..ba13837f 100644
--- a/src/truefoundry_sdk/types/model_manifest.py
+++ b/src/truefoundry_sdk/types/model_manifest.py
@@ -3,59 +3,46 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from .base_artifact_version import BaseArtifactVersion
from .model_manifest_framework import ModelManifestFramework
from .model_manifest_source import ModelManifestSource
from .model_version_environment import ModelVersionEnvironment
-class ModelManifest(UniversalBaseModel):
+class ModelManifest(BaseArtifactVersion):
"""
- Model Version artifact.
+ +label=Artifact Version
+ +usage=Log a new Model Version containing model files and folders with metadata
"""
- name: str = pydantic.Field()
- """
- Name of the entity
- """
-
- description: typing.Optional[str] = None
- metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
- """
- Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
- """
-
- version_alias: typing.Optional[str] = pydantic.Field(default=None)
- """
- Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
- """
-
- ml_repo: str = pydantic.Field()
- """
- Name of the ML Repo
- """
-
- version: typing.Optional[int] = pydantic.Field(default=None)
+ type: typing.Literal["model-version"] = "model-version"
+ source: typing.Optional[ModelManifestSource] = pydantic.Field(default=None)
"""
- Version of the entity
+ +label=Model Source
+ +uiType=Group
"""
- type: typing.Literal["model-version"] = "model-version"
- source: ModelManifestSource
framework: typing.Optional[ModelManifestFramework] = pydantic.Field(default=None)
"""
- Framework for the model version like Transformers, PyTorch, Sklearn, Xgboost etc with framework specific metadata. This will be used to infer model deployment configuration
+ +label=Framework
+ +usage=Framework for the model version like Transformers, PyTorch, Sklearn, Xgboost etc with framework specific metadata. This will be used to infer model deployment configuration
+ +uiProps={"descriptionInline":true}
"""
environment: typing.Optional[ModelVersionEnvironment] = None
step: typing.Optional[int] = pydantic.Field(default=0)
"""
- Step/Epoch number in an iterative training loop the model version was created. Generally useful when logging a model version from a MLRepo Run
+ +label=Step
+ +usage=Step/Epoch number in an iterative training loop the model version was created. Generally useful when logging a model version from a MLRepo Run
+ +uiProps={"descriptionInline":true}
"""
run_id: typing.Optional[str] = pydantic.Field(default=None)
"""
- ID of the MLRepo Run that generated the model version
+ +label=Run ID
+ +usage=ID of the MLRepo Run that generated the model version
+ +uiType=Hidden
"""
if IS_PYDANTIC_V2:
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/model_version_environment.py b/src/truefoundry_sdk/types/model_version_environment.py
index dd80ad17..832353c3 100644
--- a/src/truefoundry_sdk/types/model_version_environment.py
+++ b/src/truefoundry_sdk/types/model_version_environment.py
@@ -8,17 +8,21 @@
class ModelVersionEnvironment(UniversalBaseModel):
"""
- Runtime environment describing python version and dependencies for running the model
+ +label=Environment
+ +usage=Runtime environment describing python version and dependencies for running the model
+ +uiProps={"descriptionInline":true}
"""
python_version: typing.Optional[str] = pydantic.Field(default=None)
"""
- Python version to use when running the model
+ +label=Python Version
+ +usage=Python version to use when running the model
"""
pip_packages: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
"""
- pip dependencies needed for running the model
+ +label=PIP Packages
+ +usage=pip dependencies needed for running the model
"""
if IS_PYDANTIC_V2:
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/onnx_framework.py b/src/truefoundry_sdk/types/onnx_framework.py
index 3e306d88..3ac283f6 100644
--- a/src/truefoundry_sdk/types/onnx_framework.py
+++ b/src/truefoundry_sdk/types/onnx_framework.py
@@ -7,9 +7,16 @@
class OnnxFramework(UniversalBaseModel):
+ """
+ +label=ONNX
+ +icon=onnx
+ """
+
type: typing.Literal["onnx"] = pydantic.Field(default="onnx")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=onnx
"""
if IS_PYDANTIC_V2:
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/paddle_framework.py b/src/truefoundry_sdk/types/paddle_framework.py
index 20d4218a..d943d53c 100644
--- a/src/truefoundry_sdk/types/paddle_framework.py
+++ b/src/truefoundry_sdk/types/paddle_framework.py
@@ -7,9 +7,16 @@
class PaddleFramework(UniversalBaseModel):
+ """
+ +label=Paddle
+ +icon=paddle
+ """
+
type: typing.Literal["paddle"] = pydantic.Field(default="paddle")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=paddle
"""
if IS_PYDANTIC_V2:
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/parameters_stop.py b/src/truefoundry_sdk/types/policy_actions.py
similarity index 60%
rename from src/truefoundry_sdk/types/parameters_stop.py
rename to src/truefoundry_sdk/types/policy_actions.py
index 51f71bbe..80f57ac9 100644
--- a/src/truefoundry_sdk/types/parameters_stop.py
+++ b/src/truefoundry_sdk/types/policy_actions.py
@@ -2,4 +2,4 @@
import typing
-ParametersStop = typing.Union[typing.List[str], str]
+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/py_torch_framework.py b/src/truefoundry_sdk/types/py_torch_framework.py
index 843523aa..d1dbc8a0 100644
--- a/src/truefoundry_sdk/types/py_torch_framework.py
+++ b/src/truefoundry_sdk/types/py_torch_framework.py
@@ -7,9 +7,16 @@
class PyTorchFramework(UniversalBaseModel):
+ """
+ +label=PyTorch
+ +icon=pytorch
+ """
+
type: typing.Literal["pytorch"] = pydantic.Field(default="pytorch")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=pytorch
"""
if IS_PYDANTIC_V2:
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/refusal_content_part.py b/src/truefoundry_sdk/types/refusal_content_part.py
index c54c9cb5..7c60ed2f 100644
--- a/src/truefoundry_sdk/types/refusal_content_part.py
+++ b/src/truefoundry_sdk/types/refusal_content_part.py
@@ -9,12 +9,14 @@
class RefusalContentPart(UniversalBaseModel):
type: str = pydantic.Field()
"""
- Type of the content part
+ +value=refusal
+ +usage=Type of the content part
"""
refusal: str = pydantic.Field()
"""
- Reason
+ +label=Refusal
+ +usage=Reason
"""
if IS_PYDANTIC_V2:
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/sklearn_framework.py b/src/truefoundry_sdk/types/sklearn_framework.py
index 39f0c634..8c65cac0 100644
--- a/src/truefoundry_sdk/types/sklearn_framework.py
+++ b/src/truefoundry_sdk/types/sklearn_framework.py
@@ -9,14 +9,23 @@
class SklearnFramework(UniversalBaseModel):
+ """
+ +label=Sklearn
+ +icon=sklearn
+ """
+
type: typing.Literal["sklearn"] = pydantic.Field(default="sklearn")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=sklearn
"""
model_filepath: typing.Optional[str] = pydantic.Field(default=None)
"""
- Relative path to the model file in the model version contents
+ +label=Model file path
+ +usage=Relative path to the model file in the model version contents
+ +uiProps={"descriptionInline":true}
"""
serialization_format: typing.Optional[SklearnSerializationFormat] = None
diff --git a/src/truefoundry_sdk/types/sklearn_model_schema.py b/src/truefoundry_sdk/types/sklearn_model_schema.py
index 967079e9..11c05e00 100644
--- a/src/truefoundry_sdk/types/sklearn_model_schema.py
+++ b/src/truefoundry_sdk/types/sklearn_model_schema.py
@@ -4,23 +4,32 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .infer_method_name import InferMethodName
+from .sklearn_model_schema_infer_method_name import SklearnModelSchemaInferMethodName
class SklearnModelSchema(UniversalBaseModel):
- infer_method_name: InferMethodName = pydantic.Field()
"""
- Name of the method used for inference
+ +label=Scikit Learn Model Schema
+ """
+
+ infer_method_name: SklearnModelSchemaInferMethodName = pydantic.Field()
+ """
+ +label=Inference Method Name
+ +usage=Name of the method used for inference
"""
inputs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
"""
- Schema of the input
+ +label= Input Schema
+ +usage=Schema of the input
+ +uiProps={"descriptionInline":true}
"""
outputs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
"""
- Schema of the output
+ +label= Output Schema
+ +usage=Schema of the output
+ +uiProps={"descriptionInline":true}
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/infer_method_name.py b/src/truefoundry_sdk/types/sklearn_model_schema_infer_method_name.py
similarity index 59%
rename from src/truefoundry_sdk/types/infer_method_name.py
rename to src/truefoundry_sdk/types/sklearn_model_schema_infer_method_name.py
index 1b195d8c..9513ce41 100644
--- a/src/truefoundry_sdk/types/infer_method_name.py
+++ b/src/truefoundry_sdk/types/sklearn_model_schema_infer_method_name.py
@@ -6,16 +6,17 @@
T_Result = typing.TypeVar("T_Result")
-class InferMethodName(str, enum.Enum):
+class SklearnModelSchemaInferMethodName(str, enum.Enum):
"""
- Name of the method used for inference
+ +label=Inference Method Name
+ +usage=Name of the method used for inference
"""
PREDICT = "predict"
PREDICT_PROBA = "predict_proba"
def visit(self, predict: typing.Callable[[], T_Result], predict_proba: typing.Callable[[], T_Result]) -> T_Result:
- if self is InferMethodName.PREDICT:
+ if self is SklearnModelSchemaInferMethodName.PREDICT:
return predict()
- if self is InferMethodName.PREDICT_PROBA:
+ if self is SklearnModelSchemaInferMethodName.PREDICT_PROBA:
return predict_proba()
diff --git a/src/truefoundry_sdk/types/sklearn_serialization_format.py b/src/truefoundry_sdk/types/sklearn_serialization_format.py
index 70d78613..4f2412b9 100644
--- a/src/truefoundry_sdk/types/sklearn_serialization_format.py
+++ b/src/truefoundry_sdk/types/sklearn_serialization_format.py
@@ -8,7 +8,8 @@
class SklearnSerializationFormat(str, enum.Enum):
"""
- Serialization format used to save the sklearn model
+ +label=Scikit Learn Serialization Format
+ +usage=Serialization format used to save the sklearn model
"""
CLOUDPICKLE = "cloudpickle"
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/spa_cy_framework.py b/src/truefoundry_sdk/types/spa_cy_framework.py
index 16a6c6bc..e8958e3a 100644
--- a/src/truefoundry_sdk/types/spa_cy_framework.py
+++ b/src/truefoundry_sdk/types/spa_cy_framework.py
@@ -7,9 +7,16 @@
class SpaCyFramework(UniversalBaseModel):
+ """
+ +label=SpaCy
+ +icon=spacy
+ """
+
type: typing.Literal["spacy"] = pydantic.Field(default="spacy")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=spacy
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/stats_models_framework.py b/src/truefoundry_sdk/types/stats_models_framework.py
index 2669da91..9d3891fe 100644
--- a/src/truefoundry_sdk/types/stats_models_framework.py
+++ b/src/truefoundry_sdk/types/stats_models_framework.py
@@ -7,9 +7,16 @@
class StatsModelsFramework(UniversalBaseModel):
+ """
+ +label=StatsModels
+ +icon=statsmodel
+ """
+
type: typing.Literal["statsmodels"] = pydantic.Field(default="statsmodels")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=statsmodels
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/system_message.py b/src/truefoundry_sdk/types/system_message.py
index 371cf9e8..2943d3c7 100644
--- a/src/truefoundry_sdk/types/system_message.py
+++ b/src/truefoundry_sdk/types/system_message.py
@@ -9,22 +9,30 @@
class SystemMessage(UniversalBaseModel):
"""
- System message for the chat
+ +label=System Message
+ +usage=System message for the chat
"""
role: typing.Literal["system"] = pydantic.Field(default="system")
"""
- Role of the message
+ +value=system
+ +label=Role
+ +usage=Role of the message
+ +uiType=Ignore
"""
content: SystemMessageContent = pydantic.Field()
"""
- Text content for the system message
+ +label=Content
+ +usage=Text content for the system message
+ +uiType=CodeEditor
+ +uiProps={"language": "text"}
"""
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- Name of the system
+ +label=Name
+ +usage=Name of the system
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/tensor_flow_framework.py b/src/truefoundry_sdk/types/tensor_flow_framework.py
index e46411cb..96aff20c 100644
--- a/src/truefoundry_sdk/types/tensor_flow_framework.py
+++ b/src/truefoundry_sdk/types/tensor_flow_framework.py
@@ -7,9 +7,16 @@
class TensorFlowFramework(UniversalBaseModel):
+ """
+ +label=Tensorflow
+ +icon=tensorflow
+ """
+
type: typing.Literal["tensorflow"] = pydantic.Field(default="tensorflow")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=tensorflow
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/text_content_part.py b/src/truefoundry_sdk/types/text_content_part.py
index 500390d1..28c152c6 100644
--- a/src/truefoundry_sdk/types/text_content_part.py
+++ b/src/truefoundry_sdk/types/text_content_part.py
@@ -9,17 +9,20 @@
class TextContentPart(UniversalBaseModel):
"""
- Text content for the message
+ +label=Text Content
+ +usage=Text content for the message
"""
type: typing.Literal["text"] = pydantic.Field(default="text")
"""
- Type of the content part
+ +value=text
+ +usage=Type of the content part
"""
text: TextContentPartText = pydantic.Field()
"""
- Text content for the message
+ +label=Text
+ +usage=Text content for the message
"""
if IS_PYDANTIC_V2:
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/tool_call.py b/src/truefoundry_sdk/types/tool_call.py
index 0b416343..5887fefd 100644
--- a/src/truefoundry_sdk/types/tool_call.py
+++ b/src/truefoundry_sdk/types/tool_call.py
@@ -10,12 +10,14 @@
class ToolCall(UniversalBaseModel):
type: typing.Literal["function"] = pydantic.Field(default="function")
"""
- Type of the tool call
+ +label=Type
+ +usage=Type of the tool call
"""
id: str = pydantic.Field()
"""
- Unique identifier for the tool call
+ +label=ID
+ +usage=Unique identifier for the tool call
"""
function: Function
diff --git a/src/truefoundry_sdk/types/tool_message.py b/src/truefoundry_sdk/types/tool_message.py
index 3729f89f..ed110e43 100644
--- a/src/truefoundry_sdk/types/tool_message.py
+++ b/src/truefoundry_sdk/types/tool_message.py
@@ -9,22 +9,26 @@
class ToolMessage(UniversalBaseModel):
"""
- Tool message for the chat
+ +label=Tool Message
+ +usage=Tool message for the chat
"""
role: typing.Literal["tool"] = pydantic.Field(default="tool")
"""
- Role of the message
+ +label=Role
+ +usage=Role of the message
"""
content: ToolMessageContent = pydantic.Field()
"""
- Content of the tool call result
+ +label=Content
+ +usage=Content of the tool call result
"""
tool_call_id: str = pydantic.Field()
"""
- Unique identifier for the tool call
+ +label=Tool Call ID
+ +usage=Unique identifier for the tool call
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/tool_schema.py b/src/truefoundry_sdk/types/tool_schema.py
index 5e2b7c8e..49dc22ae 100644
--- a/src/truefoundry_sdk/types/tool_schema.py
+++ b/src/truefoundry_sdk/types/tool_schema.py
@@ -9,12 +9,14 @@
class ToolSchema(UniversalBaseModel):
"""
- Schema defining a tool for the chat prompt
+ +label=Tool Schema
+ +usage=Schema defining a tool for the chat prompt
"""
type: typing.Literal["function"] = pydantic.Field(default="function")
"""
- Type of the tool
+ +label=Type
+ +usage=Type of the tool
"""
function: FunctionSchema
diff --git a/src/truefoundry_sdk/types/tracing_project_manifest.py b/src/truefoundry_sdk/types/tracing_project_manifest.py
index 4691c584..df1f1eae 100644
--- a/src/truefoundry_sdk/types/tracing_project_manifest.py
+++ b/src/truefoundry_sdk/types/tracing_project_manifest.py
@@ -7,19 +7,19 @@
class TracingProjectManifest(UniversalBaseModel):
- """
- Tracing Project manifest.
- """
-
type: typing.Literal["tracing-project"] = "tracing-project"
name: str = pydantic.Field()
"""
- Name of the tracing project
+ +label=Name
+ +usage=Name of the tracing project
+ +message=The name should start with lowercase alphabets and can contain alphanumeric and can include '-' in between
"""
ml_repo: typing.Optional[str] = pydantic.Field(default=None)
"""
- Name of the ML Repo
+ +label=ML Repo
+ +usage=Name of the ML Repo
+ +uiType=Hidden
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/transformers_framework.py b/src/truefoundry_sdk/types/transformers_framework.py
index 18f0ab8b..262fc514 100644
--- a/src/truefoundry_sdk/types/transformers_framework.py
+++ b/src/truefoundry_sdk/types/transformers_framework.py
@@ -4,28 +4,40 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .library_name import LibraryName
+from .transformers_framework_library_name import TransformersFrameworkLibraryName
class TransformersFramework(UniversalBaseModel):
+ """
+ +label=Transformers
+ +icon=transformers
+ """
+
type: typing.Literal["transformers"] = pydantic.Field(default="transformers")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=transformers
"""
- library_name: typing.Optional[LibraryName] = pydantic.Field(default=None)
+ library_name: typing.Optional[TransformersFrameworkLibraryName] = pydantic.Field(default=None)
"""
- Name of the library for the framework
+ +label=Library Name
+ +usage=Name of the library for the framework
"""
pipeline_tag: typing.Optional[str] = pydantic.Field(default=None)
"""
- The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values
+ +label=Pipeline Tag
+ +usage=The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values
+ +uiProps={"descriptionInline":true}
"""
base_model: typing.Optional[str] = pydantic.Field(default=None)
"""
- Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.
+ +label=Base Model
+ +usage=Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.
+ +uiProps={"descriptionInline":true}
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/library_name.py b/src/truefoundry_sdk/types/transformers_framework_library_name.py
similarity index 63%
rename from src/truefoundry_sdk/types/library_name.py
rename to src/truefoundry_sdk/types/transformers_framework_library_name.py
index efac7056..8fed79d2 100644
--- a/src/truefoundry_sdk/types/library_name.py
+++ b/src/truefoundry_sdk/types/transformers_framework_library_name.py
@@ -6,9 +6,10 @@
T_Result = typing.TypeVar("T_Result")
-class LibraryName(str, enum.Enum):
+class TransformersFrameworkLibraryName(str, enum.Enum):
"""
- Name of the library for the framework
+ +label=Library Name
+ +usage=Name of the library for the framework
"""
TRANSFORMERS = "transformers"
@@ -21,9 +22,9 @@ def visit(
sentence_transformers: typing.Callable[[], T_Result],
diffusers: typing.Callable[[], T_Result],
) -> T_Result:
- if self is LibraryName.TRANSFORMERS:
+ if self is TransformersFrameworkLibraryName.TRANSFORMERS:
return transformers()
- if self is LibraryName.SENTENCE_TRANSFORMERS:
+ if self is TransformersFrameworkLibraryName.SENTENCE_TRANSFORMERS:
return sentence_transformers()
- if self is LibraryName.DIFFUSERS:
+ if self is TransformersFrameworkLibraryName.DIFFUSERS:
return diffusers()
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_managed_source.py b/src/truefoundry_sdk/types/true_foundry_managed_source.py
index e045fd94..c9a7a733 100644
--- a/src/truefoundry_sdk/types/true_foundry_managed_source.py
+++ b/src/truefoundry_sdk/types/true_foundry_managed_source.py
@@ -7,12 +7,23 @@
class TrueFoundryManagedSource(UniversalBaseModel):
+ """
+ +label=TrueFoundry Managed Source
+ """
+
type: typing.Literal["truefoundry"] = pydantic.Field(default="truefoundry")
"""
- Type of the source
+ +label=Type
+ +usage=Type of the source
+ +value=truefoundry
"""
- uri: typing.Optional[str] = None
+ uri: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ +label=URI
+ +uiType=ModelUploadInput
+ +uiProps={"hideClear":true}
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
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/user_message.py b/src/truefoundry_sdk/types/user_message.py
index 2f85b7f2..1808da9e 100644
--- a/src/truefoundry_sdk/types/user_message.py
+++ b/src/truefoundry_sdk/types/user_message.py
@@ -9,22 +9,29 @@
class UserMessage(UniversalBaseModel):
"""
- User message turn
+ +label=User Message
+ +usage=User message turn
"""
role: typing.Literal["user"] = pydantic.Field(default="user")
"""
- Role of the message
+ +value=user
+ +usage=Role of the message
+ +uiType=Ignore
"""
content: UserMessageContent = pydantic.Field()
"""
- Content of the user message. can be a mix of text and images
+ +label=Content
+ +usage=Content of the user message. can be a mix of text and images
+ +uiType=CodeEditor
+ +uiProps={"language": "text"}
"""
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- Name of the user this message is from
+ +label=Name
+ +usage=Name of the user this message is from
"""
if IS_PYDANTIC_V2:
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
diff --git a/src/truefoundry_sdk/types/xg_boost_framework.py b/src/truefoundry_sdk/types/xg_boost_framework.py
index 7874e209..38e80b70 100644
--- a/src/truefoundry_sdk/types/xg_boost_framework.py
+++ b/src/truefoundry_sdk/types/xg_boost_framework.py
@@ -9,15 +9,23 @@
class XgBoostFramework(UniversalBaseModel):
+ """
+ +label=XGBoost
+ +icon=xgboost
+ """
+
type: typing.Literal["xgboost"] = pydantic.Field(default="xgboost")
"""
- Type of the framework
+ +label=Type
+ +usage=Type of the framework
+ +value=xgboost
"""
serialization_format: typing.Optional[XgBoostSerializationFormat] = None
model_filepath: typing.Optional[str] = pydantic.Field(default=None)
"""
- Relative path to the model file in the model version contents
+ +label=Model file path
+ +usage=Relative path to the model file in the model version contents
"""
model_schema: typing.Optional[XgBoostModelSchema] = None
diff --git a/src/truefoundry_sdk/types/xg_boost_model_schema.py b/src/truefoundry_sdk/types/xg_boost_model_schema.py
index 720609f2..7aa7c17c 100644
--- a/src/truefoundry_sdk/types/xg_boost_model_schema.py
+++ b/src/truefoundry_sdk/types/xg_boost_model_schema.py
@@ -8,22 +8,28 @@
class XgBoostModelSchema(UniversalBaseModel):
"""
- Schema of the XGBoost model
+ +label=XGBoost Model Schema
+ +usage=Schema of the XGBoost model
"""
infer_method_name: typing.Literal["predict"] = pydantic.Field(default="predict")
"""
- Name of the method used for inference
+ +label=Inference Method Name
+ +usage=Name of the method used for inference
"""
inputs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
"""
- Schema of the input
+ +label= Input Schema
+ +usage=Schema of the input
+ +uiProps={"descriptionInline":true}
"""
outputs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
"""
- Schema of the output
+ +label= Output Schema
+ +usage=Schema of the output
+ +uiProps={"descriptionInline":true}
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/xg_boost_serialization_format.py b/src/truefoundry_sdk/types/xg_boost_serialization_format.py
index ef383b5f..8c37296a 100644
--- a/src/truefoundry_sdk/types/xg_boost_serialization_format.py
+++ b/src/truefoundry_sdk/types/xg_boost_serialization_format.py
@@ -8,7 +8,8 @@
class XgBoostSerializationFormat(str, enum.Enum):
"""
- Serialization format used to save the xgboost model
+ +label=Serialization format
+ +usage=Serialization format used to save the xgboost model
"""
CLOUDPICKLE = "cloudpickle"
From 4439673a68e94020fa6557f4468003d5970ac0ef Mon Sep 17 00:00:00 2001
From: fern-api <115122769+fern-api[bot]@users.noreply.github.com>
Date: Mon, 30 Jun 2025 10:31:19 +0000
Subject: [PATCH 2/2] SDK regeneration
---
reference.md | 61 +++++++++++++--
src/truefoundry_sdk/__init__.py | 38 +++++-----
src/truefoundry_sdk/agents/client.py | 12 +++
.../artifact_versions/client.py | 14 +++-
src/truefoundry_sdk/artifacts/client.py | 18 ++++-
src/truefoundry_sdk/internal/ml/client.py | 28 ++++++-
src/truefoundry_sdk/models/client.py | 14 +++-
src/truefoundry_sdk/prompts/client.py | 18 ++++-
src/truefoundry_sdk/tools/client.py | 34 ++++++++-
src/truefoundry_sdk/types/__init__.py | 38 +++++-----
src/truefoundry_sdk/types/agent_manifest.py | 69 ++++++++++-------
.../types/agent_open_api_tool_manifest.py | 76 ++++++++++---------
.../agent_open_api_tool_manifest_method.py | 40 ----------
...ent_open_api_tool_manifest_openapi_spec.py | 2 +-
.../types/artifact_manifest.py | 45 +++++++----
src/truefoundry_sdk/types/artifact_path.py | 6 +-
.../types/assistant_message.py | 19 ++---
.../types/base_artifact_version.py | 57 +++-----------
.../types/base_artifact_version_manifest.py | 13 ++++
.../types/blob_storage_reference.py | 20 ++---
.../types/chat_prompt_manifest.py | 52 ++++++++-----
... => chat_prompt_manifest_messages_item.py} | 4 +-
src/truefoundry_sdk/types/data_directory.py | 57 +++-----------
.../types/data_directory_source.py | 8 --
.../types/developer_message.py | 13 +---
.../types/external_blob_storage_source.py | 11 +--
.../types/fast_ai_framework.py | 9 +--
src/truefoundry_sdk/types/function.py | 6 +-
src/truefoundry_sdk/types/function_schema.py | 19 ++---
src/truefoundry_sdk/types/gluon_framework.py | 9 +--
src/truefoundry_sdk/types/h2o_framework.py | 9 +--
.../types/image_content_part.py | 13 ++--
...content_part_image_url.py => image_url.py} | 17 ++---
...part_image_url_url.py => image_url_url.py} | 2 +-
...er_method_name.py => infer_method_name.py} | 9 +--
src/truefoundry_sdk/types/keras_framework.py | 9 +--
...mework_library_name.py => library_name.py} | 11 ++-
.../types/light_gbm_framework.py | 9 +--
.../types/local_artifact_source.py | 7 +-
.../types/local_model_source.py | 7 +-
...ge_reference_mime_type.py => mime_type.py} | 15 ++--
.../types/model_configuration.py | 26 ++-----
src/truefoundry_sdk/types/model_manifest.py | 49 +++++++-----
.../types/model_version_environment.py | 10 +--
src/truefoundry_sdk/types/onnx_framework.py | 9 +--
src/truefoundry_sdk/types/paddle_framework.py | 9 +--
...figuration_parameters.py => parameters.py} | 9 +--
..._parameters_stop.py => parameters_stop.py} | 2 +-
.../types/py_torch_framework.py | 9 +--
.../types/refusal_content_part.py | 6 +-
.../types/sklearn_framework.py | 13 +---
.../types/sklearn_model_schema.py | 19 ++---
.../types/sklearn_serialization_format.py | 3 +-
src/truefoundry_sdk/types/spa_cy_framework.py | 9 +--
.../types/stats_models_framework.py | 9 +--
src/truefoundry_sdk/types/system_message.py | 16 +---
.../types/tensor_flow_framework.py | 9 +--
.../types/text_content_part.py | 9 +--
src/truefoundry_sdk/types/tool_call.py | 6 +-
src/truefoundry_sdk/types/tool_message.py | 12 +--
src/truefoundry_sdk/types/tool_schema.py | 6 +-
.../types/tracing_project_manifest.py | 12 +--
.../types/transformers_framework.py | 24 ++----
.../types/true_foundry_managed_source.py | 15 +---
src/truefoundry_sdk/types/user_message.py | 15 +---
.../types/xg_boost_framework.py | 12 +--
.../types/xg_boost_model_schema.py | 14 +---
.../types/xg_boost_serialization_format.py | 3 +-
68 files changed, 567 insertions(+), 686 deletions(-)
delete mode 100644 src/truefoundry_sdk/types/agent_open_api_tool_manifest_method.py
create mode 100644 src/truefoundry_sdk/types/base_artifact_version_manifest.py
rename src/truefoundry_sdk/types/{chat_message_turn.py => chat_prompt_manifest_messages_item.py} (69%)
delete mode 100644 src/truefoundry_sdk/types/data_directory_source.py
rename src/truefoundry_sdk/types/{image_content_part_image_url.py => image_url.py} (53%)
rename src/truefoundry_sdk/types/{image_content_part_image_url_url.py => image_url_url.py} (66%)
rename src/truefoundry_sdk/types/{sklearn_model_schema_infer_method_name.py => infer_method_name.py} (59%)
rename src/truefoundry_sdk/types/{transformers_framework_library_name.py => library_name.py} (63%)
rename src/truefoundry_sdk/types/{blob_storage_reference_mime_type.py => mime_type.py} (66%)
rename src/truefoundry_sdk/types/{model_configuration_parameters.py => parameters.py} (68%)
rename src/truefoundry_sdk/types/{model_configuration_parameters_stop.py => parameters_stop.py} (52%)
diff --git a/reference.md b/reference.md
index a2bc55ed..4b6d0cbc 100644
--- a/reference.md
+++ b/reference.md
@@ -5845,7 +5845,11 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import ArtifactManifest, TrueFoundry
+from truefoundry_sdk import (
+ ArtifactManifest,
+ TrueFoundry,
+ TrueFoundryManagedSource,
+)
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -5853,7 +5857,10 @@ client = TrueFoundry(
)
client.artifacts.create_or_update(
manifest=ArtifactManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
@@ -6111,7 +6118,13 @@ client = TrueFoundry(
)
client.agents.create_or_update(
manifest=AgentManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ goal="goal",
+ instruction="instruction",
+ available_tools=["available_tools"],
+ model_id="model_id",
),
)
@@ -6361,7 +6374,7 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import ChatPromptManifest, TrueFoundry
+from truefoundry_sdk import ChatPromptManifest, SystemMessage, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -6369,7 +6382,14 @@ client = TrueFoundry(
)
client.prompts.create_or_update(
manifest=ChatPromptManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ messages=[
+ SystemMessage(
+ content="content",
+ )
+ ],
),
)
@@ -6619,7 +6639,13 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import AgentOpenApiToolManifest, TrueFoundry
+from truefoundry_sdk import (
+ AgentOpenApiToolManifest,
+ BlobStorageReference,
+ Method,
+ MimeType,
+ TrueFoundry,
+)
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -6627,7 +6653,16 @@ client = TrueFoundry(
)
client.tools.create_or_update(
manifest=AgentOpenApiToolManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ openapi_spec=BlobStorageReference(
+ path="path",
+ mime_type=MimeType.TEXT_PLAIN,
+ ),
+ base_url="base_url",
+ path="path",
+ method=Method.GET,
),
)
@@ -6885,7 +6920,7 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import ModelManifest, TrueFoundry
+from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -6893,7 +6928,10 @@ client = TrueFoundry(
)
client.models.create_or_update(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
@@ -7359,7 +7397,7 @@ client.artifact_versions.create_multi_part_upload(
-
```python
-from truefoundry_sdk import ModelManifest, TrueFoundry
+from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -7367,7 +7405,10 @@ client = TrueFoundry(
)
client.artifact_versions.stage(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
@@ -10792,7 +10833,7 @@ for page in response.iter_pages():
-
```python
-from truefoundry_sdk import ModelManifest, TrueFoundry
+from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -10800,7 +10841,10 @@ client = TrueFoundry(
)
client.internal.ml.apply(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
@@ -10851,7 +10895,7 @@ client.internal.ml.apply(
-
```python
-from truefoundry_sdk import ModelManifest, TrueFoundry
+from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -10859,7 +10903,10 @@ client = TrueFoundry(
)
client.internal.ml.delete(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/__init__.py b/src/truefoundry_sdk/__init__.py
index dd69b885..4d109d4e 100644
--- a/src/truefoundry_sdk/__init__.py
+++ b/src/truefoundry_sdk/__init__.py
@@ -13,7 +13,6 @@
AgentManifest,
AgentManifestWithFqn,
AgentOpenApiToolManifest,
- AgentOpenApiToolManifestMethod,
AgentOpenApiToolManifestOpenapiSpec,
AgentOpenApiToolManifestWithFqn,
AgentOpenApiToolManifestWithFqnOpenapiSpec,
@@ -103,6 +102,7 @@
AzureReposIntegration,
AzureVault,
BaseArtifactVersion,
+ BaseArtifactVersionManifest,
BaseAutoscaling,
BaseOAuth2Login,
BaseOAuth2LoginJwtSource,
@@ -119,7 +119,6 @@
BitbucketIntegration,
BitbucketProviderAccount,
BlobStorageReference,
- BlobStorageReferenceMimeType,
BlueGreen,
BudgetConfig,
BudgetLimitUnit,
@@ -133,8 +132,8 @@
Canary,
CanaryStep,
ChangePasswordResponse,
- ChatMessageTurn,
ChatPromptManifest,
+ ChatPromptManifestMessagesItem,
Cluster,
ClusterGateway,
ClusterManifest,
@@ -172,7 +171,6 @@
DataDirectory,
DataDirectoryManifest,
DataDirectoryManifestSource,
- DataDirectorySource,
DatabricksApiKeyAuth,
DatabricksIntegrations,
DatabricksModel,
@@ -324,8 +322,9 @@
Image,
ImageCommand,
ImageContentPart,
- ImageContentPartImageUrl,
- ImageContentPartImageUrlUrl,
+ ImageUrl,
+ ImageUrlUrl,
+ InferMethodName,
InfraProviderAccount,
InputOutputBasedCostMetricValue,
Intercept,
@@ -362,6 +361,7 @@
Kustomize,
LatencyBasedLoadBalanceTarget,
LatencyBasedLoadBalancingRule,
+ LibraryName,
LightGbmFramework,
ListAgentVersionsResponse,
ListAgentsResponse,
@@ -412,6 +412,7 @@
McpServerProviderAccount,
Method,
Metric,
+ MimeType,
MirrorAction,
MistralAiIntegrations,
MistralAiKeyAuth,
@@ -422,8 +423,6 @@
Model,
ModelConfig,
ModelConfiguration,
- ModelConfigurationParameters,
- ModelConfigurationParametersStop,
ModelCostMetric,
ModelManifest,
ModelManifestFramework,
@@ -480,6 +479,8 @@
PalmProviderAccount,
Param,
ParamParamType,
+ Parameters,
+ ParametersStop,
PerThousandEmbeddingTokensCostMetric,
PerThousandTokensCostMetric,
Permissions,
@@ -551,7 +552,6 @@
SignedUrl,
SklearnFramework,
SklearnModelSchema,
- SklearnModelSchemaInferMethodName,
SklearnSerializationFormat,
SlackBot,
SlackBotAuth,
@@ -616,7 +616,6 @@
TracingProject,
TracingProjectManifest,
TransformersFramework,
- TransformersFrameworkLibraryName,
TriggerJobRunResponse,
TrueFoundryApplyRequestManifest,
TrueFoundryApplyResponse,
@@ -738,7 +737,6 @@
"AgentManifest",
"AgentManifestWithFqn",
"AgentOpenApiToolManifest",
- "AgentOpenApiToolManifestMethod",
"AgentOpenApiToolManifestOpenapiSpec",
"AgentOpenApiToolManifestWithFqn",
"AgentOpenApiToolManifestWithFqnOpenapiSpec",
@@ -833,6 +831,7 @@
"AzureVault",
"BadRequestError",
"BaseArtifactVersion",
+ "BaseArtifactVersionManifest",
"BaseAutoscaling",
"BaseOAuth2Login",
"BaseOAuth2LoginJwtSource",
@@ -849,7 +848,6 @@
"BitbucketIntegration",
"BitbucketProviderAccount",
"BlobStorageReference",
- "BlobStorageReferenceMimeType",
"BlueGreen",
"BudgetConfig",
"BudgetLimitUnit",
@@ -863,8 +861,8 @@
"Canary",
"CanaryStep",
"ChangePasswordResponse",
- "ChatMessageTurn",
"ChatPromptManifest",
+ "ChatPromptManifestMessagesItem",
"Cluster",
"ClusterGateway",
"ClusterManifest",
@@ -904,7 +902,6 @@
"DataDirectory",
"DataDirectoryManifest",
"DataDirectoryManifestSource",
- "DataDirectorySource",
"DatabricksApiKeyAuth",
"DatabricksIntegrations",
"DatabricksModel",
@@ -1059,8 +1056,9 @@
"Image",
"ImageCommand",
"ImageContentPart",
- "ImageContentPartImageUrl",
- "ImageContentPartImageUrlUrl",
+ "ImageUrl",
+ "ImageUrlUrl",
+ "InferMethodName",
"InfraProviderAccount",
"InputOutputBasedCostMetricValue",
"Intercept",
@@ -1097,6 +1095,7 @@
"Kustomize",
"LatencyBasedLoadBalanceTarget",
"LatencyBasedLoadBalancingRule",
+ "LibraryName",
"LightGbmFramework",
"ListAgentVersionsResponse",
"ListAgentsResponse",
@@ -1148,6 +1147,7 @@
"Method",
"MethodNotAllowedError",
"Metric",
+ "MimeType",
"MirrorAction",
"MistralAiIntegrations",
"MistralAiKeyAuth",
@@ -1158,8 +1158,6 @@
"Model",
"ModelConfig",
"ModelConfiguration",
- "ModelConfigurationParameters",
- "ModelConfigurationParametersStop",
"ModelCostMetric",
"ModelManifest",
"ModelManifestFramework",
@@ -1218,6 +1216,8 @@
"PalmProviderAccount",
"Param",
"ParamParamType",
+ "Parameters",
+ "ParametersStop",
"PerThousandEmbeddingTokensCostMetric",
"PerThousandTokensCostMetric",
"Permissions",
@@ -1289,7 +1289,6 @@
"SignedUrl",
"SklearnFramework",
"SklearnModelSchema",
- "SklearnModelSchemaInferMethodName",
"SklearnSerializationFormat",
"SlackBot",
"SlackBotAuth",
@@ -1355,7 +1354,6 @@
"TracingProject",
"TracingProjectManifest",
"TransformersFramework",
- "TransformersFrameworkLibraryName",
"TriggerJobRequestInput",
"TriggerJobRunResponse",
"TrueFoundry",
diff --git a/src/truefoundry_sdk/agents/client.py b/src/truefoundry_sdk/agents/client.py
index fe5d3f8e..e520a56c 100644
--- a/src/truefoundry_sdk/agents/client.py
+++ b/src/truefoundry_sdk/agents/client.py
@@ -162,7 +162,13 @@ def create_or_update(
)
client.agents.create_or_update(
manifest=AgentManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ goal="goal",
+ instruction="instruction",
+ available_tools=["available_tools"],
+ model_id="model_id",
),
)
"""
@@ -346,7 +352,13 @@ async def create_or_update(
async def main() -> None:
await client.agents.create_or_update(
manifest=AgentManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ goal="goal",
+ instruction="instruction",
+ available_tools=["available_tools"],
+ model_id="model_id",
),
)
diff --git a/src/truefoundry_sdk/artifact_versions/client.py b/src/truefoundry_sdk/artifact_versions/client.py
index 5dfa1202..99ebd35f 100644
--- a/src/truefoundry_sdk/artifact_versions/client.py
+++ b/src/truefoundry_sdk/artifact_versions/client.py
@@ -263,7 +263,7 @@ def stage(
Examples
--------
- from truefoundry_sdk import ModelManifest, TrueFoundry
+ from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -271,7 +271,10 @@ def stage(
)
client.artifact_versions.stage(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
"""
@@ -645,7 +648,11 @@ async def stage(
--------
import asyncio
- from truefoundry_sdk import AsyncTrueFoundry, ModelManifest
+ from truefoundry_sdk import (
+ AsyncTrueFoundry,
+ ModelManifest,
+ TrueFoundryManagedSource,
+ )
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -656,7 +663,10 @@ async def stage(
async def main() -> None:
await client.artifact_versions.stage(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/artifacts/client.py b/src/truefoundry_sdk/artifacts/client.py
index bd6a8684..e3b894fb 100644
--- a/src/truefoundry_sdk/artifacts/client.py
+++ b/src/truefoundry_sdk/artifacts/client.py
@@ -157,7 +157,11 @@ def create_or_update(
Examples
--------
- from truefoundry_sdk import ArtifactManifest, TrueFoundry
+ from truefoundry_sdk import (
+ ArtifactManifest,
+ TrueFoundry,
+ TrueFoundryManagedSource,
+ )
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -165,7 +169,10 @@ def create_or_update(
)
client.artifacts.create_or_update(
manifest=ArtifactManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
"""
@@ -341,7 +348,11 @@ async def create_or_update(
--------
import asyncio
- from truefoundry_sdk import ArtifactManifest, AsyncTrueFoundry
+ from truefoundry_sdk import (
+ ArtifactManifest,
+ AsyncTrueFoundry,
+ TrueFoundryManagedSource,
+ )
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -352,7 +363,10 @@ async def create_or_update(
async def main() -> None:
await client.artifacts.create_or_update(
manifest=ArtifactManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/internal/ml/client.py b/src/truefoundry_sdk/internal/ml/client.py
index c4ae50fe..5158ce6f 100644
--- a/src/truefoundry_sdk/internal/ml/client.py
+++ b/src/truefoundry_sdk/internal/ml/client.py
@@ -47,7 +47,7 @@ def apply(
Examples
--------
- from truefoundry_sdk import ModelManifest, TrueFoundry
+ from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -55,7 +55,10 @@ def apply(
)
client.internal.ml.apply(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
"""
@@ -80,7 +83,7 @@ def delete(
Examples
--------
- from truefoundry_sdk import ModelManifest, TrueFoundry
+ from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -88,7 +91,10 @@ def delete(
)
client.internal.ml.delete(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
"""
@@ -131,7 +137,11 @@ async def apply(
--------
import asyncio
- from truefoundry_sdk import AsyncTrueFoundry, ModelManifest
+ from truefoundry_sdk import (
+ AsyncTrueFoundry,
+ ModelManifest,
+ TrueFoundryManagedSource,
+ )
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -142,7 +152,10 @@ async def apply(
async def main() -> None:
await client.internal.ml.apply(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
@@ -172,7 +185,11 @@ async def delete(
--------
import asyncio
- from truefoundry_sdk import AsyncTrueFoundry, ModelManifest
+ from truefoundry_sdk import (
+ AsyncTrueFoundry,
+ ModelManifest,
+ TrueFoundryManagedSource,
+ )
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -183,7 +200,10 @@ async def delete(
async def main() -> None:
await client.internal.ml.delete(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/models/client.py b/src/truefoundry_sdk/models/client.py
index 1d1924e5..3968951c 100644
--- a/src/truefoundry_sdk/models/client.py
+++ b/src/truefoundry_sdk/models/client.py
@@ -157,7 +157,7 @@ def create_or_update(
Examples
--------
- from truefoundry_sdk import ModelManifest, TrueFoundry
+ from truefoundry_sdk import ModelManifest, TrueFoundry, TrueFoundryManagedSource
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -165,7 +165,10 @@ def create_or_update(
)
client.models.create_or_update(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
"""
@@ -341,7 +344,11 @@ async def create_or_update(
--------
import asyncio
- from truefoundry_sdk import AsyncTrueFoundry, ModelManifest
+ from truefoundry_sdk import (
+ AsyncTrueFoundry,
+ ModelManifest,
+ TrueFoundryManagedSource,
+ )
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -352,7 +359,10 @@ async def create_or_update(
async def main() -> None:
await client.models.create_or_update(
manifest=ModelManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ source=TrueFoundryManagedSource(),
),
)
diff --git a/src/truefoundry_sdk/prompts/client.py b/src/truefoundry_sdk/prompts/client.py
index 099c2e41..2a72e8d6 100644
--- a/src/truefoundry_sdk/prompts/client.py
+++ b/src/truefoundry_sdk/prompts/client.py
@@ -154,7 +154,7 @@ def create_or_update(
Examples
--------
- from truefoundry_sdk import ChatPromptManifest, TrueFoundry
+ from truefoundry_sdk import ChatPromptManifest, SystemMessage, TrueFoundry
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -162,7 +162,14 @@ def create_or_update(
)
client.prompts.create_or_update(
manifest=ChatPromptManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ messages=[
+ SystemMessage(
+ content="content",
+ )
+ ],
),
)
"""
@@ -335,7 +342,7 @@ async def create_or_update(
--------
import asyncio
- from truefoundry_sdk import AsyncTrueFoundry, ChatPromptManifest
+ from truefoundry_sdk import AsyncTrueFoundry, ChatPromptManifest, SystemMessage
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -346,7 +353,14 @@ async def create_or_update(
async def main() -> None:
await client.prompts.create_or_update(
manifest=ChatPromptManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ messages=[
+ SystemMessage(
+ content="content",
+ )
+ ],
),
)
diff --git a/src/truefoundry_sdk/tools/client.py b/src/truefoundry_sdk/tools/client.py
index 672a637a..02f60bed 100644
--- a/src/truefoundry_sdk/tools/client.py
+++ b/src/truefoundry_sdk/tools/client.py
@@ -154,7 +154,13 @@ def create_or_update(
Examples
--------
- from truefoundry_sdk import AgentOpenApiToolManifest, TrueFoundry
+ from truefoundry_sdk import (
+ AgentOpenApiToolManifest,
+ BlobStorageReference,
+ Method,
+ MimeType,
+ TrueFoundry,
+ )
client = TrueFoundry(
api_key="YOUR_API_KEY",
@@ -162,7 +168,16 @@ def create_or_update(
)
client.tools.create_or_update(
manifest=AgentOpenApiToolManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ openapi_spec=BlobStorageReference(
+ path="path",
+ mime_type=MimeType.TEXT_PLAIN,
+ ),
+ base_url="base_url",
+ path="path",
+ method=Method.GET,
),
)
"""
@@ -335,7 +350,13 @@ async def create_or_update(
--------
import asyncio
- from truefoundry_sdk import AgentOpenApiToolManifest, AsyncTrueFoundry
+ from truefoundry_sdk import (
+ AgentOpenApiToolManifest,
+ AsyncTrueFoundry,
+ BlobStorageReference,
+ Method,
+ MimeType,
+ )
client = AsyncTrueFoundry(
api_key="YOUR_API_KEY",
@@ -346,7 +367,16 @@ async def create_or_update(
async def main() -> None:
await client.tools.create_or_update(
manifest=AgentOpenApiToolManifest(
+ name="name",
metadata={"key": "value"},
+ ml_repo="ml_repo",
+ openapi_spec=BlobStorageReference(
+ path="path",
+ mime_type=MimeType.TEXT_PLAIN,
+ ),
+ base_url="base_url",
+ path="path",
+ method=Method.GET,
),
)
diff --git a/src/truefoundry_sdk/types/__init__.py b/src/truefoundry_sdk/types/__init__.py
index c405b84c..dc01a0b1 100644
--- a/src/truefoundry_sdk/types/__init__.py
+++ b/src/truefoundry_sdk/types/__init__.py
@@ -15,7 +15,6 @@
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_method import AgentOpenApiToolManifestMethod
from .agent_open_api_tool_manifest_openapi_spec import AgentOpenApiToolManifestOpenapiSpec
from .agent_open_api_tool_manifest_with_fqn import AgentOpenApiToolManifestWithFqn
from .agent_open_api_tool_manifest_with_fqn_openapi_spec import AgentOpenApiToolManifestWithFqnOpenapiSpec
@@ -105,6 +104,7 @@
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
@@ -121,7 +121,6 @@
from .bitbucket_integration import BitbucketIntegration
from .bitbucket_provider_account import BitbucketProviderAccount
from .blob_storage_reference import BlobStorageReference
-from .blob_storage_reference_mime_type import BlobStorageReferenceMimeType
from .blue_green import BlueGreen
from .budget_config import BudgetConfig
from .budget_limit_unit import BudgetLimitUnit
@@ -135,8 +134,8 @@
from .canary import Canary
from .canary_step import CanaryStep
from .change_password_response import ChangePasswordResponse
-from .chat_message_turn import ChatMessageTurn
from .chat_prompt_manifest import ChatPromptManifest
+from .chat_prompt_manifest_messages_item import ChatPromptManifestMessagesItem
from .cluster import Cluster
from .cluster_gateway import ClusterGateway
from .cluster_manifest import ClusterManifest
@@ -174,7 +173,6 @@
from .data_directory import DataDirectory
from .data_directory_manifest import DataDirectoryManifest
from .data_directory_manifest_source import DataDirectoryManifestSource
-from .data_directory_source import DataDirectorySource
from .databricks_api_key_auth import DatabricksApiKeyAuth
from .databricks_integrations import DatabricksIntegrations
from .databricks_model import DatabricksModel
@@ -326,8 +324,9 @@
from .image import Image
from .image_command import ImageCommand
from .image_content_part import ImageContentPart
-from .image_content_part_image_url import ImageContentPartImageUrl
-from .image_content_part_image_url_url import ImageContentPartImageUrlUrl
+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
@@ -364,6 +363,7 @@
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
from .list_agents_response import ListAgentsResponse
@@ -414,6 +414,7 @@
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
@@ -424,8 +425,6 @@
from .model import Model
from .model_config import ModelConfig
from .model_configuration import ModelConfiguration
-from .model_configuration_parameters import ModelConfigurationParameters
-from .model_configuration_parameters_stop import ModelConfigurationParametersStop
from .model_cost_metric import ModelCostMetric
from .model_manifest import ModelManifest
from .model_manifest_framework import ModelManifestFramework
@@ -482,6 +481,8 @@
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
@@ -550,7 +551,6 @@
from .signed_url import SignedUrl
from .sklearn_framework import SklearnFramework
from .sklearn_model_schema import SklearnModelSchema
-from .sklearn_model_schema_infer_method_name import SklearnModelSchemaInferMethodName
from .sklearn_serialization_format import SklearnSerializationFormat
from .slack_bot import SlackBot
from .slack_bot_auth import SlackBotAuth
@@ -615,7 +615,6 @@
from .tracing_project import TracingProject
from .tracing_project_manifest import TracingProjectManifest
from .transformers_framework import TransformersFramework
-from .transformers_framework_library_name import TransformersFrameworkLibraryName
from .trigger_job_run_response import TriggerJobRunResponse
from .true_foundry_apply_request_manifest import TrueFoundryApplyRequestManifest
from .true_foundry_apply_response import TrueFoundryApplyResponse
@@ -682,7 +681,6 @@
"AgentManifest",
"AgentManifestWithFqn",
"AgentOpenApiToolManifest",
- "AgentOpenApiToolManifestMethod",
"AgentOpenApiToolManifestOpenapiSpec",
"AgentOpenApiToolManifestWithFqn",
"AgentOpenApiToolManifestWithFqnOpenapiSpec",
@@ -772,6 +770,7 @@
"AzureReposIntegration",
"AzureVault",
"BaseArtifactVersion",
+ "BaseArtifactVersionManifest",
"BaseAutoscaling",
"BaseOAuth2Login",
"BaseOAuth2LoginJwtSource",
@@ -788,7 +787,6 @@
"BitbucketIntegration",
"BitbucketProviderAccount",
"BlobStorageReference",
- "BlobStorageReferenceMimeType",
"BlueGreen",
"BudgetConfig",
"BudgetLimitUnit",
@@ -802,8 +800,8 @@
"Canary",
"CanaryStep",
"ChangePasswordResponse",
- "ChatMessageTurn",
"ChatPromptManifest",
+ "ChatPromptManifestMessagesItem",
"Cluster",
"ClusterGateway",
"ClusterManifest",
@@ -841,7 +839,6 @@
"DataDirectory",
"DataDirectoryManifest",
"DataDirectoryManifestSource",
- "DataDirectorySource",
"DatabricksApiKeyAuth",
"DatabricksIntegrations",
"DatabricksModel",
@@ -993,8 +990,9 @@
"Image",
"ImageCommand",
"ImageContentPart",
- "ImageContentPartImageUrl",
- "ImageContentPartImageUrlUrl",
+ "ImageUrl",
+ "ImageUrlUrl",
+ "InferMethodName",
"InfraProviderAccount",
"InputOutputBasedCostMetricValue",
"Intercept",
@@ -1031,6 +1029,7 @@
"Kustomize",
"LatencyBasedLoadBalanceTarget",
"LatencyBasedLoadBalancingRule",
+ "LibraryName",
"LightGbmFramework",
"ListAgentVersionsResponse",
"ListAgentsResponse",
@@ -1081,6 +1080,7 @@
"McpServerProviderAccount",
"Method",
"Metric",
+ "MimeType",
"MirrorAction",
"MistralAiIntegrations",
"MistralAiKeyAuth",
@@ -1091,8 +1091,6 @@
"Model",
"ModelConfig",
"ModelConfiguration",
- "ModelConfigurationParameters",
- "ModelConfigurationParametersStop",
"ModelCostMetric",
"ModelManifest",
"ModelManifestFramework",
@@ -1149,6 +1147,8 @@
"PalmProviderAccount",
"Param",
"ParamParamType",
+ "Parameters",
+ "ParametersStop",
"PerThousandEmbeddingTokensCostMetric",
"PerThousandTokensCostMetric",
"Permissions",
@@ -1220,7 +1220,6 @@
"SignedUrl",
"SklearnFramework",
"SklearnModelSchema",
- "SklearnModelSchemaInferMethodName",
"SklearnSerializationFormat",
"SlackBot",
"SlackBotAuth",
@@ -1285,7 +1284,6 @@
"TracingProject",
"TracingProjectManifest",
"TransformersFramework",
- "TransformersFrameworkLibraryName",
"TriggerJobRunResponse",
"TrueFoundryApplyRequestManifest",
"TrueFoundryApplyResponse",
diff --git a/src/truefoundry_sdk/types/agent_manifest.py b/src/truefoundry_sdk/types/agent_manifest.py
index ad947b9a..c7d1be76 100644
--- a/src/truefoundry_sdk/types/agent_manifest.py
+++ b/src/truefoundry_sdk/types/agent_manifest.py
@@ -3,48 +3,59 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2
-from .base_artifact_version import BaseArtifactVersion
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-class AgentManifest(BaseArtifactVersion):
+class AgentManifest(UniversalBaseModel):
+ """
+ Agent manifest.
+ """
+
+ name: str = pydantic.Field()
+ """
+ Name of the entity
+ """
+
+ description: typing.Optional[str] = None
+ metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
+ """
+
+ version_alias: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
+ """
+
+ ml_repo: str = pydantic.Field()
+ """
+ Name of the ML Repo
+ """
+
+ version: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Version of the entity
+ """
+
type: typing.Literal["agent"] = "agent"
- goal: typing.Optional[str] = pydantic.Field(default=None)
+ goal: str = pydantic.Field()
"""
- +sort=100
- +uiType=TextArea
- +label=Goal
- +usage=Short form description. Will be used as `description` when this agent is used as a tool.
- +uiProps={"descriptionInline":true}
+ Short form description. Will be used as `description` when this agent is used as a tool.
"""
- instruction: typing.Optional[str] = pydantic.Field(default=None)
+ instruction: str = pydantic.Field()
"""
- `instruction` is the system prompt for now. (2.5 * 1024)
- +sort=150
- +uiType=AgentInstructions
- +uiProps={"helpText":"Use the syntax ${Tool FQN} to reference a tool, and ${AGENT FQN} to reference another agent"}
- +label=Instructions
- +usage=Instructions for the agent to follow to achieve the goal
- +uiProps={"descriptionInline":true}
+ Instructions for the agent to follow to achieve the goal
"""
- available_tools: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
+ available_tools: typing.List[str] = pydantic.Field()
"""
- +sort=200
- +uiType=Hidden
- +label=Tools
- +usage=Tools available to the agent
- +uiProps={"descriptionInline":true}
+ Tools available to the agent
"""
- model_id: typing.Optional[str] = pydantic.Field(default=None)
+ model_id: str = pydantic.Field()
"""
- +sort=300
- +uiType=EnabledModelSelector
- +uiProps={"searchable":true,"modelType":"chat","providerType":"openai"}
- +label=Model
- +usage=Model to use when running the agent
+ Model to use when running the agent
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/agent_open_api_tool_manifest.py b/src/truefoundry_sdk/types/agent_open_api_tool_manifest.py
index f6469002..c2dc3dfb 100644
--- a/src/truefoundry_sdk/types/agent_open_api_tool_manifest.py
+++ b/src/truefoundry_sdk/types/agent_open_api_tool_manifest.py
@@ -3,58 +3,66 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2
-from .agent_open_api_tool_manifest_method import AgentOpenApiToolManifestMethod
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .agent_open_api_tool_manifest_openapi_spec import AgentOpenApiToolManifestOpenapiSpec
-from .base_artifact_version import BaseArtifactVersion
+from .method import Method
-class AgentOpenApiToolManifest(BaseArtifactVersion):
+class AgentOpenApiToolManifest(UniversalBaseModel):
+ """
+ Agent OpenAPI Tool manifest.
+ """
+
+ name: str = pydantic.Field()
+ """
+ Name of the entity
+ """
+
+ description: typing.Optional[str] = None
+ metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
+ """
+
+ version_alias: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
+ """
+
+ ml_repo: str = pydantic.Field()
+ """
+ Name of the ML Repo
+ """
+
+ version: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Version of the entity
+ """
+
type: typing.Literal["openapi-tool"] = "openapi-tool"
- openapi_spec: typing.Optional[AgentOpenApiToolManifestOpenapiSpec] = pydantic.Field(default=None)
+ openapi_spec: AgentOpenApiToolManifestOpenapiSpec = pydantic.Field()
"""
- +sort=20
- +uiType=OpenapiSchema
- +label=OpenAPI Spec
- +usage=OpenAPI Spec for the tool describing the API, endpoints and parameters. [Sample OpenAPI Spec Link](https://assets.production.truefoundry.com/sample-openapi.json)
- +uiProps={"descriptionInline":true}
- +placeholder={"openapi":"3.0.0","info":{"title":"LLM Agent Tools API","version":"1.0.0"},"servers":[{"url":"https://api.example.com/v1"}],"paths":{"/weather":{"get":{"summary":"Get current weather","description":"Fetches the current weather for a given location.","parameters":[{"name":"location","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string"},"temperature":{"type":"number"},"condition":{"type":"string"}}}}}}}}}}}
+ OpenAPI Spec for the tool describing the API, endpoints and parameters. [Sample OpenAPI Spec Link](https://assets.production.truefoundry.com/sample-openapi.json)
"""
- base_url: typing.Optional[str] = pydantic.Field(default=None)
+ base_url: str = pydantic.Field()
"""
- +sort=30
- +label=Base URL
- +usage=HTTP endpoint where the API is hosted for the tools. E.g. `https://api.example.com/v1`
- +uiProps={"descriptionInline":true}
- +placeholder=https://api.example.com/v1
+ HTTP endpoint where the API is hosted for the tools. E.g. `https://api.example.com/v1`
"""
- path: typing.Optional[str] = pydantic.Field(default=None)
+ path: str = pydantic.Field()
"""
- +sort=40
- +uiType=MethodPathSelector
- +label=API Route Path
- +usage=API Route Path for the tool call HTTP request. E.g. `GET /weather`
- +uiProps={"descriptionInline":true}
+ API Route Path for the tool call HTTP request. E.g. `GET /weather`
"""
- method: typing.Optional[AgentOpenApiToolManifestMethod] = pydantic.Field(default=None)
+ method: Method = pydantic.Field()
"""
- +sort=50
- +uiType=Hidden
- +label=API HTTP Method
- +usage=HTTP Method for the tool call HTTP request
+ HTTP Method for the tool call HTTP request
"""
headers: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
"""
- +sort=60
- +uiType=KV
- +uiProps={"allowSecrets":true,"secretConfig":{"enableNew":true,"hideOptions":true}}
- +label=Headers
- +usage=HTTP Headers for the tool call HTTP request. E.g. `Authorization: Bearer `
- +uiProps={"descriptionInline":true}
+ HTTP Headers for the tool call HTTP request. E.g. `Authorization: Bearer `
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/agent_open_api_tool_manifest_method.py b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_method.py
deleted file mode 100644
index ed96fabd..00000000
--- a/src/truefoundry_sdk/types/agent_open_api_tool_manifest_method.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import enum
-import typing
-
-T_Result = typing.TypeVar("T_Result")
-
-
-class AgentOpenApiToolManifestMethod(str, enum.Enum):
- """
- +sort=50
- +uiType=Hidden
- +label=API HTTP Method
- +usage=HTTP Method for the tool call HTTP request
- """
-
- GET = "get"
- POST = "post"
- PUT = "put"
- DELETE = "delete"
- PATCH = "patch"
-
- def visit(
- self,
- get: typing.Callable[[], T_Result],
- post: typing.Callable[[], T_Result],
- put: typing.Callable[[], T_Result],
- delete: typing.Callable[[], T_Result],
- patch: typing.Callable[[], T_Result],
- ) -> T_Result:
- if self is AgentOpenApiToolManifestMethod.GET:
- return get()
- if self is AgentOpenApiToolManifestMethod.POST:
- return post()
- if self is AgentOpenApiToolManifestMethod.PUT:
- return put()
- if self is AgentOpenApiToolManifestMethod.DELETE:
- return delete()
- if self is AgentOpenApiToolManifestMethod.PATCH:
- return patch()
diff --git a/src/truefoundry_sdk/types/agent_open_api_tool_manifest_openapi_spec.py b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_openapi_spec.py
index 85a561e9..5976442c 100644
--- a/src/truefoundry_sdk/types/agent_open_api_tool_manifest_openapi_spec.py
+++ b/src/truefoundry_sdk/types/agent_open_api_tool_manifest_openapi_spec.py
@@ -4,4 +4,4 @@
from .blob_storage_reference import BlobStorageReference
-AgentOpenApiToolManifestOpenapiSpec = typing.Union[BlobStorageReference, typing.Optional[typing.Any]]
+AgentOpenApiToolManifestOpenapiSpec = typing.Union[BlobStorageReference, typing.Dict[str, typing.Optional[typing.Any]]]
diff --git a/src/truefoundry_sdk/types/artifact_manifest.py b/src/truefoundry_sdk/types/artifact_manifest.py
index ded37bb6..2d438a4d 100644
--- a/src/truefoundry_sdk/types/artifact_manifest.py
+++ b/src/truefoundry_sdk/types/artifact_manifest.py
@@ -3,36 +3,51 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .artifact_manifest_source import ArtifactManifestSource
-from .base_artifact_version import BaseArtifactVersion
-class ArtifactManifest(BaseArtifactVersion):
+class ArtifactManifest(UniversalBaseModel):
"""
- +label=Artifact Version
- +usage=Log a new Artifact Version containing files and folders with metadata
+ Artifact Version manifest.
"""
- type: typing.Literal["artifact-version"] = "artifact-version"
- source: typing.Optional[ArtifactManifestSource] = pydantic.Field(default=None)
+ name: str = pydantic.Field()
+ """
+ Name of the entity
+ """
+
+ description: typing.Optional[str] = None
+ metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
+ """
+
+ version_alias: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Artifact Source
- +uiType=Group
+ Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
"""
+ ml_repo: str = pydantic.Field()
+ """
+ Name of the ML Repo
+ """
+
+ version: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Version of the entity
+ """
+
+ type: typing.Literal["artifact-version"] = "artifact-version"
+ source: ArtifactManifestSource
step: typing.Optional[int] = pydantic.Field(default=0)
"""
- +label=Step
- +usage=Step/Epoch number in an iterative training loop the artifact version was created. Generally useful when logging a model version from a MLRepo Run
- +uiProps={"descriptionInline":true}
+ Step/Epoch number in an iterative training loop the artifact version was created. Generally useful when logging a model version from a MLRepo Run
"""
run_id: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Run ID
- +usage=ID of the MLRepo Run that generated the artifact version
- +uiType=Hidden
+ ID of the MLRepo Run that generated the artifact version
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/artifact_path.py b/src/truefoundry_sdk/types/artifact_path.py
index 36d41d37..0f5af17e 100644
--- a/src/truefoundry_sdk/types/artifact_path.py
+++ b/src/truefoundry_sdk/types/artifact_path.py
@@ -9,14 +9,12 @@
class ArtifactPath(UniversalBaseModel):
src: str = pydantic.Field()
"""
- +label=Source path
- +usage=Local file or folder path
+ Local file or folder path
"""
dest: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Destination path
- +usage=Relative path where the file or folder will be uploaded to in the artifact
+ Relative path where the file or folder will be uploaded to in the artifact
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/assistant_message.py b/src/truefoundry_sdk/types/assistant_message.py
index 1df25669..7dfb4261 100644
--- a/src/truefoundry_sdk/types/assistant_message.py
+++ b/src/truefoundry_sdk/types/assistant_message.py
@@ -10,36 +10,27 @@
class AssistantMessage(UniversalBaseModel):
"""
- +label=Assistant Message
- +usage=Assistant message turn
+ Assistant message turn
"""
role: typing.Literal["assistant"] = pydantic.Field(default="assistant")
"""
- +value=assistant
- +label=Role
- +usage=Role of the message
- +uiType=Ignore
+ Role of the message
"""
content: typing.Optional[AssistantMessageContent] = pydantic.Field(default=None)
"""
- +label=Content
- +usage=Text content for the assistant message
- +uiType=CodeEditor
- +uiProps={"language": "text"}
+ Text content for the assistant message
"""
tool_calls: typing.Optional[typing.List[ToolCall]] = pydantic.Field(default=None)
"""
- +label=Tool Calls
- +usage=List of tool calls made by the assistant
+ List of tool calls made by the assistant
"""
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Name
- +usage=Name of the assistant this message is from
+ Name of the assistant this message is from
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/base_artifact_version.py b/src/truefoundry_sdk/types/base_artifact_version.py
index 91a64ad1..3a3fee30 100644
--- a/src/truefoundry_sdk/types/base_artifact_version.py
+++ b/src/truefoundry_sdk/types/base_artifact_version.py
@@ -1,58 +1,23 @@
# This file was auto-generated by Fern from our API Definition.
+import datetime as dt
import typing
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .base_artifact_version_manifest import BaseArtifactVersionManifest
+from .subject import Subject
class BaseArtifactVersion(UniversalBaseModel):
- name: typing.Optional[str] = pydantic.Field(default=None)
- """
- +sort=1
- +label=Name
- +message=The name should start with lowercase alphabets and can contain alphanumeric and can include '-' in between
- +usage=Name of the entity
- """
-
- description: typing.Optional[str] = pydantic.Field(default=None)
- """
- +sort=2
- +label=Description
- """
-
- metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
- """
- +sort=50000
- +label=Metadata
- +usage=Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
- +uiType=JsonInput
- +uiProps={"descriptionInline":true}
- """
-
- version_alias: typing.Optional[str] = pydantic.Field(default=None)
- """
- +sort=51000
- +label=Version Alias
- +usage=Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
- +message=The version alias should start with `v` followed by alphanumeric and can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
- +uiProps={"descriptionInline":true}
- +placeholder=v1.0.0
- """
-
- ml_repo: typing.Optional[str] = pydantic.Field(default=None)
- """
- +label=ML Repo
- +usage=Name of the ML Repo
- +uiType=Hidden
- """
-
- version: typing.Optional[int] = pydantic.Field(default=None)
- """
- +label=Version of the entity
- +usage=Version of the entity
- +uiType=Hidden
- """
+ id: str
+ fqn: str
+ created_by_subject: Subject
+ created_at: typing.Optional[dt.datetime] = None
+ updated_at: typing.Optional[dt.datetime] = None
+ manifest: typing.Optional[BaseArtifactVersionManifest] = None
+ usage_code_snippet: typing.Optional[str] = None
+ ml_repo_id: str
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
diff --git a/src/truefoundry_sdk/types/base_artifact_version_manifest.py b/src/truefoundry_sdk/types/base_artifact_version_manifest.py
new file mode 100644
index 00000000..c834d618
--- /dev/null
+++ b/src/truefoundry_sdk/types/base_artifact_version_manifest.py
@@ -0,0 +1,13 @@
+# 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 .artifact_manifest import ArtifactManifest
+from .chat_prompt_manifest import ChatPromptManifest
+from .model_manifest import ModelManifest
+
+BaseArtifactVersionManifest = typing.Union[
+ ModelManifest, ChatPromptManifest, AgentOpenApiToolManifest, ArtifactManifest, AgentManifest
+]
diff --git a/src/truefoundry_sdk/types/blob_storage_reference.py b/src/truefoundry_sdk/types/blob_storage_reference.py
index 17f19d37..9e418229 100644
--- a/src/truefoundry_sdk/types/blob_storage_reference.py
+++ b/src/truefoundry_sdk/types/blob_storage_reference.py
@@ -4,31 +4,23 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .blob_storage_reference_mime_type import BlobStorageReferenceMimeType
+from .mime_type import MimeType
class BlobStorageReference(UniversalBaseModel):
"""
- +label=Blob Storage Reference
- +usage=A reference to content offloaded to blob storage
- +docs=Defines the structure for blob storage content references, including type, path, and mime_type
- """
-
- type: typing.Literal["blob-storage"] = pydantic.Field(default="blob-storage")
- """
- +value=blob-storage
+ A reference to content offloaded to blob storage
"""
+ type: typing.Literal["blob-storage"] = "blob-storage"
path: str = pydantic.Field()
"""
- +label=Path
- +usage=Path to the content in blob storage
+ Path to the content in blob storage
"""
- mime_type: BlobStorageReferenceMimeType = pydantic.Field()
+ mime_type: MimeType = pydantic.Field()
"""
- +label=MIME Type
- +usage=MIME type of the content
+ MIME type of the content
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/chat_prompt_manifest.py b/src/truefoundry_sdk/types/chat_prompt_manifest.py
index f9064d8e..d5bb270a 100644
--- a/src/truefoundry_sdk/types/chat_prompt_manifest.py
+++ b/src/truefoundry_sdk/types/chat_prompt_manifest.py
@@ -3,40 +3,58 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2
-from .base_artifact_version import BaseArtifactVersion
-from .chat_message_turn import ChatMessageTurn
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .chat_prompt_manifest_messages_item import ChatPromptManifestMessagesItem
from .model_configuration import ModelConfiguration
from .tool_schema import ToolSchema
-class ChatPromptManifest(BaseArtifactVersion):
+class ChatPromptManifest(UniversalBaseModel):
"""
- +label=Chat Prompt
- +usage=Fill in the information for opening a new chat prompt
+ Chat Prompt manifest.
+ """
+
+ name: str = pydantic.Field()
+ """
+ Name of the entity
+ """
+
+ description: typing.Optional[str] = None
+ metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
+ """
+
+ version_alias: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
+ """
+
+ ml_repo: str = pydantic.Field()
+ """
+ Name of the ML Repo
+ """
+
+ version: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Version of the entity
"""
type: typing.Literal["chat_prompt"] = "chat_prompt"
- messages: typing.Optional[typing.List[ChatMessageTurn]] = pydantic.Field(default=None)
+ messages: typing.List[ChatPromptManifestMessagesItem] = pydantic.Field()
"""
- +sort=4000
- +label=Messages in the chat conversation
- +usage=List of messages in the chat conversation, must be non-empty
+ List of messages in the chat conversation, must be non-empty
"""
- variables: typing.Optional[typing.Dict[str, typing.Optional[str]]] = pydantic.Field(default=None)
+ variables: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
"""
- +label=Variables
- +usage=Variables referenced in messages and that can be replaced when running generation
- +sort=5000
+ Variables referenced in messages and that can be replaced when running generation
"""
model_configuration: typing.Optional[ModelConfiguration] = None
tools: typing.Optional[typing.List[ToolSchema]] = pydantic.Field(default=None)
"""
- +label=Tools
- +usage=List of tools to be used in the chat prompt
- +sort=7000
+ List of tools to be used in the chat prompt
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/chat_message_turn.py b/src/truefoundry_sdk/types/chat_prompt_manifest_messages_item.py
similarity index 69%
rename from src/truefoundry_sdk/types/chat_message_turn.py
rename to src/truefoundry_sdk/types/chat_prompt_manifest_messages_item.py
index f1b701da..c355d64b 100644
--- a/src/truefoundry_sdk/types/chat_message_turn.py
+++ b/src/truefoundry_sdk/types/chat_prompt_manifest_messages_item.py
@@ -8,4 +8,6 @@
from .tool_message import ToolMessage
from .user_message import UserMessage
-ChatMessageTurn = typing.Union[SystemMessage, AssistantMessage, UserMessage, ToolMessage, DeveloperMessage]
+ChatPromptManifestMessagesItem = typing.Union[
+ SystemMessage, AssistantMessage, UserMessage, ToolMessage, DeveloperMessage
+]
diff --git a/src/truefoundry_sdk/types/data_directory.py b/src/truefoundry_sdk/types/data_directory.py
index 483355aa..f9d2d4c8 100644
--- a/src/truefoundry_sdk/types/data_directory.py
+++ b/src/truefoundry_sdk/types/data_directory.py
@@ -1,57 +1,24 @@
# This file was auto-generated by Fern from our API Definition.
+import datetime as dt
import typing
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .data_directory_source import DataDirectorySource
+from .data_directory_manifest import DataDirectoryManifest
+from .subject import Subject
class DataDirectory(UniversalBaseModel):
- """
- +label=Data Directory
- """
-
- type: typing.Literal["data-dir"] = pydantic.Field(default="data-dir")
- """
- +label=Type
- +value=data-dir
- """
-
- name: str = pydantic.Field()
- """
- +sort=1
- +label=Name
- +usage=Name of the data directory
- +message=The data directory name should start with lowercase alphabets and can contain alphanumeric and can include '-' in between
- """
-
- ml_repo: str = pydantic.Field()
- """
- +label=MLRepo
- +usage=Name of the ML Repo to create the data directory under
- +uiType=Hidden
- """
-
- description: typing.Optional[str] = pydantic.Field(default=None)
- """
- +sort=2
- +label=Description
- +usage=Description for the data directory
- """
-
- metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
- """
- +label=Metadata
- +usage=Key Value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
- +uiType=JsonInput
- """
-
- source: DataDirectorySource = pydantic.Field()
- """
- +label=Data Directory Source
- +uiType=Group
- """
+ id: str
+ ml_repo_id: str
+ name: str
+ fqn: str
+ created_by_subject: Subject
+ created_at: dt.datetime
+ updated_at: dt.datetime
+ manifest: DataDirectoryManifest
+ usage_code_snippet: typing.Optional[str] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
diff --git a/src/truefoundry_sdk/types/data_directory_source.py b/src/truefoundry_sdk/types/data_directory_source.py
deleted file mode 100644
index 09362053..00000000
--- a/src/truefoundry_sdk/types/data_directory_source.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-from .external_blob_storage_source import ExternalBlobStorageSource
-from .true_foundry_managed_source import TrueFoundryManagedSource
-
-DataDirectorySource = typing.Union[TrueFoundryManagedSource, ExternalBlobStorageSource]
diff --git a/src/truefoundry_sdk/types/developer_message.py b/src/truefoundry_sdk/types/developer_message.py
index 124604c6..fa831843 100644
--- a/src/truefoundry_sdk/types/developer_message.py
+++ b/src/truefoundry_sdk/types/developer_message.py
@@ -9,27 +9,22 @@
class DeveloperMessage(UniversalBaseModel):
"""
- +label=Developer Message
- +usage=Developer message for the chat
+ Developer message for the chat
"""
role: typing.Literal["developer"] = pydantic.Field(default="developer")
"""
- +value=Developer
- +label=Role
- +usage=The role of the messages author, in this case developer.
+ The role of the messages author, in this case developer.
"""
content: DeveloperMessageContent = pydantic.Field()
"""
- +label=Content
- +usage=The contents of the developer message.
+ The contents of the developer message.
"""
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Name
- +usage=An optional name for the participant.
+ An optional name for the participant.
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/external_blob_storage_source.py b/src/truefoundry_sdk/types/external_blob_storage_source.py
index ff4f2cfb..5eb00297 100644
--- a/src/truefoundry_sdk/types/external_blob_storage_source.py
+++ b/src/truefoundry_sdk/types/external_blob_storage_source.py
@@ -7,21 +7,14 @@
class ExternalBlobStorageSource(UniversalBaseModel):
- """
- +label=External Blob Storage Source
- """
-
type: typing.Literal["external"] = pydantic.Field(default="external")
"""
- +label=Type
- +usage=Type of the source
- +value=external
+ Type of the source
"""
uri: str = pydantic.Field()
"""
- +label=URI
- +usage=URI referencing a path in the blob storage bucket linked to the MLRepo
+ URI referencing a path in the blob storage bucket linked to the MLRepo
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/fast_ai_framework.py b/src/truefoundry_sdk/types/fast_ai_framework.py
index bd608613..a9787fef 100644
--- a/src/truefoundry_sdk/types/fast_ai_framework.py
+++ b/src/truefoundry_sdk/types/fast_ai_framework.py
@@ -7,16 +7,9 @@
class FastAiFramework(UniversalBaseModel):
- """
- +label=FastAI
- +icon=fastai
- """
-
type: typing.Literal["fastai"] = pydantic.Field(default="fastai")
"""
- +label=Type
- +usage=Type of the framework
- +value=fastai
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/function.py b/src/truefoundry_sdk/types/function.py
index 539e8777..dbbc926e 100644
--- a/src/truefoundry_sdk/types/function.py
+++ b/src/truefoundry_sdk/types/function.py
@@ -9,14 +9,12 @@
class Function(UniversalBaseModel):
name: str = pydantic.Field()
"""
- +label=Name
- +usage=Name of the tool/function being called
+ Name of the tool/function being called
"""
arguments: str = pydantic.Field()
"""
- +label=Arguments
- +usage=Arguments passed to the tool/function
+ Arguments passed to the tool/function
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/function_schema.py b/src/truefoundry_sdk/types/function_schema.py
index 480f2f38..99703d51 100644
--- a/src/truefoundry_sdk/types/function_schema.py
+++ b/src/truefoundry_sdk/types/function_schema.py
@@ -8,34 +8,27 @@
class FunctionSchema(UniversalBaseModel):
"""
- +label=Function Schema
- +usage=Schema defining a function for tool calls
+ Schema defining a function for tool calls
"""
name: str = pydantic.Field()
"""
- +label=Function Name
- +usage=Name of the function
+ Name of the function
"""
description: str = pydantic.Field()
"""
- +label=Description
- +usage=Description of the function
+ Description of the function
"""
parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
"""
- +label=Parameters
- +usage=Parameters schema for the function
- +uiType=JsonInput
- +uiProps={"descriptionInline":true}
+ Parameters schema for the function
"""
- strict: bool = pydantic.Field(default=False)
+ strict: typing.Optional[bool] = pydantic.Field(default=False)
"""
- +label=Strict
- +usage=Indicates if the function should be called strictly
+ Indicates if the function should be called strictly
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/gluon_framework.py b/src/truefoundry_sdk/types/gluon_framework.py
index b6473a13..aab1f051 100644
--- a/src/truefoundry_sdk/types/gluon_framework.py
+++ b/src/truefoundry_sdk/types/gluon_framework.py
@@ -7,16 +7,9 @@
class GluonFramework(UniversalBaseModel):
- """
- +label=Gluon
- +icon=gluon
- """
-
type: typing.Literal["gluon"] = pydantic.Field(default="gluon")
"""
- +label=Type
- +usage=Type of the framework
- +value=gluon
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/h2o_framework.py b/src/truefoundry_sdk/types/h2o_framework.py
index add33afa..c23a1c7c 100644
--- a/src/truefoundry_sdk/types/h2o_framework.py
+++ b/src/truefoundry_sdk/types/h2o_framework.py
@@ -7,16 +7,9 @@
class H2OFramework(UniversalBaseModel):
- """
- +label=H2O
- +icon=h2o
- """
-
type: typing.Literal["h2o"] = pydantic.Field(default="h2o")
"""
- +label=Type
- +usage=Type of the framework
- +value=h2o
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/image_content_part.py b/src/truefoundry_sdk/types/image_content_part.py
index 9b612f0c..cb89385b 100644
--- a/src/truefoundry_sdk/types/image_content_part.py
+++ b/src/truefoundry_sdk/types/image_content_part.py
@@ -4,25 +4,22 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .image_content_part_image_url import ImageContentPartImageUrl
+from .image_url import ImageUrl
class ImageContentPart(UniversalBaseModel):
"""
- +label=Image Content
- +usage=Image content for the message
+ Image content for the message
"""
type: typing.Literal["image_url"] = pydantic.Field(default="image_url")
"""
- +value=image_url
- +usage=Type of the content part
+ Type of the content part
"""
- image_url: ImageContentPartImageUrl = pydantic.Field()
+ image_url: ImageUrl = pydantic.Field()
"""
- +label=Image URL
- +usage=Image URL linking to the image
+ Image URL linking to the image
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/image_content_part_image_url.py b/src/truefoundry_sdk/types/image_url.py
similarity index 53%
rename from src/truefoundry_sdk/types/image_content_part_image_url.py
rename to src/truefoundry_sdk/types/image_url.py
index 02f1cbc5..f9718f68 100644
--- a/src/truefoundry_sdk/types/image_content_part_image_url.py
+++ b/src/truefoundry_sdk/types/image_url.py
@@ -4,25 +4,20 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .image_content_part_image_url_url import ImageContentPartImageUrlUrl
+from .image_url_url import ImageUrlUrl
-class ImageContentPartImageUrl(UniversalBaseModel):
+class ImageUrl(UniversalBaseModel):
"""
- +label=Image URL
- +usage=Image URL linking to the image
+ Image URL linking to the image
"""
- url: ImageContentPartImageUrlUrl = pydantic.Field()
+ url: ImageUrlUrl = pydantic.Field()
"""
- +label=URL
- +usage=Image URL linking to the image
+ Image URL linking to the image
"""
- detail: typing.Optional[str] = pydantic.Field(default=None)
- """
- +label=Details
- """
+ detail: typing.Optional[str] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
diff --git a/src/truefoundry_sdk/types/image_content_part_image_url_url.py b/src/truefoundry_sdk/types/image_url_url.py
similarity index 66%
rename from src/truefoundry_sdk/types/image_content_part_image_url_url.py
rename to src/truefoundry_sdk/types/image_url_url.py
index 2cd6bdb6..b882db84 100644
--- a/src/truefoundry_sdk/types/image_content_part_image_url_url.py
+++ b/src/truefoundry_sdk/types/image_url_url.py
@@ -4,4 +4,4 @@
from .blob_storage_reference import BlobStorageReference
-ImageContentPartImageUrlUrl = typing.Union[str, BlobStorageReference]
+ImageUrlUrl = typing.Union[str, BlobStorageReference]
diff --git a/src/truefoundry_sdk/types/sklearn_model_schema_infer_method_name.py b/src/truefoundry_sdk/types/infer_method_name.py
similarity index 59%
rename from src/truefoundry_sdk/types/sklearn_model_schema_infer_method_name.py
rename to src/truefoundry_sdk/types/infer_method_name.py
index 9513ce41..1b195d8c 100644
--- a/src/truefoundry_sdk/types/sklearn_model_schema_infer_method_name.py
+++ b/src/truefoundry_sdk/types/infer_method_name.py
@@ -6,17 +6,16 @@
T_Result = typing.TypeVar("T_Result")
-class SklearnModelSchemaInferMethodName(str, enum.Enum):
+class InferMethodName(str, enum.Enum):
"""
- +label=Inference Method Name
- +usage=Name of the method used for inference
+ Name of the method used for inference
"""
PREDICT = "predict"
PREDICT_PROBA = "predict_proba"
def visit(self, predict: typing.Callable[[], T_Result], predict_proba: typing.Callable[[], T_Result]) -> T_Result:
- if self is SklearnModelSchemaInferMethodName.PREDICT:
+ if self is InferMethodName.PREDICT:
return predict()
- if self is SklearnModelSchemaInferMethodName.PREDICT_PROBA:
+ if self is InferMethodName.PREDICT_PROBA:
return predict_proba()
diff --git a/src/truefoundry_sdk/types/keras_framework.py b/src/truefoundry_sdk/types/keras_framework.py
index 87837060..c1ac4e15 100644
--- a/src/truefoundry_sdk/types/keras_framework.py
+++ b/src/truefoundry_sdk/types/keras_framework.py
@@ -7,16 +7,9 @@
class KerasFramework(UniversalBaseModel):
- """
- +label=Keras
- +icon=keras
- """
-
type: typing.Literal["keras"] = pydantic.Field(default="keras")
"""
- +label=Type
- +usage=Type of the framework
- +value=keras
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/transformers_framework_library_name.py b/src/truefoundry_sdk/types/library_name.py
similarity index 63%
rename from src/truefoundry_sdk/types/transformers_framework_library_name.py
rename to src/truefoundry_sdk/types/library_name.py
index 8fed79d2..efac7056 100644
--- a/src/truefoundry_sdk/types/transformers_framework_library_name.py
+++ b/src/truefoundry_sdk/types/library_name.py
@@ -6,10 +6,9 @@
T_Result = typing.TypeVar("T_Result")
-class TransformersFrameworkLibraryName(str, enum.Enum):
+class LibraryName(str, enum.Enum):
"""
- +label=Library Name
- +usage=Name of the library for the framework
+ Name of the library for the framework
"""
TRANSFORMERS = "transformers"
@@ -22,9 +21,9 @@ def visit(
sentence_transformers: typing.Callable[[], T_Result],
diffusers: typing.Callable[[], T_Result],
) -> T_Result:
- if self is TransformersFrameworkLibraryName.TRANSFORMERS:
+ if self is LibraryName.TRANSFORMERS:
return transformers()
- if self is TransformersFrameworkLibraryName.SENTENCE_TRANSFORMERS:
+ if self is LibraryName.SENTENCE_TRANSFORMERS:
return sentence_transformers()
- if self is TransformersFrameworkLibraryName.DIFFUSERS:
+ if self is LibraryName.DIFFUSERS:
return diffusers()
diff --git a/src/truefoundry_sdk/types/light_gbm_framework.py b/src/truefoundry_sdk/types/light_gbm_framework.py
index 626216dd..9791c6ad 100644
--- a/src/truefoundry_sdk/types/light_gbm_framework.py
+++ b/src/truefoundry_sdk/types/light_gbm_framework.py
@@ -7,16 +7,9 @@
class LightGbmFramework(UniversalBaseModel):
- """
- +label=LightGBM
- +icon=lightbgm
- """
-
type: typing.Literal["lightgbm"] = pydantic.Field(default="lightgbm")
"""
- +label=Type
- +usage=Type of the framework
- +value=lightgbm
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/local_artifact_source.py b/src/truefoundry_sdk/types/local_artifact_source.py
index 43e48ed2..1777eed8 100644
--- a/src/truefoundry_sdk/types/local_artifact_source.py
+++ b/src/truefoundry_sdk/types/local_artifact_source.py
@@ -10,15 +10,12 @@
class LocalArtifactSource(UniversalBaseModel):
type: typing.Literal["local"] = pydantic.Field(default="local")
"""
- +label=Type
- +usage=Type of the source
- +value=local
+ Type of the source
"""
paths: typing.List[ArtifactPath] = pydantic.Field()
"""
- +label=Paths
- +usage=Array of ArtifactPath objects representing the source and destination paths
+ Array of ArtifactPath objects representing the source and destination paths
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/local_model_source.py b/src/truefoundry_sdk/types/local_model_source.py
index 51f15ea8..7e9b66f2 100644
--- a/src/truefoundry_sdk/types/local_model_source.py
+++ b/src/truefoundry_sdk/types/local_model_source.py
@@ -9,15 +9,12 @@
class LocalModelSource(UniversalBaseModel):
type: typing.Literal["local"] = pydantic.Field(default="local")
"""
- +label=Type
- +usage=Type of the source
- +value=local
+ Type of the source
"""
file_or_folder: str = pydantic.Field()
"""
- +label=Path to the model file or folder
- +usage=Path to the model file or folder
+ Path to the model file or folder
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/blob_storage_reference_mime_type.py b/src/truefoundry_sdk/types/mime_type.py
similarity index 66%
rename from src/truefoundry_sdk/types/blob_storage_reference_mime_type.py
rename to src/truefoundry_sdk/types/mime_type.py
index 99dd4c15..13acf9a3 100644
--- a/src/truefoundry_sdk/types/blob_storage_reference_mime_type.py
+++ b/src/truefoundry_sdk/types/mime_type.py
@@ -6,10 +6,9 @@
T_Result = typing.TypeVar("T_Result")
-class BlobStorageReferenceMimeType(str, enum.Enum):
+class MimeType(str, enum.Enum):
"""
- +label=MIME Type
- +usage=MIME type of the content
+ MIME type of the content
"""
TEXT_PLAIN = "text/plain"
@@ -26,13 +25,13 @@ def visit(
image_jpeg: typing.Callable[[], T_Result],
application_x_directory: typing.Callable[[], T_Result],
) -> T_Result:
- if self is BlobStorageReferenceMimeType.TEXT_PLAIN:
+ if self is MimeType.TEXT_PLAIN:
return text_plain()
- if self is BlobStorageReferenceMimeType.APPLICATION_JSON:
+ if self is MimeType.APPLICATION_JSON:
return application_json()
- if self is BlobStorageReferenceMimeType.IMAGE_PNG:
+ if self is MimeType.IMAGE_PNG:
return image_png()
- if self is BlobStorageReferenceMimeType.IMAGE_JPEG:
+ if self is MimeType.IMAGE_JPEG:
return image_jpeg()
- if self is BlobStorageReferenceMimeType.APPLICATION_X_DIRECTORY:
+ if self is MimeType.APPLICATION_X_DIRECTORY:
return application_x_directory()
diff --git a/src/truefoundry_sdk/types/model_configuration.py b/src/truefoundry_sdk/types/model_configuration.py
index ac2a10f8..f56f7089 100644
--- a/src/truefoundry_sdk/types/model_configuration.py
+++ b/src/truefoundry_sdk/types/model_configuration.py
@@ -4,44 +4,32 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .model_configuration_parameters import ModelConfigurationParameters
+from .parameters import Parameters
class ModelConfiguration(UniversalBaseModel):
"""
- +label=Model Configuration
- +icon=fa-cogs:#326ce5
- +usage=Add a model from Gateway along with parameters to be used for chat completion
+ Add a model from Gateway along with parameters to be used for chat completion
"""
provider: str = pydantic.Field()
"""
- +sort=1000
- +uiType=SelectModelAndProvider
- +uiProps={"isModel": false,"providerJsonKey": "model_configuration.provider","searchable": true}
- +label=Provider Name
- +usage=Name of the provider, must be one of the integration providers configured for the Gateway
+ Name of the provider, must be one of the integration providers configured for the Gateway
"""
model: str = pydantic.Field()
"""
- +sort=1001
- +uiType=SelectModelAndProvider
- +uiProps={"isModel": true,"providerJsonKey": "model_configuration.provider","searchable": true}
- +label=Model Name
- +usage=Name of the model to be used for generations. This model should be available in the provider
+ Name of the model to be used for generations. This model should be available in the provider
"""
- parameters: typing.Optional[ModelConfigurationParameters] = pydantic.Field(default=None)
+ parameters: typing.Optional[Parameters] = pydantic.Field(default=None)
"""
- +label=Parameters
- +usage=Parameters to pass to the model when generating
+ Parameters to pass to the model when generating
"""
extra_parameters: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
"""
- +label=Extra Parameters
- +usage=Arbitrary extra parameters to pass to the model when generating
+ Arbitrary extra parameters to pass to the model when generating
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/model_manifest.py b/src/truefoundry_sdk/types/model_manifest.py
index ba13837f..4e0ae5eb 100644
--- a/src/truefoundry_sdk/types/model_manifest.py
+++ b/src/truefoundry_sdk/types/model_manifest.py
@@ -3,46 +3,59 @@
import typing
import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2
-from .base_artifact_version import BaseArtifactVersion
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .model_manifest_framework import ModelManifestFramework
from .model_manifest_source import ModelManifestSource
from .model_version_environment import ModelVersionEnvironment
-class ModelManifest(BaseArtifactVersion):
+class ModelManifest(UniversalBaseModel):
"""
- +label=Artifact Version
- +usage=Log a new Model Version containing model files and folders with metadata
+ Model Version artifact.
"""
- type: typing.Literal["model-version"] = "model-version"
- source: typing.Optional[ModelManifestSource] = pydantic.Field(default=None)
+ name: str = pydantic.Field()
+ """
+ Name of the entity
+ """
+
+ description: typing.Optional[str] = None
+ metadata: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ Key value metadata. Should be valid JSON. For e.g. `{"business-unit": "sales", "quality": "good", "rating": 4.5}`
+ """
+
+ version_alias: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Model Source
- +uiType=Group
+ Version alias is alternate, ideally human readable, version string to reference an artifact version. It should start with `v` followed by alphanumeric and it can include `.` and `-` in between (e.g. `v1.0.0`, `v1-prod`, `v3-dev`, etc)
"""
+ ml_repo: str = pydantic.Field()
+ """
+ Name of the ML Repo
+ """
+
+ version: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Version of the entity
+ """
+
+ type: typing.Literal["model-version"] = "model-version"
+ source: ModelManifestSource
framework: typing.Optional[ModelManifestFramework] = pydantic.Field(default=None)
"""
- +label=Framework
- +usage=Framework for the model version like Transformers, PyTorch, Sklearn, Xgboost etc with framework specific metadata. This will be used to infer model deployment configuration
- +uiProps={"descriptionInline":true}
+ Framework for the model version like Transformers, PyTorch, Sklearn, Xgboost etc with framework specific metadata. This will be used to infer model deployment configuration
"""
environment: typing.Optional[ModelVersionEnvironment] = None
step: typing.Optional[int] = pydantic.Field(default=0)
"""
- +label=Step
- +usage=Step/Epoch number in an iterative training loop the model version was created. Generally useful when logging a model version from a MLRepo Run
- +uiProps={"descriptionInline":true}
+ Step/Epoch number in an iterative training loop the model version was created. Generally useful when logging a model version from a MLRepo Run
"""
run_id: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Run ID
- +usage=ID of the MLRepo Run that generated the model version
- +uiType=Hidden
+ ID of the MLRepo Run that generated the model version
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/model_version_environment.py b/src/truefoundry_sdk/types/model_version_environment.py
index 832353c3..dd80ad17 100644
--- a/src/truefoundry_sdk/types/model_version_environment.py
+++ b/src/truefoundry_sdk/types/model_version_environment.py
@@ -8,21 +8,17 @@
class ModelVersionEnvironment(UniversalBaseModel):
"""
- +label=Environment
- +usage=Runtime environment describing python version and dependencies for running the model
- +uiProps={"descriptionInline":true}
+ Runtime environment describing python version and dependencies for running the model
"""
python_version: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Python Version
- +usage=Python version to use when running the model
+ Python version to use when running the model
"""
pip_packages: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
"""
- +label=PIP Packages
- +usage=pip dependencies needed for running the model
+ pip dependencies needed for running the model
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/onnx_framework.py b/src/truefoundry_sdk/types/onnx_framework.py
index 3ac283f6..3e306d88 100644
--- a/src/truefoundry_sdk/types/onnx_framework.py
+++ b/src/truefoundry_sdk/types/onnx_framework.py
@@ -7,16 +7,9 @@
class OnnxFramework(UniversalBaseModel):
- """
- +label=ONNX
- +icon=onnx
- """
-
type: typing.Literal["onnx"] = pydantic.Field(default="onnx")
"""
- +label=Type
- +usage=Type of the framework
- +value=onnx
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/paddle_framework.py b/src/truefoundry_sdk/types/paddle_framework.py
index d943d53c..20d4218a 100644
--- a/src/truefoundry_sdk/types/paddle_framework.py
+++ b/src/truefoundry_sdk/types/paddle_framework.py
@@ -7,16 +7,9 @@
class PaddleFramework(UniversalBaseModel):
- """
- +label=Paddle
- +icon=paddle
- """
-
type: typing.Literal["paddle"] = pydantic.Field(default="paddle")
"""
- +label=Type
- +usage=Type of the framework
- +value=paddle
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/model_configuration_parameters.py b/src/truefoundry_sdk/types/parameters.py
similarity index 68%
rename from src/truefoundry_sdk/types/model_configuration_parameters.py
rename to src/truefoundry_sdk/types/parameters.py
index e4c991fb..025f9969 100644
--- a/src/truefoundry_sdk/types/model_configuration_parameters.py
+++ b/src/truefoundry_sdk/types/parameters.py
@@ -4,20 +4,19 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .model_configuration_parameters_stop import ModelConfigurationParametersStop
+from .parameters_stop import ParametersStop
-class ModelConfigurationParameters(UniversalBaseModel):
+class Parameters(UniversalBaseModel):
"""
- +label=Parameters
- +usage=Parameters to pass to the model when generating
+ Parameters to pass to the model when generating
"""
max_tokens: typing.Optional[int] = None
temperature: typing.Optional[float] = None
top_k: typing.Optional[float] = None
top_p: typing.Optional[float] = None
- stop: typing.Optional[ModelConfigurationParametersStop] = None
+ stop: typing.Optional[ParametersStop] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
diff --git a/src/truefoundry_sdk/types/model_configuration_parameters_stop.py b/src/truefoundry_sdk/types/parameters_stop.py
similarity index 52%
rename from src/truefoundry_sdk/types/model_configuration_parameters_stop.py
rename to src/truefoundry_sdk/types/parameters_stop.py
index d6494677..51f71bbe 100644
--- a/src/truefoundry_sdk/types/model_configuration_parameters_stop.py
+++ b/src/truefoundry_sdk/types/parameters_stop.py
@@ -2,4 +2,4 @@
import typing
-ModelConfigurationParametersStop = typing.Union[typing.List[str], str]
+ParametersStop = typing.Union[typing.List[str], str]
diff --git a/src/truefoundry_sdk/types/py_torch_framework.py b/src/truefoundry_sdk/types/py_torch_framework.py
index d1dbc8a0..843523aa 100644
--- a/src/truefoundry_sdk/types/py_torch_framework.py
+++ b/src/truefoundry_sdk/types/py_torch_framework.py
@@ -7,16 +7,9 @@
class PyTorchFramework(UniversalBaseModel):
- """
- +label=PyTorch
- +icon=pytorch
- """
-
type: typing.Literal["pytorch"] = pydantic.Field(default="pytorch")
"""
- +label=Type
- +usage=Type of the framework
- +value=pytorch
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/refusal_content_part.py b/src/truefoundry_sdk/types/refusal_content_part.py
index 7c60ed2f..c54c9cb5 100644
--- a/src/truefoundry_sdk/types/refusal_content_part.py
+++ b/src/truefoundry_sdk/types/refusal_content_part.py
@@ -9,14 +9,12 @@
class RefusalContentPart(UniversalBaseModel):
type: str = pydantic.Field()
"""
- +value=refusal
- +usage=Type of the content part
+ Type of the content part
"""
refusal: str = pydantic.Field()
"""
- +label=Refusal
- +usage=Reason
+ Reason
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/sklearn_framework.py b/src/truefoundry_sdk/types/sklearn_framework.py
index 8c65cac0..39f0c634 100644
--- a/src/truefoundry_sdk/types/sklearn_framework.py
+++ b/src/truefoundry_sdk/types/sklearn_framework.py
@@ -9,23 +9,14 @@
class SklearnFramework(UniversalBaseModel):
- """
- +label=Sklearn
- +icon=sklearn
- """
-
type: typing.Literal["sklearn"] = pydantic.Field(default="sklearn")
"""
- +label=Type
- +usage=Type of the framework
- +value=sklearn
+ Type of the framework
"""
model_filepath: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Model file path
- +usage=Relative path to the model file in the model version contents
- +uiProps={"descriptionInline":true}
+ Relative path to the model file in the model version contents
"""
serialization_format: typing.Optional[SklearnSerializationFormat] = None
diff --git a/src/truefoundry_sdk/types/sklearn_model_schema.py b/src/truefoundry_sdk/types/sklearn_model_schema.py
index 11c05e00..967079e9 100644
--- a/src/truefoundry_sdk/types/sklearn_model_schema.py
+++ b/src/truefoundry_sdk/types/sklearn_model_schema.py
@@ -4,32 +4,23 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .sklearn_model_schema_infer_method_name import SklearnModelSchemaInferMethodName
+from .infer_method_name import InferMethodName
class SklearnModelSchema(UniversalBaseModel):
+ infer_method_name: InferMethodName = pydantic.Field()
"""
- +label=Scikit Learn Model Schema
- """
-
- infer_method_name: SklearnModelSchemaInferMethodName = pydantic.Field()
- """
- +label=Inference Method Name
- +usage=Name of the method used for inference
+ Name of the method used for inference
"""
inputs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
"""
- +label= Input Schema
- +usage=Schema of the input
- +uiProps={"descriptionInline":true}
+ Schema of the input
"""
outputs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
"""
- +label= Output Schema
- +usage=Schema of the output
- +uiProps={"descriptionInline":true}
+ Schema of the output
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/sklearn_serialization_format.py b/src/truefoundry_sdk/types/sklearn_serialization_format.py
index 4f2412b9..70d78613 100644
--- a/src/truefoundry_sdk/types/sklearn_serialization_format.py
+++ b/src/truefoundry_sdk/types/sklearn_serialization_format.py
@@ -8,8 +8,7 @@
class SklearnSerializationFormat(str, enum.Enum):
"""
- +label=Scikit Learn Serialization Format
- +usage=Serialization format used to save the sklearn model
+ Serialization format used to save the sklearn model
"""
CLOUDPICKLE = "cloudpickle"
diff --git a/src/truefoundry_sdk/types/spa_cy_framework.py b/src/truefoundry_sdk/types/spa_cy_framework.py
index e8958e3a..16a6c6bc 100644
--- a/src/truefoundry_sdk/types/spa_cy_framework.py
+++ b/src/truefoundry_sdk/types/spa_cy_framework.py
@@ -7,16 +7,9 @@
class SpaCyFramework(UniversalBaseModel):
- """
- +label=SpaCy
- +icon=spacy
- """
-
type: typing.Literal["spacy"] = pydantic.Field(default="spacy")
"""
- +label=Type
- +usage=Type of the framework
- +value=spacy
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/stats_models_framework.py b/src/truefoundry_sdk/types/stats_models_framework.py
index 9d3891fe..2669da91 100644
--- a/src/truefoundry_sdk/types/stats_models_framework.py
+++ b/src/truefoundry_sdk/types/stats_models_framework.py
@@ -7,16 +7,9 @@
class StatsModelsFramework(UniversalBaseModel):
- """
- +label=StatsModels
- +icon=statsmodel
- """
-
type: typing.Literal["statsmodels"] = pydantic.Field(default="statsmodels")
"""
- +label=Type
- +usage=Type of the framework
- +value=statsmodels
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/system_message.py b/src/truefoundry_sdk/types/system_message.py
index 2943d3c7..371cf9e8 100644
--- a/src/truefoundry_sdk/types/system_message.py
+++ b/src/truefoundry_sdk/types/system_message.py
@@ -9,30 +9,22 @@
class SystemMessage(UniversalBaseModel):
"""
- +label=System Message
- +usage=System message for the chat
+ System message for the chat
"""
role: typing.Literal["system"] = pydantic.Field(default="system")
"""
- +value=system
- +label=Role
- +usage=Role of the message
- +uiType=Ignore
+ Role of the message
"""
content: SystemMessageContent = pydantic.Field()
"""
- +label=Content
- +usage=Text content for the system message
- +uiType=CodeEditor
- +uiProps={"language": "text"}
+ Text content for the system message
"""
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Name
- +usage=Name of the system
+ Name of the system
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/tensor_flow_framework.py b/src/truefoundry_sdk/types/tensor_flow_framework.py
index 96aff20c..e46411cb 100644
--- a/src/truefoundry_sdk/types/tensor_flow_framework.py
+++ b/src/truefoundry_sdk/types/tensor_flow_framework.py
@@ -7,16 +7,9 @@
class TensorFlowFramework(UniversalBaseModel):
- """
- +label=Tensorflow
- +icon=tensorflow
- """
-
type: typing.Literal["tensorflow"] = pydantic.Field(default="tensorflow")
"""
- +label=Type
- +usage=Type of the framework
- +value=tensorflow
+ Type of the framework
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/text_content_part.py b/src/truefoundry_sdk/types/text_content_part.py
index 28c152c6..500390d1 100644
--- a/src/truefoundry_sdk/types/text_content_part.py
+++ b/src/truefoundry_sdk/types/text_content_part.py
@@ -9,20 +9,17 @@
class TextContentPart(UniversalBaseModel):
"""
- +label=Text Content
- +usage=Text content for the message
+ Text content for the message
"""
type: typing.Literal["text"] = pydantic.Field(default="text")
"""
- +value=text
- +usage=Type of the content part
+ Type of the content part
"""
text: TextContentPartText = pydantic.Field()
"""
- +label=Text
- +usage=Text content for the message
+ Text content for the message
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/tool_call.py b/src/truefoundry_sdk/types/tool_call.py
index 5887fefd..0b416343 100644
--- a/src/truefoundry_sdk/types/tool_call.py
+++ b/src/truefoundry_sdk/types/tool_call.py
@@ -10,14 +10,12 @@
class ToolCall(UniversalBaseModel):
type: typing.Literal["function"] = pydantic.Field(default="function")
"""
- +label=Type
- +usage=Type of the tool call
+ Type of the tool call
"""
id: str = pydantic.Field()
"""
- +label=ID
- +usage=Unique identifier for the tool call
+ Unique identifier for the tool call
"""
function: Function
diff --git a/src/truefoundry_sdk/types/tool_message.py b/src/truefoundry_sdk/types/tool_message.py
index ed110e43..3729f89f 100644
--- a/src/truefoundry_sdk/types/tool_message.py
+++ b/src/truefoundry_sdk/types/tool_message.py
@@ -9,26 +9,22 @@
class ToolMessage(UniversalBaseModel):
"""
- +label=Tool Message
- +usage=Tool message for the chat
+ Tool message for the chat
"""
role: typing.Literal["tool"] = pydantic.Field(default="tool")
"""
- +label=Role
- +usage=Role of the message
+ Role of the message
"""
content: ToolMessageContent = pydantic.Field()
"""
- +label=Content
- +usage=Content of the tool call result
+ Content of the tool call result
"""
tool_call_id: str = pydantic.Field()
"""
- +label=Tool Call ID
- +usage=Unique identifier for the tool call
+ Unique identifier for the tool call
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/tool_schema.py b/src/truefoundry_sdk/types/tool_schema.py
index 49dc22ae..5e2b7c8e 100644
--- a/src/truefoundry_sdk/types/tool_schema.py
+++ b/src/truefoundry_sdk/types/tool_schema.py
@@ -9,14 +9,12 @@
class ToolSchema(UniversalBaseModel):
"""
- +label=Tool Schema
- +usage=Schema defining a tool for the chat prompt
+ Schema defining a tool for the chat prompt
"""
type: typing.Literal["function"] = pydantic.Field(default="function")
"""
- +label=Type
- +usage=Type of the tool
+ Type of the tool
"""
function: FunctionSchema
diff --git a/src/truefoundry_sdk/types/tracing_project_manifest.py b/src/truefoundry_sdk/types/tracing_project_manifest.py
index df1f1eae..4691c584 100644
--- a/src/truefoundry_sdk/types/tracing_project_manifest.py
+++ b/src/truefoundry_sdk/types/tracing_project_manifest.py
@@ -7,19 +7,19 @@
class TracingProjectManifest(UniversalBaseModel):
+ """
+ Tracing Project manifest.
+ """
+
type: typing.Literal["tracing-project"] = "tracing-project"
name: str = pydantic.Field()
"""
- +label=Name
- +usage=Name of the tracing project
- +message=The name should start with lowercase alphabets and can contain alphanumeric and can include '-' in between
+ Name of the tracing project
"""
ml_repo: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=ML Repo
- +usage=Name of the ML Repo
- +uiType=Hidden
+ Name of the ML Repo
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/transformers_framework.py b/src/truefoundry_sdk/types/transformers_framework.py
index 262fc514..18f0ab8b 100644
--- a/src/truefoundry_sdk/types/transformers_framework.py
+++ b/src/truefoundry_sdk/types/transformers_framework.py
@@ -4,40 +4,28 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .transformers_framework_library_name import TransformersFrameworkLibraryName
+from .library_name import LibraryName
class TransformersFramework(UniversalBaseModel):
- """
- +label=Transformers
- +icon=transformers
- """
-
type: typing.Literal["transformers"] = pydantic.Field(default="transformers")
"""
- +label=Type
- +usage=Type of the framework
- +value=transformers
+ Type of the framework
"""
- library_name: typing.Optional[TransformersFrameworkLibraryName] = pydantic.Field(default=None)
+ library_name: typing.Optional[LibraryName] = pydantic.Field(default=None)
"""
- +label=Library Name
- +usage=Name of the library for the framework
+ Name of the library for the framework
"""
pipeline_tag: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Pipeline Tag
- +usage=The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values
- +uiProps={"descriptionInline":true}
+ The `pipeline()` task this model can be used with e.g. `text-generation`. See [huggingface docs](https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline.task) for all possible values
"""
base_model: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Base Model
- +usage=Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.
- +uiProps={"descriptionInline":true}
+ Base model Id from HuggingFace Hub. If this is a finetuned model, this points to the base model id used for finetuning.
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/true_foundry_managed_source.py b/src/truefoundry_sdk/types/true_foundry_managed_source.py
index c9a7a733..e045fd94 100644
--- a/src/truefoundry_sdk/types/true_foundry_managed_source.py
+++ b/src/truefoundry_sdk/types/true_foundry_managed_source.py
@@ -7,23 +7,12 @@
class TrueFoundryManagedSource(UniversalBaseModel):
- """
- +label=TrueFoundry Managed Source
- """
-
type: typing.Literal["truefoundry"] = pydantic.Field(default="truefoundry")
"""
- +label=Type
- +usage=Type of the source
- +value=truefoundry
+ Type of the source
"""
- uri: typing.Optional[str] = pydantic.Field(default=None)
- """
- +label=URI
- +uiType=ModelUploadInput
- +uiProps={"hideClear":true}
- """
+ uri: typing.Optional[str] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2
diff --git a/src/truefoundry_sdk/types/user_message.py b/src/truefoundry_sdk/types/user_message.py
index 1808da9e..2f85b7f2 100644
--- a/src/truefoundry_sdk/types/user_message.py
+++ b/src/truefoundry_sdk/types/user_message.py
@@ -9,29 +9,22 @@
class UserMessage(UniversalBaseModel):
"""
- +label=User Message
- +usage=User message turn
+ User message turn
"""
role: typing.Literal["user"] = pydantic.Field(default="user")
"""
- +value=user
- +usage=Role of the message
- +uiType=Ignore
+ Role of the message
"""
content: UserMessageContent = pydantic.Field()
"""
- +label=Content
- +usage=Content of the user message. can be a mix of text and images
- +uiType=CodeEditor
- +uiProps={"language": "text"}
+ Content of the user message. can be a mix of text and images
"""
name: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Name
- +usage=Name of the user this message is from
+ Name of the user this message is from
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/xg_boost_framework.py b/src/truefoundry_sdk/types/xg_boost_framework.py
index 38e80b70..7874e209 100644
--- a/src/truefoundry_sdk/types/xg_boost_framework.py
+++ b/src/truefoundry_sdk/types/xg_boost_framework.py
@@ -9,23 +9,15 @@
class XgBoostFramework(UniversalBaseModel):
- """
- +label=XGBoost
- +icon=xgboost
- """
-
type: typing.Literal["xgboost"] = pydantic.Field(default="xgboost")
"""
- +label=Type
- +usage=Type of the framework
- +value=xgboost
+ Type of the framework
"""
serialization_format: typing.Optional[XgBoostSerializationFormat] = None
model_filepath: typing.Optional[str] = pydantic.Field(default=None)
"""
- +label=Model file path
- +usage=Relative path to the model file in the model version contents
+ Relative path to the model file in the model version contents
"""
model_schema: typing.Optional[XgBoostModelSchema] = None
diff --git a/src/truefoundry_sdk/types/xg_boost_model_schema.py b/src/truefoundry_sdk/types/xg_boost_model_schema.py
index 7aa7c17c..720609f2 100644
--- a/src/truefoundry_sdk/types/xg_boost_model_schema.py
+++ b/src/truefoundry_sdk/types/xg_boost_model_schema.py
@@ -8,28 +8,22 @@
class XgBoostModelSchema(UniversalBaseModel):
"""
- +label=XGBoost Model Schema
- +usage=Schema of the XGBoost model
+ Schema of the XGBoost model
"""
infer_method_name: typing.Literal["predict"] = pydantic.Field(default="predict")
"""
- +label=Inference Method Name
- +usage=Name of the method used for inference
+ Name of the method used for inference
"""
inputs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
"""
- +label= Input Schema
- +usage=Schema of the input
- +uiProps={"descriptionInline":true}
+ Schema of the input
"""
outputs: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
"""
- +label= Output Schema
- +usage=Schema of the output
- +uiProps={"descriptionInline":true}
+ Schema of the output
"""
if IS_PYDANTIC_V2:
diff --git a/src/truefoundry_sdk/types/xg_boost_serialization_format.py b/src/truefoundry_sdk/types/xg_boost_serialization_format.py
index 8c37296a..ef383b5f 100644
--- a/src/truefoundry_sdk/types/xg_boost_serialization_format.py
+++ b/src/truefoundry_sdk/types/xg_boost_serialization_format.py
@@ -8,8 +8,7 @@
class XgBoostSerializationFormat(str, enum.Enum):
"""
- +label=Serialization format
- +usage=Serialization format used to save the xgboost model
+ Serialization format used to save the xgboost model
"""
CLOUDPICKLE = "cloudpickle"