diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index 6e816b0ebb8..b867878f4d6 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -a499dda0f7802e37868d3f3076f62639165475d8 \ No newline at end of file +50a10950ac51e28984f99a85f0d4511e90d6ae94 \ No newline at end of file diff --git a/.github/workflows/tagging.yml b/.github/workflows/tagging.yml old mode 100644 new mode 100755 diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index fa2adeb1e8a..4e5d5bd234c 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -12,3 +12,5 @@ * Make sure warnings asking for approval are understood by agents ([#5239](https://github.com/databricks/cli/pull/5239)) ### Dependency updates +* Bump `github.com/databricks/databricks-sdk-go` from v0.132.0 to v0.134.0. +### API Changes diff --git a/acceptance/bundle/refschema/out.fields.txt b/acceptance/bundle/refschema/out.fields.txt index 999296b2139..c651b61da97 100644 --- a/acceptance/bundle/refschema/out.fields.txt +++ b/acceptance/bundle/refschema/out.fields.txt @@ -1232,7 +1232,15 @@ resources.jobs.*.tasks[*].for_each_task.task.notification_settings.no_alert_for_ resources.jobs.*.tasks[*].for_each_task.task.notification_settings.no_alert_for_skipped_runs bool ALL resources.jobs.*.tasks[*].for_each_task.task.pipeline_task *jobs.PipelineTask ALL resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.full_refresh bool ALL +resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.full_refresh_selection []string ALL +resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.full_refresh_selection[*] string ALL resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.pipeline_id string ALL +resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.refresh_flow_selection []string ALL +resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.refresh_flow_selection[*] string ALL +resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.refresh_selection []string ALL +resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.refresh_selection[*] string ALL +resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.reset_checkpoint_selection []string ALL +resources.jobs.*.tasks[*].for_each_task.task.pipeline_task.reset_checkpoint_selection[*] string ALL resources.jobs.*.tasks[*].for_each_task.task.power_bi_task *jobs.PowerBiTask ALL resources.jobs.*.tasks[*].for_each_task.task.power_bi_task.connection_resource_name string ALL resources.jobs.*.tasks[*].for_each_task.task.power_bi_task.power_bi_model *jobs.PowerBiModel ALL @@ -1249,6 +1257,12 @@ resources.jobs.*.tasks[*].for_each_task.task.power_bi_task.tables[*].name string resources.jobs.*.tasks[*].for_each_task.task.power_bi_task.tables[*].schema string ALL resources.jobs.*.tasks[*].for_each_task.task.power_bi_task.tables[*].storage_mode jobs.StorageMode ALL resources.jobs.*.tasks[*].for_each_task.task.power_bi_task.warehouse_id string ALL +resources.jobs.*.tasks[*].for_each_task.task.python_operator_task *jobs.PythonOperatorTask ALL +resources.jobs.*.tasks[*].for_each_task.task.python_operator_task.main string ALL +resources.jobs.*.tasks[*].for_each_task.task.python_operator_task.parameters []jobs.PythonOperatorTaskParameter ALL +resources.jobs.*.tasks[*].for_each_task.task.python_operator_task.parameters[*] jobs.PythonOperatorTaskParameter ALL +resources.jobs.*.tasks[*].for_each_task.task.python_operator_task.parameters[*].name string ALL +resources.jobs.*.tasks[*].for_each_task.task.python_operator_task.parameters[*].value string ALL resources.jobs.*.tasks[*].for_each_task.task.python_wheel_task *jobs.PythonWheelTask ALL resources.jobs.*.tasks[*].for_each_task.task.python_wheel_task.entry_point string ALL resources.jobs.*.tasks[*].for_each_task.task.python_wheel_task.named_parameters map[string]string ALL @@ -1270,6 +1284,14 @@ resources.jobs.*.tasks[*].for_each_task.task.run_job_task.notebook_params map[st resources.jobs.*.tasks[*].for_each_task.task.run_job_task.notebook_params.* string ALL resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params *jobs.PipelineParams ALL resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.full_refresh bool ALL +resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.full_refresh_selection []string ALL +resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.full_refresh_selection[*] string ALL +resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.refresh_flow_selection []string ALL +resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.refresh_flow_selection[*] string ALL +resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.refresh_selection []string ALL +resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.refresh_selection[*] string ALL +resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.reset_checkpoint_selection []string ALL +resources.jobs.*.tasks[*].for_each_task.task.run_job_task.pipeline_params.reset_checkpoint_selection[*] string ALL resources.jobs.*.tasks[*].for_each_task.task.run_job_task.python_named_params map[string]string ALL resources.jobs.*.tasks[*].for_each_task.task.run_job_task.python_named_params.* string ALL resources.jobs.*.tasks[*].for_each_task.task.run_job_task.python_params []string ALL @@ -1493,7 +1515,15 @@ resources.jobs.*.tasks[*].notification_settings.no_alert_for_canceled_runs bool resources.jobs.*.tasks[*].notification_settings.no_alert_for_skipped_runs bool ALL resources.jobs.*.tasks[*].pipeline_task *jobs.PipelineTask ALL resources.jobs.*.tasks[*].pipeline_task.full_refresh bool ALL +resources.jobs.*.tasks[*].pipeline_task.full_refresh_selection []string ALL +resources.jobs.*.tasks[*].pipeline_task.full_refresh_selection[*] string ALL resources.jobs.*.tasks[*].pipeline_task.pipeline_id string ALL +resources.jobs.*.tasks[*].pipeline_task.refresh_flow_selection []string ALL +resources.jobs.*.tasks[*].pipeline_task.refresh_flow_selection[*] string ALL +resources.jobs.*.tasks[*].pipeline_task.refresh_selection []string ALL +resources.jobs.*.tasks[*].pipeline_task.refresh_selection[*] string ALL +resources.jobs.*.tasks[*].pipeline_task.reset_checkpoint_selection []string ALL +resources.jobs.*.tasks[*].pipeline_task.reset_checkpoint_selection[*] string ALL resources.jobs.*.tasks[*].power_bi_task *jobs.PowerBiTask ALL resources.jobs.*.tasks[*].power_bi_task.connection_resource_name string ALL resources.jobs.*.tasks[*].power_bi_task.power_bi_model *jobs.PowerBiModel ALL @@ -1510,6 +1540,12 @@ resources.jobs.*.tasks[*].power_bi_task.tables[*].name string ALL resources.jobs.*.tasks[*].power_bi_task.tables[*].schema string ALL resources.jobs.*.tasks[*].power_bi_task.tables[*].storage_mode jobs.StorageMode ALL resources.jobs.*.tasks[*].power_bi_task.warehouse_id string ALL +resources.jobs.*.tasks[*].python_operator_task *jobs.PythonOperatorTask ALL +resources.jobs.*.tasks[*].python_operator_task.main string ALL +resources.jobs.*.tasks[*].python_operator_task.parameters []jobs.PythonOperatorTaskParameter ALL +resources.jobs.*.tasks[*].python_operator_task.parameters[*] jobs.PythonOperatorTaskParameter ALL +resources.jobs.*.tasks[*].python_operator_task.parameters[*].name string ALL +resources.jobs.*.tasks[*].python_operator_task.parameters[*].value string ALL resources.jobs.*.tasks[*].python_wheel_task *jobs.PythonWheelTask ALL resources.jobs.*.tasks[*].python_wheel_task.entry_point string ALL resources.jobs.*.tasks[*].python_wheel_task.named_parameters map[string]string ALL @@ -1531,6 +1567,14 @@ resources.jobs.*.tasks[*].run_job_task.notebook_params map[string]string ALL resources.jobs.*.tasks[*].run_job_task.notebook_params.* string ALL resources.jobs.*.tasks[*].run_job_task.pipeline_params *jobs.PipelineParams ALL resources.jobs.*.tasks[*].run_job_task.pipeline_params.full_refresh bool ALL +resources.jobs.*.tasks[*].run_job_task.pipeline_params.full_refresh_selection []string ALL +resources.jobs.*.tasks[*].run_job_task.pipeline_params.full_refresh_selection[*] string ALL +resources.jobs.*.tasks[*].run_job_task.pipeline_params.refresh_flow_selection []string ALL +resources.jobs.*.tasks[*].run_job_task.pipeline_params.refresh_flow_selection[*] string ALL +resources.jobs.*.tasks[*].run_job_task.pipeline_params.refresh_selection []string ALL +resources.jobs.*.tasks[*].run_job_task.pipeline_params.refresh_selection[*] string ALL +resources.jobs.*.tasks[*].run_job_task.pipeline_params.reset_checkpoint_selection []string ALL +resources.jobs.*.tasks[*].run_job_task.pipeline_params.reset_checkpoint_selection[*] string ALL resources.jobs.*.tasks[*].run_job_task.python_named_params map[string]string ALL resources.jobs.*.tasks[*].run_job_task.python_named_params.* string ALL resources.jobs.*.tasks[*].run_job_task.python_params []string ALL @@ -2367,6 +2411,30 @@ resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.g resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.jira_options *pipelines.JiraConnectorOptions ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.jira_options.include_jira_spaces []string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.jira_options.include_jira_spaces[*] string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options *pipelines.KafkaOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.client_config map[string]string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.client_config.* string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer *pipelines.Transformer ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options *pipelines.JsonTransformerOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.as_variant bool ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema_file_path string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema_hints string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.max_offsets_per_trigger int64 ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.starting_offset string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.topic_pattern string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.topics []string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.topics[*] string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer *pipelines.Transformer ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options *pipelines.JsonTransformerOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.as_variant bool ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema_file_path string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema_hints string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.meta_ads_options *pipelines.MetaMarketingOptions ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.meta_ads_options.action_attribution_windows []string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.meta_ads_options.action_attribution_windows[*] string ALL @@ -2495,6 +2563,30 @@ resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.go resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.jira_options *pipelines.JiraConnectorOptions ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.jira_options.include_jira_spaces []string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.jira_options.include_jira_spaces[*] string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options *pipelines.KafkaOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.client_config map[string]string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.client_config.* string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer *pipelines.Transformer ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options *pipelines.JsonTransformerOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.as_variant bool ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema_file_path string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema_hints string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.max_offsets_per_trigger int64 ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.starting_offset string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.topic_pattern string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.topics []string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.topics[*] string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer *pipelines.Transformer ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options *pipelines.JsonTransformerOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.as_variant bool ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema_file_path string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema_hints string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.meta_ads_options *pipelines.MetaMarketingOptions ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.meta_ads_options.action_attribution_windows []string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.meta_ads_options.action_attribution_windows[*] string ALL diff --git a/acceptance/cmd/account/account-help/output.txt b/acceptance/cmd/account/account-help/output.txt index f3e883750f6..1687f96d466 100644 --- a/acceptance/cmd/account/account-help/output.txt +++ b/acceptance/cmd/account/account-help/output.txt @@ -32,7 +32,7 @@ Settings Provisioning credentials These APIs manage credential configurations for this workspace. encryption-keys These APIs manage encryption key configurations for this workspace (optional). - endpoints *Beta* These APIs manage endpoint configurations for this account. + endpoints *Public Preview* These APIs manage endpoint configurations for this account. networks These APIs manage network configurations for customer-managed VPCs (optional). private-access These APIs manage private access settings for this account. storage These APIs manage storage configurations for this workspace. diff --git a/acceptance/help/output.txt b/acceptance/help/output.txt index af62067b5c6..453ec28b84b 100644 --- a/acceptance/help/output.txt +++ b/acceptance/help/output.txt @@ -36,7 +36,7 @@ Apps apps Apps run directly on a customer's Databricks instance, integrate with their data, use and extend Databricks services, and enable users to interact through single sign-on. Vector Search - vector-search-endpoints **Endpoint**: Represents the compute resources to host vector search indexes. + vector-search-endpoints **Endpoint**: Represents the compute resources to host AI Search indexes. vector-search-indexes **Index**: An efficient representation of your embedding vectors that supports real-time and efficient approximate nearest neighbor (ANN) search queries. Identity and Access Management @@ -92,6 +92,7 @@ Unity Catalog tables A table resides in the third layer of Unity Catalog’s three-level namespace. temporary-path-credentials *Public Preview* Temporary Path Credentials refer to short-lived, downscoped credentials used to access external cloud storage locations registered in Databricks. temporary-table-credentials *Public Preview* Temporary Table Credentials refer to short-lived, downscoped credentials used to access cloud storage locations where table data is stored in Databricks. + temporary-volume-credentials *Public Preview* Temporary Volume Credentials refer to short-lived, downscoped credentials used to access cloud storage locations where volume data is stored in Databricks. volumes Volumes are a Unity Catalog (UC) capability for accessing, storing, governing, organizing and processing files. workspace-bindings A securable in Databricks can be configured as __OPEN__ or __ISOLATED__. diff --git a/bundle/direct/dresources/resources.generated.yml b/bundle/direct/dresources/resources.generated.yml index 85c15d6f343..bd8a951a6a9 100644 --- a/bundle/direct/dresources/resources.generated.yml +++ b/bundle/direct/dresources/resources.generated.yml @@ -27,6 +27,11 @@ resources: apps: ignore_remote_changes: + - field: git_source + reason: spec:input_only + - field: source_code_path + reason: spec:input_only + - field: active_deployment reason: spec:output_only - field: app_status diff --git a/bundle/docsgen/output/reference.md b/bundle/docsgen/output/reference.md index 9d41a86792d..04af1d9a120 100644 --- a/bundle/docsgen/output/reference.md +++ b/bundle/docsgen/output/reference.md @@ -1,7 +1,7 @@ --- description: 'Configuration reference for databricks.yml' last_update: - date: 2026-05-11 + date: 2026-05-19 --- diff --git a/bundle/docsgen/output/resources.md b/bundle/docsgen/output/resources.md index 392e574dcd3..36a1ec09745 100644 --- a/bundle/docsgen/output/resources.md +++ b/bundle/docsgen/output/resources.md @@ -1,7 +1,7 @@ --- description: 'Learn about resources supported by Declarative Automation Bundles and how to configure them.' last_update: - date: 2026-05-11 + date: 2026-05-19 --- @@ -544,9 +544,9 @@ apps: - String - The description of the app. -- - `git_source` +- - `git_repository` - Map - - Git source configuration for app deployments. Specifies which git reference (branch, tag, or commit) to use when deploying the app. Used in conjunction with git_repository to deploy code directly from git. The source_code_path within git_source specifies the relative path to the app code within the repository. See [\_](#appsnamegit_source). + - Git repository configuration for app deployments. When specified, deployments can reference code from this repository by providing only the git reference (branch, tag, or commit). See [\_](#appsnamegit_repository). - - `lifecycle` - Map @@ -564,18 +564,10 @@ apps: - Sequence - Resources for the app. See [\_](#appsnameresources). -- - `source_code_path` - - String - - - - - `telemetry_export_destinations` - Sequence - See [\_](#appsnametelemetry_export_destinations). -- - `thumbnail_url` - - String - - - - - `usage_policy_id` - String - @@ -641,13 +633,12 @@ apps: ::: -### apps._name_.git_source +### apps._name_.git_repository **`Type: Map`** -Git source configuration for app deployments. Specifies which git reference (branch, tag, or commit) -to use when deploying the app. Used in conjunction with git_repository to deploy code directly from git. -The source_code_path within git_source specifies the relative path to the app code within the repository. +Git repository configuration for app deployments. When specified, deployments can +reference code from this repository by providing only the git reference (branch, tag, or commit). @@ -657,21 +648,13 @@ The source_code_path within git_source specifies the relative path to the app co - Type - Description -- - `branch` - - String - - Git branch to checkout. - -- - `commit` - - String - - Git commit SHA to checkout. - -- - `source_code_path` +- - `provider` - String - - Relative path to the app source code within the Git repository. If not specified, the root of the repository is used. + - Git provider. Case insensitive. Supported values: gitHub, gitHubEnterprise, bitbucketCloud, bitbucketServer, azureDevOpsServices, gitLab, gitLabEnterpriseEdition, awsCodeCommit. -- - `tag` +- - `url` - String - - Git tag to checkout. + - URL of the Git repository. ::: @@ -1154,6 +1137,10 @@ catalogs: - Map - See [\_](#catalogsnamelifecycle). +- - `managed_encryption_settings` + - Map + - Control CMK encryption for managed catalog data. See [\_](#catalogsnamemanaged_encryption_settings). + - - `name` - String - @@ -1234,6 +1221,64 @@ The privileges assigned to the principal. ::: +### catalogs._name_.managed_encryption_settings + +**`Type: Map`** + +Control CMK encryption for managed catalog data + + + +:::list-table + +- - Key + - Type + - Description + +- - `azure_encryption_settings` + - Map + - optional Azure settings - only required if an Azure CMK is used. See [\_](#catalogsnamemanaged_encryption_settingsazure_encryption_settings). + +- - `azure_key_vault_key_id` + - String + - the AKV URL in Azure, null otherwise. + +- - `customer_managed_key_id` + - String + - the CMK uuid in AWS and GCP, null otherwise. + +::: + + +### catalogs._name_.managed_encryption_settings.azure_encryption_settings + +**`Type: Map`** + +optional Azure settings - only required if an Azure CMK is used. + + + +:::list-table + +- - Key + - Type + - Description + +- - `azure_cmk_access_connector_id` + - String + - + +- - `azure_cmk_managed_identity_id` + - String + - + +- - `azure_tenant_id` + - String + - + +::: + + ## clusters **`Type: Map`** @@ -1287,7 +1332,7 @@ clusters: - - `data_security_mode` - String - - Data security mode decides what data governance model to use when accessing data from a cluster. The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. The following modes can be used regardless of `kind`. * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. + - Data security mode decides what data governance model to use when accessing data from a cluster. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. The following modes are legacy aliases for the above modes: * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. - - `docker_image` - Map @@ -1790,10 +1835,6 @@ If not specified at cluster creation, a set of default values will be used. - Integer - Boot disk size in GB -- - `confidential_compute_type` - - String - - - - - `first_on_demand` - Integer - The first `first_on_demand` nodes of the cluster will be placed on on-demand instances. This value should be greater than 0, to make sure the cluster driver node is placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, `first_on_demand` nodes will be placed on on-demand instances and the remainder will be placed on `availability` instances. Note that this value does not affect cluster size and cannot currently be mutated over the lifetime of a cluster. @@ -3289,7 +3330,7 @@ For other serverless tasks, the task environment is required to be specified usi - - `spec` - Map - - The environment entity used to preserve serverless environment side panel, jobs' environment for non-notebook task, and DLT's environment for classic and serverless pipelines. In this minimal environment spec, only pip and java dependencies are supported. See [\_](#jobsnameenvironmentsspec). + - The environment entity used to preserve serverless environment side panel, jobs' environment for non-notebook task, and SDP's environment for classic and serverless pipelines. In this minimal environment spec, only pip and java dependencies are supported. See [\_](#jobsnameenvironmentsspec). ::: @@ -3298,7 +3339,7 @@ For other serverless tasks, the task environment is required to be specified usi **`Type: Map`** -The environment entity used to preserve serverless environment side panel, jobs' environment for non-notebook task, and DLT's environment for classic and serverless pipelines. +The environment entity used to preserve serverless environment side panel, jobs' environment for non-notebook task, and SDP's environment for classic and serverless pipelines. In this minimal environment spec, only pip and java dependencies are supported. @@ -3546,7 +3587,7 @@ If new_cluster, a description of a cluster that is created for each task. - - `data_security_mode` - String - - Data security mode decides what data governance model to use when accessing data from a cluster. The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. The following modes can be used regardless of `kind`. * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. + - Data security mode decides what data governance model to use when accessing data from a cluster. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. The following modes are legacy aliases for the above modes: * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. - - `docker_image` - Map @@ -4013,10 +4054,6 @@ If not specified at cluster creation, a set of default values will be used. - Integer - Boot disk size in GB -- - `confidential_compute_type` - - String - - - - - `first_on_demand` - Integer - The first `first_on_demand` nodes of the cluster will be placed on on-demand instances. This value should be greater than 0, to make sure the cluster driver node is placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, `first_on_demand` nodes will be placed on on-demand instances and the remainder will be placed on `availability` instances. Note that this value does not affect cluster size and cannot currently be mutated over the lifetime of a cluster. @@ -4544,6 +4581,10 @@ Read endpoints return only 100 tasks. If more than 100 tasks are available, you - Boolean - An option to disable auto optimization in serverless +- - `disabled` + - Boolean + - An optional flag to disable the task. If set to true, the task will not run even if it is part of a job. + - - `email_notifications` - Map - An optional set of email addresses that is notified when runs of this task begin or complete as well as when this task is deleted. The default behavior is to not send any emails. See [\_](#jobsnametasksemail_notifications). @@ -5241,7 +5282,7 @@ If new_cluster, a description of a new cluster that is created for each run. - - `data_security_mode` - String - - Data security mode decides what data governance model to use when accessing data from a cluster. The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. The following modes can be used regardless of `kind`. * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. + - Data security mode decides what data governance model to use when accessing data from a cluster. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. The following modes are legacy aliases for the above modes: * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. - - `docker_image` - Map @@ -5708,10 +5749,6 @@ If not specified at cluster creation, a set of default values will be used. - Integer - Boot disk size in GB -- - `confidential_compute_type` - - String - - - - - `first_on_demand` - Integer - The first `first_on_demand` nodes of the cluster will be placed on on-demand instances. This value should be greater than 0, to make sure the cluster driver node is placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, `first_on_demand` nodes will be placed on on-demand instances and the remainder will be placed on `availability` instances. Note that this value does not affect cluster size and cannot currently be mutated over the lifetime of a cluster. @@ -6084,7 +6121,7 @@ The task triggers a pipeline update when the `pipeline_task` field is present. O - - `full_refresh` - Boolean - - If true, triggers a full refresh on the delta live table. + - If true, triggers a full refresh on the spark declarative pipeline. - - `pipeline_id` - String @@ -6278,7 +6315,7 @@ Controls whether the pipeline should perform a full refresh - - `full_refresh` - Boolean - - If true, triggers a full refresh on the delta live table. + - If true, triggers a full refresh on the spark declarative pipeline. ::: @@ -7345,7 +7382,7 @@ The core config of the serving endpoint. - - `auto_capture_config` - Map - - Configuration for Inference Tables which automatically logs requests and responses to Unity Catalog. Note: this field is deprecated for creating new provisioned throughput endpoints, or updating existing provisioned throughput endpoints that never have inference table configured; in these cases please use AI Gateway to manage inference tables. See [\_](#model_serving_endpointsnameconfigauto_capture_config). + - This field is deprecated - - `served_entities` - Sequence @@ -7362,42 +7399,6 @@ The core config of the serving endpoint. ::: -### model_serving_endpoints._name_.config.auto_capture_config - -**`Type: Map`** - -Configuration for Inference Tables which automatically logs requests and responses to Unity Catalog. -Note: this field is deprecated for creating new provisioned throughput endpoints, -or updating existing provisioned throughput endpoints that never have inference table configured; -in these cases please use AI Gateway to manage inference tables. - - - -:::list-table - -- - Key - - Type - - Description - -- - `catalog_name` - - String - - The name of the catalog in Unity Catalog. NOTE: On update, you cannot change the catalog name if the inference table is already enabled. - -- - `enabled` - - Boolean - - Indicates whether the inference table is enabled. - -- - `schema_name` - - String - - The name of the schema in Unity Catalog. NOTE: On update, you cannot change the schema name if the inference table is already enabled. - -- - `table_name_prefix` - - String - - The prefix of the table in Unity Catalog. NOTE: On update, you cannot change the prefix name if the inference table is already enabled. - -::: - - ### model_serving_endpoints._name_.config.served_entities **`Type: Sequence`** @@ -8278,7 +8279,7 @@ pipelines: - - `channel` - String - - DLT Release Channel that specifies which version to use. + - SDP Release Channel that specifies which version to use. - - `clusters` - Sequence @@ -8797,10 +8798,6 @@ If not specified at cluster creation, a set of default values will be used. - Integer - Boot disk size in GB -- - `confidential_compute_type` - - String - - - - - `first_on_demand` - Integer - The first `first_on_demand` nodes of the cluster will be placed on on-demand instances. This value should be greater than 0, to make sure the cluster driver node is placed on an on-demand instance. If this value is greater than or equal to the current cluster size, all nodes will be placed on on-demand instances. If this value is less than the current cluster size, `first_on_demand` nodes will be placed on on-demand instances and the remainder will be placed on `availability` instances. Note that this value does not affect cluster size and cannot currently be mutated over the lifetime of a cluster. @@ -9148,6 +9145,10 @@ The configuration for a managed ingestion pipeline. These settings cannot be use - Map - (Optional) A window that specifies a set of time ranges for snapshot queries in CDC. See [\_](#pipelinesnameingestion_definitionfull_refresh_window). +- - `ingest_from_uc_foreign_catalog` + - Boolean + - Immutable. If set to true, the pipeline will ingest tables from the UC foreign catalogs directly without the need to specify a UC connection or ingestion gateway. The `source_catalog` fields in objects of IngestionConfig are interpreted as the UC foreign catalogs to ingest from. + - - `ingestion_gateway_id` - String - Identifier for the gateway that is used by this ingestion pipeline to communicate with the source database. This is used with CDC connectors to databases like SQL Server using a gateway pipeline (connector_type = CDC). Under certain conditions, this can be replaced with connection_name to change the connector to Combined Cdc Managed Ingestion Pipeline. @@ -9300,6 +9301,18 @@ Configuration settings to control the ingestion of tables. These settings overri - Sequence - The primary key of the table used to apply changes. +- - `query_based_connector_config` + - Map + - Configurations that are only applicable for query-based ingestion connectors. See [\_](#pipelinesnameingestion_definitionobjectsreporttable_configurationquery_based_connector_config). + +- - `row_filter` + - String + - (Optional, Immutable) The row filter condition to be applied to the table. It must not contain the WHERE keyword, only the actual filter condition. It must be in DBSQL format. + +- - `scd_type` + - String + - The SCD type to use to ingest the table. + - - `sequence_by` - Sequence - The column names specifying the logical order of events in the source data. Spark Declarative Pipelines uses this sequencing to handle change events that arrive out of order. @@ -9342,6 +9355,35 @@ If unspecified, auto full refresh is disabled. ::: +### pipelines._name_.ingestion_definition.objects.report.table_configuration.query_based_connector_config + +**`Type: Map`** + +Configurations that are only applicable for query-based ingestion connectors. + + + +:::list-table + +- - Key + - Type + - Description + +- - `cursor_columns` + - Sequence + - The names of the monotonically increasing columns in the source table that are used to enable the table to be read and ingested incrementally through structured streaming. The columns are allowed to have repeated values but have to be non-decreasing. If the source data is merged into the destination (e.g., using SCD Type 1 or Type 2), these columns will implicitly define the `sequence_by` behavior. You can still explicitly set `sequence_by` to override this default. + +- - `deletion_condition` + - String + - Specifies a SQL WHERE condition that specifies that the source row has been deleted. This is sometimes referred to as "soft-deletes". For example: "Operation = 'DELETE'" or "is_deleted = true". This field is orthogonal to `hard_deletion_sync_interval_in_seconds`, one for soft-deletes and the other for hard-deletes. See also the hard_deletion_sync_min_interval_in_seconds field for handling of "hard deletes" where the source rows are physically removed from the table. + +- - `hard_deletion_sync_min_interval_in_seconds` + - Integer + - Specifies the minimum interval (in seconds) between snapshots on primary keys for detecting and synchronizing hard deletions—i.e., rows that have been physically removed from the source table. This interval acts as a lower bound. If ingestion runs less frequently than this value, hard deletion synchronization will align with the actual ingestion frequency instead of happening more often. If not set, hard deletion synchronization via snapshots is disabled. This field is mutable and can be updated without triggering a full snapshot. + +::: + + ### pipelines._name_.ingestion_definition.objects.schema **`Type: Map`** @@ -9356,6 +9398,10 @@ Select all tables from a specific source schema. - Type - Description +- - `connector_options` + - Map + - (Optional) Source Specific Connector Options. See [\_](#pipelinesnameingestion_definitionobjectsschemaconnector_options). + - - `destination_catalog` - String - Required. Destination catalog to store tables. @@ -9379,6 +9425,126 @@ Select all tables from a specific source schema. ::: +### pipelines._name_.ingestion_definition.objects.schema.connector_options + +**`Type: Map`** + +(Optional) Source Specific Connector Options + + + +:::list-table + +- - Key + - Type + - Description + +- - `confluence_options` + - Map + - Confluence specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectsschemaconnector_optionsconfluence_options). + +- - `jira_options` + - Map + - Jira specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectsschemaconnector_optionsjira_options). + +- - `meta_ads_options` + - Map + - Meta Marketing (Meta Ads) specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectsschemaconnector_optionsmeta_ads_options). + +::: + + +### pipelines._name_.ingestion_definition.objects.schema.connector_options.confluence_options + +**`Type: Map`** + +Confluence specific options for ingestion + + + +:::list-table + +- - Key + - Type + - Description + +- - `include_confluence_spaces` + - Sequence + - (Optional) Spaces to filter Confluence data on + +::: + + +### pipelines._name_.ingestion_definition.objects.schema.connector_options.jira_options + +**`Type: Map`** + +Jira specific options for ingestion + + + +:::list-table + +- - Key + - Type + - Description + +- - `include_jira_spaces` + - Sequence + - (Optional) Projects to filter Jira data on + +::: + + +### pipelines._name_.ingestion_definition.objects.schema.connector_options.meta_ads_options + +**`Type: Map`** + +Meta Marketing (Meta Ads) specific options for ingestion + + + +:::list-table + +- - Key + - Type + - Description + +- - `action_attribution_windows` + - Sequence + - (Optional) Action attribution windows for insights reporting (e.g. "28d_click", "1d_view") + +- - `action_breakdowns` + - Sequence + - (Optional) Action breakdowns to configure for data aggregation + +- - `action_report_time` + - String + - (Optional) Timing used to report action statistics (impression, conversion, mixed, or lifetime) + +- - `breakdowns` + - Sequence + - (Optional) Breakdowns to configure for data aggregation + +- - `custom_insights_lookback_window` + - Integer + - (Optional) Window in days to revisit data during sync to capture updated conversion data from the API. + +- - `level` + - String + - (Optional) Granularity of data to pull (account, ad, adset, campaign) + +- - `start_date` + - String + - (Optional) Start date in yyyy-MM-dd format (e.g. 2025-01-15). Data added after this date will be ingested + +- - `time_increment` + - String + - (Optional) Value in string by which to aggregate statistics (can take all_days, monthly or number of days) + +::: + + ### pipelines._name_.ingestion_definition.objects.schema.table_configuration **`Type: Map`** @@ -9409,6 +9575,18 @@ Configuration settings to control the ingestion of tables. These settings are ap - Sequence - The primary key of the table used to apply changes. +- - `query_based_connector_config` + - Map + - Configurations that are only applicable for query-based ingestion connectors. See [\_](#pipelinesnameingestion_definitionobjectsschematable_configurationquery_based_connector_config). + +- - `row_filter` + - String + - (Optional, Immutable) The row filter condition to be applied to the table. It must not contain the WHERE keyword, only the actual filter condition. It must be in DBSQL format. + +- - `scd_type` + - String + - The SCD type to use to ingest the table. + - - `sequence_by` - Sequence - The column names specifying the logical order of events in the source data. Spark Declarative Pipelines uses this sequencing to handle change events that arrive out of order. @@ -9451,6 +9629,35 @@ If unspecified, auto full refresh is disabled. ::: +### pipelines._name_.ingestion_definition.objects.schema.table_configuration.query_based_connector_config + +**`Type: Map`** + +Configurations that are only applicable for query-based ingestion connectors. + + + +:::list-table + +- - Key + - Type + - Description + +- - `cursor_columns` + - Sequence + - The names of the monotonically increasing columns in the source table that are used to enable the table to be read and ingested incrementally through structured streaming. The columns are allowed to have repeated values but have to be non-decreasing. If the source data is merged into the destination (e.g., using SCD Type 1 or Type 2), these columns will implicitly define the `sequence_by` behavior. You can still explicitly set `sequence_by` to override this default. + +- - `deletion_condition` + - String + - Specifies a SQL WHERE condition that specifies that the source row has been deleted. This is sometimes referred to as "soft-deletes". For example: "Operation = 'DELETE'" or "is_deleted = true". This field is orthogonal to `hard_deletion_sync_interval_in_seconds`, one for soft-deletes and the other for hard-deletes. See also the hard_deletion_sync_min_interval_in_seconds field for handling of "hard deletes" where the source rows are physically removed from the table. + +- - `hard_deletion_sync_min_interval_in_seconds` + - Integer + - Specifies the minimum interval (in seconds) between snapshots on primary keys for detecting and synchronizing hard deletions—i.e., rows that have been physically removed from the source table. This interval acts as a lower bound. If ingestion runs less frequently than this value, hard deletion synchronization will align with the actual ingestion frequency instead of happening more often. If not set, hard deletion synchronization via snapshots is disabled. This field is mutable and can be updated without triggering a full snapshot. + +::: + + ### pipelines._name_.ingestion_definition.objects.table **`Type: Map`** @@ -9465,6 +9672,10 @@ Select a specific source table. - Type - Description +- - `connector_options` + - Map + - (Optional) Source Specific Connector Options. See [\_](#pipelinesnameingestion_definitionobjectstableconnector_options). + - - `destination_catalog` - String - Required. Destination catalog to store table. @@ -9496,6 +9707,126 @@ Select a specific source table. ::: +### pipelines._name_.ingestion_definition.objects.table.connector_options + +**`Type: Map`** + +(Optional) Source Specific Connector Options + + + +:::list-table + +- - Key + - Type + - Description + +- - `confluence_options` + - Map + - Confluence specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectstableconnector_optionsconfluence_options). + +- - `jira_options` + - Map + - Jira specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectstableconnector_optionsjira_options). + +- - `meta_ads_options` + - Map + - Meta Marketing (Meta Ads) specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectstableconnector_optionsmeta_ads_options). + +::: + + +### pipelines._name_.ingestion_definition.objects.table.connector_options.confluence_options + +**`Type: Map`** + +Confluence specific options for ingestion + + + +:::list-table + +- - Key + - Type + - Description + +- - `include_confluence_spaces` + - Sequence + - (Optional) Spaces to filter Confluence data on + +::: + + +### pipelines._name_.ingestion_definition.objects.table.connector_options.jira_options + +**`Type: Map`** + +Jira specific options for ingestion + + + +:::list-table + +- - Key + - Type + - Description + +- - `include_jira_spaces` + - Sequence + - (Optional) Projects to filter Jira data on + +::: + + +### pipelines._name_.ingestion_definition.objects.table.connector_options.meta_ads_options + +**`Type: Map`** + +Meta Marketing (Meta Ads) specific options for ingestion + + + +:::list-table + +- - Key + - Type + - Description + +- - `action_attribution_windows` + - Sequence + - (Optional) Action attribution windows for insights reporting (e.g. "28d_click", "1d_view") + +- - `action_breakdowns` + - Sequence + - (Optional) Action breakdowns to configure for data aggregation + +- - `action_report_time` + - String + - (Optional) Timing used to report action statistics (impression, conversion, mixed, or lifetime) + +- - `breakdowns` + - Sequence + - (Optional) Breakdowns to configure for data aggregation + +- - `custom_insights_lookback_window` + - Integer + - (Optional) Window in days to revisit data during sync to capture updated conversion data from the API. + +- - `level` + - String + - (Optional) Granularity of data to pull (account, ad, adset, campaign) + +- - `start_date` + - String + - (Optional) Start date in yyyy-MM-dd format (e.g. 2025-01-15). Data added after this date will be ingested + +- - `time_increment` + - String + - (Optional) Value in string by which to aggregate statistics (can take all_days, monthly or number of days) + +::: + + ### pipelines._name_.ingestion_definition.objects.table.table_configuration **`Type: Map`** @@ -9526,6 +9857,18 @@ Configuration settings to control the ingestion of tables. These settings overri - Sequence - The primary key of the table used to apply changes. +- - `query_based_connector_config` + - Map + - Configurations that are only applicable for query-based ingestion connectors. See [\_](#pipelinesnameingestion_definitionobjectstabletable_configurationquery_based_connector_config). + +- - `row_filter` + - String + - (Optional, Immutable) The row filter condition to be applied to the table. It must not contain the WHERE keyword, only the actual filter condition. It must be in DBSQL format. + +- - `scd_type` + - String + - The SCD type to use to ingest the table. + - - `sequence_by` - Sequence - The column names specifying the logical order of events in the source data. Spark Declarative Pipelines uses this sequencing to handle change events that arrive out of order. @@ -9568,6 +9911,35 @@ If unspecified, auto full refresh is disabled. ::: +### pipelines._name_.ingestion_definition.objects.table.table_configuration.query_based_connector_config + +**`Type: Map`** + +Configurations that are only applicable for query-based ingestion connectors. + + + +:::list-table + +- - Key + - Type + - Description + +- - `cursor_columns` + - Sequence + - The names of the monotonically increasing columns in the source table that are used to enable the table to be read and ingested incrementally through structured streaming. The columns are allowed to have repeated values but have to be non-decreasing. If the source data is merged into the destination (e.g., using SCD Type 1 or Type 2), these columns will implicitly define the `sequence_by` behavior. You can still explicitly set `sequence_by` to override this default. + +- - `deletion_condition` + - String + - Specifies a SQL WHERE condition that specifies that the source row has been deleted. This is sometimes referred to as "soft-deletes". For example: "Operation = 'DELETE'" or "is_deleted = true". This field is orthogonal to `hard_deletion_sync_interval_in_seconds`, one for soft-deletes and the other for hard-deletes. See also the hard_deletion_sync_min_interval_in_seconds field for handling of "hard deletes" where the source rows are physically removed from the table. + +- - `hard_deletion_sync_min_interval_in_seconds` + - Integer + - Specifies the minimum interval (in seconds) between snapshots on primary keys for detecting and synchronizing hard deletions—i.e., rows that have been physically removed from the source table. This interval acts as a lower bound. If ingestion runs less frequently than this value, hard deletion synchronization will align with the actual ingestion frequency instead of happening more often. If not set, hard deletion synchronization via snapshots is disabled. This field is mutable and can be updated without triggering a full snapshot. + +::: + + ### pipelines._name_.ingestion_definition.source_configurations **`Type: Sequence`** @@ -9586,10 +9958,6 @@ Top-level source configurations - Map - Catalog-level source configuration parameters. See [\_](#pipelinesnameingestion_definitionsource_configurationscatalog). -- - `google_ads_config` - - Map - - See [\_](#pipelinesnameingestion_definitionsource_configurationsgoogle_ads_config). - ::: @@ -9694,6 +10062,18 @@ Configuration settings to control the ingestion of tables. These settings are ap - Sequence - The primary key of the table used to apply changes. +- - `query_based_connector_config` + - Map + - Configurations that are only applicable for query-based ingestion connectors. See [\_](#pipelinesnameingestion_definitiontable_configurationquery_based_connector_config). + +- - `row_filter` + - String + - (Optional, Immutable) The row filter condition to be applied to the table. It must not contain the WHERE keyword, only the actual filter condition. It must be in DBSQL format. + +- - `scd_type` + - String + - The SCD type to use to ingest the table. + - - `sequence_by` - Sequence - The column names specifying the logical order of events in the source data. Spark Declarative Pipelines uses this sequencing to handle change events that arrive out of order. @@ -9736,6 +10116,35 @@ If unspecified, auto full refresh is disabled. ::: +### pipelines._name_.ingestion_definition.table_configuration.query_based_connector_config + +**`Type: Map`** + +Configurations that are only applicable for query-based ingestion connectors. + + + +:::list-table + +- - Key + - Type + - Description + +- - `cursor_columns` + - Sequence + - The names of the monotonically increasing columns in the source table that are used to enable the table to be read and ingested incrementally through structured streaming. The columns are allowed to have repeated values but have to be non-decreasing. If the source data is merged into the destination (e.g., using SCD Type 1 or Type 2), these columns will implicitly define the `sequence_by` behavior. You can still explicitly set `sequence_by` to override this default. + +- - `deletion_condition` + - String + - Specifies a SQL WHERE condition that specifies that the source row has been deleted. This is sometimes referred to as "soft-deletes". For example: "Operation = 'DELETE'" or "is_deleted = true". This field is orthogonal to `hard_deletion_sync_interval_in_seconds`, one for soft-deletes and the other for hard-deletes. See also the hard_deletion_sync_min_interval_in_seconds field for handling of "hard deletes" where the source rows are physically removed from the table. + +- - `hard_deletion_sync_min_interval_in_seconds` + - Integer + - Specifies the minimum interval (in seconds) between snapshots on primary keys for detecting and synchronizing hard deletions—i.e., rows that have been physically removed from the source table. This interval acts as a lower bound. If ingestion runs less frequently than this value, hard deletion synchronization will align with the actual ingestion frequency instead of happening more often. If not set, hard deletion synchronization via snapshots is disabled. This field is mutable and can be updated without triggering a full snapshot. + +::: + + ### pipelines._name_.libraries **`Type: Sequence`** @@ -10275,7 +10684,7 @@ A collection of settings for a compute endpoint. - - `no_suspension` - Boolean - - When set to true, explicitly disables automatic suspension (never suspend). Should be set to true when provided. + - When set to true, explicitly disables automatic suspension (never suspend). Should be set to true when provided. Mutually exclusive with `suspend_timeout_duration`. When updating, use `spec.project_default_settings.suspension` in the update_mask. - - `pg_settings` - Map @@ -10283,7 +10692,7 @@ A collection of settings for a compute endpoint. - - `suspend_timeout_duration` - String - - Duration of inactivity after which the compute endpoint is automatically suspended. If specified should be between 60s and 604800s (1 minute to 1 week). + - Duration of inactivity after which the compute endpoint is automatically suspended. If specified should be between 60s and 604800s (1 minute to 1 week). Mutually exclusive with `no_suspension`. When updating, use `spec.project_default_settings.suspension` in the update_mask. ::: diff --git a/bundle/internal/schema/annotations_openapi.yml b/bundle/internal/schema/annotations_openapi.yml index 23c5770dcc0..d16dff0af76 100644 --- a/bundle/internal/schema/annotations_openapi.yml +++ b/bundle/internal/schema/annotations_openapi.yml @@ -115,6 +115,11 @@ github.com/databricks/cli/bundle/config/resources.App: "description": |- Git repository configuration for app deployments. When specified, deployments can reference code from this repository by providing only the git reference (branch, tag, or commit). + "git_source": + "description": |- + Complete git source specification including repository location and reference. + "x-databricks-preview": |- + PRIVATE "id": "description": |- The unique identifier of the app. @@ -148,6 +153,9 @@ github.com/databricks/cli/bundle/config/resources.App: "service_principal_name": "x-databricks-field-behaviors_output_only": |- true + "source_code_path": + "x-databricks-preview": |- + PRIVATE "space": "description": |- Name of the space this app belongs to. @@ -256,15 +264,14 @@ github.com/databricks/cli/bundle/config/resources.Cluster: Data security mode decides what data governance model to use when accessing data from a cluster. - The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. - * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. - * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. + * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. + * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. + + The following modes are legacy aliases for the above modes: - The following modes can be used regardless of `kind`. - * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. - * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. - * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. + * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. + * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: @@ -325,7 +332,6 @@ github.com/databricks/cli/bundle/config/resources.Cluster: Clusters with `kind = CLASSIC_PREVIEW` support the following fields, whereas clusters with no specified `kind` do not. * [is_single_node](/api/workspace/clusters/create#is_single_node) * [use_ml_runtime](/api/workspace/clusters/create#use_ml_runtime) - * [data_security_mode](/api/workspace/clusters/create#data_security_mode) set to `DATA_SECURITY_MODE_AUTO`, `DATA_SECURITY_MODE_DEDICATED`, or `DATA_SECURITY_MODE_STANDARD` By using the [simple form](https://docs.databricks.com/compute/simple-form.html), your clusters are automatically using `kind = CLASSIC_PREVIEW`. "node_type_id": @@ -1139,7 +1145,7 @@ github.com/databricks/cli/bundle/config/resources.VectorSearchEndpoint: Type of endpoint "name": "description": |- - Name of the vector search endpoint + Name of the AI Search endpoint "target_qps": "description": |- Target QPS for the endpoint. Mutually exclusive with num_replicas. @@ -1905,6 +1911,10 @@ github.com/databricks/databricks-sdk-go/service/catalog.Privilege: MANAGE_ACCESS_CONTROL - |- CREATE_SERVICE + - |- + CREATE_FEATURE + - |- + READ_FEATURE github.com/databricks/databricks-sdk-go/service/catalog.PrivilegeAssignment: "principal": "description": |- @@ -2192,15 +2202,14 @@ github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec: Data security mode decides what data governance model to use when accessing data from a cluster. - The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. - * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. - * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. + * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. + * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. - The following modes can be used regardless of `kind`. - * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. - * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. - * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. + The following modes are legacy aliases for the above modes: + + * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. + * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: @@ -2261,7 +2270,6 @@ github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec: Clusters with `kind = CLASSIC_PREVIEW` support the following fields, whereas clusters with no specified `kind` do not. * [is_single_node](/api/workspace/clusters/create#is_single_node) * [use_ml_runtime](/api/workspace/clusters/create#use_ml_runtime) - * [data_security_mode](/api/workspace/clusters/create#data_security_mode) set to `DATA_SECURITY_MODE_AUTO`, `DATA_SECURITY_MODE_DEDICATED`, or `DATA_SECURITY_MODE_STANDARD` By using the [simple form](https://docs.databricks.com/compute/simple-form.html), your clusters are automatically using `kind = CLASSIC_PREVIEW`. "node_type_id": @@ -2358,15 +2366,14 @@ github.com/databricks/databricks-sdk-go/service/compute.DataSecurityMode: Data security mode decides what data governance model to use when accessing data from a cluster. - The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. - * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. - * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. + * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. + * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. + + The following modes are legacy aliases for the above modes: - The following modes can be used regardless of `kind`. - * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. - * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. - * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. + * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. + * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: @@ -2801,7 +2808,7 @@ github.com/databricks/databricks-sdk-go/service/database.DatabaseInstanceState: - |- FAILING_OVER - |- - MIGRATING + UPGRADING github.com/databricks/databricks-sdk-go/service/database.DeltaTableSyncInfo: "delta_commit_timestamp": "description": |- @@ -3755,13 +3762,55 @@ github.com/databricks/databricks-sdk-go/service/jobs.PipelineParams: "full_refresh": "description": |- If true, triggers a full refresh on the spark declarative pipeline. + "full_refresh_selection": + "description": |- + A list of tables to update with fullRefresh. + "x-databricks-preview": |- + PRIVATE + "refresh_flow_selection": + "description": |- + Flow names to selectively refresh. These are unioned with other selective refresh + options (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh. + "x-databricks-preview": |- + PRIVATE + "refresh_selection": + "description": |- + A list of tables to update without fullRefresh. + "x-databricks-preview": |- + PRIVATE + "reset_checkpoint_selection": + "description": |- + A list of streaming flows to reset checkpoints without clearing data. + "x-databricks-preview": |- + PRIVATE github.com/databricks/databricks-sdk-go/service/jobs.PipelineTask: "full_refresh": "description": |- If true, triggers a full refresh on the spark declarative pipeline. + "full_refresh_selection": + "description": |- + A list of tables to update with fullRefresh. + "x-databricks-preview": |- + PRIVATE "pipeline_id": "description": |- The full name of the pipeline task to execute. + "refresh_flow_selection": + "description": |- + Flow names to selectively refresh. These are unioned with other selective refresh + options (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh. + "x-databricks-preview": |- + PRIVATE + "refresh_selection": + "description": |- + A list of tables to update without fullRefresh. + "x-databricks-preview": |- + PRIVATE + "reset_checkpoint_selection": + "description": |- + A list of streaming flows to reset checkpoints without clearing data. + "x-databricks-preview": |- + PRIVATE github.com/databricks/databricks-sdk-go/service/jobs.PowerBiModel: "authentication_method": "description": |- @@ -3807,6 +3856,18 @@ github.com/databricks/databricks-sdk-go/service/jobs.PowerBiTask: "warehouse_id": "description": |- The SQL warehouse ID to use as the Power BI data source +github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTask: + "main": + "description": |- + Fully qualified name of the main class or function. + For example, `my_project.my_function` or `my_project.MyOperator`. + "parameters": + "description": |- + An ordered list of task parameters. + TODO(JOBS-30885): Add limits for parameters. +github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTaskParameter: + "name": {} + "value": {} github.com/databricks/databricks-sdk-go/service/jobs.PythonWheelTask: "entry_point": "description": |- @@ -4162,8 +4223,6 @@ github.com/databricks/databricks-sdk-go/service/jobs.Task: "disabled": "description": |- An optional flag to disable the task. If set to true, the task will not run even if it is part of a job. - "x-databricks-preview": |- - PRIVATE "email_notifications": "description": |- An optional set of email addresses that is notified when runs of this task begin or complete as well as when this task is deleted. The default behavior is to not send any emails. @@ -4213,6 +4272,11 @@ github.com/databricks/databricks-sdk-go/service/jobs.Task: "power_bi_task": "description": |- The task triggers a Power BI semantic model update when the `power_bi_task` field is present. + "python_operator_task": + "description": |- + The task runs a Python operator task. + "x-databricks-preview": |- + PRIVATE "python_wheel_task": "description": |- The task runs a Python wheel when the `python_wheel_task` field is present. @@ -4440,6 +4504,9 @@ github.com/databricks/databricks-sdk-go/service/pipelines.ConnectorOptions: "jira_options": "description": |- Jira specific options for ingestion + "kafka_options": + "x-databricks-preview": |- + PRIVATE "meta_ads_options": "description": |- Meta Marketing (Meta Ads) specific options for ingestion @@ -4599,6 +4666,8 @@ github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsFi AVRO - |- ORC + - |- + FILE github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsSchemaEvolutionMode: "_": "description": |- @@ -4668,6 +4737,10 @@ github.com/databricks/databricks-sdk-go/service/pipelines.GoogleDriveOptionsGoog FILE_METADATA - |- PERMISSION + - |- + FILE_PERMISSION + - |- + GROUP_MEMBERSHIP github.com/databricks/databricks-sdk-go/service/pipelines.IngestionConfig: "report": "description": |- @@ -5042,6 +5115,55 @@ github.com/databricks/databricks-sdk-go/service/pipelines.JiraConnectorOptions: "include_jira_spaces": "description": |- (Optional) Projects to filter Jira data on +github.com/databricks/databricks-sdk-go/service/pipelines.JsonTransformerOptions: + "as_variant": + "description": |- + Parse the entire value as a single Variant column. + "schema": + "description": |- + Inline schema string for JSON parsing (Spark DDL format). + "schema_evolution_mode": + "description": |- + (Optional) Schema evolution mode for schema inference. + "schema_file_path": + "description": |- + Path to a schema file (.ddl). + "schema_hints": + "description": |- + (Optional) Schema hints as a comma-separated string of "column_name type" pairs. +github.com/databricks/databricks-sdk-go/service/pipelines.KafkaOptions: + "client_config": + "description": |- + Undocumented backdoor mechanism for overriding parameters + to pass to the Kafka client. + This is not supported and may break at any time. + "x-databricks-preview": |- + PRIVATE + "key_transformer": + "description": |- + (Optional) Transformer for the message key. + If not specified, the key is left as raw bytes. + "max_offsets_per_trigger": + "description": |- + Internal option to control the maximum number of offsets to process per trigger. + "x-databricks-preview": |- + PRIVATE + "starting_offset": + "description": |- + (Optional) Where to begin reading when no checkpoint exists. + Valid values: "latest" and "earliest". Defaults to "latest". + "topic_pattern": + "description": |- + Java regex pattern to subscribe to matching topics. + Only one of topics or topic_pattern must be specified. + "topics": + "description": |- + Topics to subscribe to. + Only one of topics or topic_pattern must be specified. + "value_transformer": + "description": |- + (Optional) Transformer for the message value. + If not specified, the value is left as raw bytes. github.com/databricks/databricks-sdk-go/service/pipelines.ManualTrigger: {} github.com/databricks/databricks-sdk-go/service/pipelines.MetaMarketingOptions: "_": @@ -5488,6 +5610,10 @@ github.com/databricks/databricks-sdk-go/service/pipelines.SharepointOptionsShare PERMISSION - |- LIST + - |- + FILE_PERMISSION + - |- + GROUP_MEMBERSHIP github.com/databricks/databricks-sdk-go/service/pipelines.SmartsheetOptions: "_": "description": |- @@ -5674,6 +5800,25 @@ github.com/databricks/databricks-sdk-go/service/pipelines.TikTokAdsOptionsTikTok BUSINESS_CENTER - |- GMV_MAX +github.com/databricks/databricks-sdk-go/service/pipelines.Transformer: + "_": + "description": |- + Specifies how to transform binary data into structured data. + "format": + "description": |- + Required: the wire format of the data. + "json_options": {} +github.com/databricks/databricks-sdk-go/service/pipelines.TransformerFormat: + "_": + "enum": + - |- + STRING + - |- + JSON + - |- + AVRO + - |- + PROTOBUF github.com/databricks/databricks-sdk-go/service/pipelines.ZendeskSupportOptions: "_": "description": |- @@ -6365,6 +6510,8 @@ github.com/databricks/databricks-sdk-go/service/serving.ServedModelInputWorkload GPU_LARGE - |- MULTIGPU_MEDIUM + - |- + GPU_XLARGE github.com/databricks/databricks-sdk-go/service/serving.ServingEndpointPermissionLevel: "_": "description": |- @@ -6391,6 +6538,8 @@ github.com/databricks/databricks-sdk-go/service/serving.ServingModelWorkloadType GPU_LARGE - |- MULTIGPU_MEDIUM + - |- + GPU_XLARGE github.com/databricks/databricks-sdk-go/service/serving.TrafficConfig: "routes": "description": |- diff --git a/bundle/internal/schema/annotations_openapi_overrides.yml b/bundle/internal/schema/annotations_openapi_overrides.yml index ff08304f533..d93e6068f46 100644 --- a/bundle/internal/schema/annotations_openapi_overrides.yml +++ b/bundle/internal/schema/annotations_openapi_overrides.yml @@ -935,6 +935,13 @@ github.com/databricks/databricks-sdk-go/service/jobs.JobsHealthRules: "rules": "description": |- PLACEHOLDER +github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTaskParameter: + "name": + "description": |- + PLACEHOLDER + "value": + "description": |- + PLACEHOLDER github.com/databricks/databricks-sdk-go/service/jobs.RunJobTask: "python_named_params": "description": |- @@ -975,6 +982,9 @@ github.com/databricks/databricks-sdk-go/service/pipelines.ConnectorOptions: "gdrive_options": "description": |- PLACEHOLDER + "kafka_options": + "description": |- + PLACEHOLDER "sharepoint_options": "description": |- PLACEHOLDER @@ -1031,6 +1041,10 @@ github.com/databricks/databricks-sdk-go/service/pipelines.TableSpecificConfig: "workday_report_parameters": "description": |- PLACEHOLDER +github.com/databricks/databricks-sdk-go/service/pipelines.Transformer: + "json_options": + "description": |- + PLACEHOLDER github.com/databricks/databricks-sdk-go/service/serving.Route: "served_entity_name": "description": |- diff --git a/bundle/internal/validation/generated/enum_fields.go b/bundle/internal/validation/generated/enum_fields.go index 2f1593a890e..0a0b259b5c6 100644 --- a/bundle/internal/validation/generated/enum_fields.go +++ b/bundle/internal/validation/generated/enum_fields.go @@ -135,50 +135,58 @@ var EnumFields = map[string][]string{ "resources.model_serving_endpoints.*.ai_gateway.rate_limits[*].renewal_period": {"minute"}, "resources.model_serving_endpoints.*.config.served_entities[*].external_model.amazon_bedrock_config.bedrock_provider": {"ai21labs", "amazon", "anthropic", "cohere"}, "resources.model_serving_endpoints.*.config.served_entities[*].external_model.provider": {"ai21labs", "amazon-bedrock", "anthropic", "cohere", "custom", "databricks-model-serving", "google-cloud-vertex-ai", "openai", "palm"}, - "resources.model_serving_endpoints.*.config.served_entities[*].workload_type": {"CPU", "GPU_LARGE", "GPU_MEDIUM", "GPU_SMALL", "MULTIGPU_MEDIUM"}, - "resources.model_serving_endpoints.*.config.served_models[*].workload_type": {"CPU", "GPU_LARGE", "GPU_MEDIUM", "GPU_SMALL", "MULTIGPU_MEDIUM"}, + "resources.model_serving_endpoints.*.config.served_entities[*].workload_type": {"CPU", "GPU_LARGE", "GPU_MEDIUM", "GPU_SMALL", "GPU_XLARGE", "MULTIGPU_MEDIUM"}, + "resources.model_serving_endpoints.*.config.served_models[*].workload_type": {"CPU", "GPU_LARGE", "GPU_MEDIUM", "GPU_SMALL", "GPU_XLARGE", "MULTIGPU_MEDIUM"}, "resources.model_serving_endpoints.*.permissions[*].level": {"CAN_MANAGE", "CAN_QUERY", "CAN_VIEW"}, "resources.model_serving_endpoints.*.rate_limits[*].key": {"endpoint", "user"}, "resources.model_serving_endpoints.*.rate_limits[*].renewal_period": {"minute"}, "resources.models.*.permissions[*].level": {"CAN_EDIT", "CAN_MANAGE", "CAN_MANAGE_PRODUCTION_VERSIONS", "CAN_MANAGE_STAGING_VERSIONS", "CAN_READ"}, - "resources.pipelines.*.clusters[*].autoscale.mode": {"ENHANCED", "LEGACY"}, - "resources.pipelines.*.clusters[*].aws_attributes.availability": {"ON_DEMAND", "SPOT", "SPOT_WITH_FALLBACK"}, - "resources.pipelines.*.clusters[*].aws_attributes.ebs_volume_type": {"GENERAL_PURPOSE_SSD", "THROUGHPUT_OPTIMIZED_HDD"}, - "resources.pipelines.*.clusters[*].azure_attributes.availability": {"ON_DEMAND_AZURE", "SPOT_AZURE", "SPOT_WITH_FALLBACK_AZURE"}, - "resources.pipelines.*.clusters[*].gcp_attributes.availability": {"ON_DEMAND_GCP", "PREEMPTIBLE_GCP", "PREEMPTIBLE_WITH_FALLBACK_GCP"}, - "resources.pipelines.*.clusters[*].gcp_attributes.confidential_compute_type": {"CONFIDENTIAL_COMPUTE_TYPE_NONE", "SEV_SNP"}, - "resources.pipelines.*.deployment.kind": {"BUNDLE"}, - "resources.pipelines.*.ingestion_definition.connector_type": {"CDC", "QUERY_BASED"}, - "resources.pipelines.*.ingestion_definition.full_refresh_window.days_of_week[*]": {"FRIDAY", "MONDAY", "SATURDAY", "SUNDAY", "THURSDAY", "TUESDAY", "WEDNESDAY"}, - "resources.pipelines.*.ingestion_definition.objects[*].report.table_configuration.scd_type": {"APPEND_ONLY", "SCD_TYPE_1", "SCD_TYPE_2"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.gdrive_options.entity_type": {"FILE", "FILE_METADATA", "PERMISSION"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.gdrive_options.file_ingestion_options.format": {"AVRO", "BINARYFILE", "CSV", "EXCEL", "JSON", "ORC", "PARQUET", "XML"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.gdrive_options.file_ingestion_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.outlook_options.attachment_mode": {"ALL", "INLINE_ONLY", "NONE", "NON_INLINE_ONLY"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.outlook_options.body_format": {"TEXT_HTML", "TEXT_PLAIN"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.sharepoint_options.entity_type": {"FILE", "FILE_METADATA", "LIST", "PERMISSION"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.sharepoint_options.file_ingestion_options.format": {"AVRO", "BINARYFILE", "CSV", "EXCEL", "JSON", "ORC", "PARQUET", "XML"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.sharepoint_options.file_ingestion_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.tiktok_ads_options.data_level": {"AUCTION_AD", "AUCTION_ADGROUP", "AUCTION_ADVERTISER", "AUCTION_CAMPAIGN"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.tiktok_ads_options.report_type": {"AUDIENCE", "BASIC", "BUSINESS_CENTER", "DSA", "GMV_MAX", "PLAYABLE_AD"}, - "resources.pipelines.*.ingestion_definition.objects[*].schema.table_configuration.scd_type": {"APPEND_ONLY", "SCD_TYPE_1", "SCD_TYPE_2"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.gdrive_options.entity_type": {"FILE", "FILE_METADATA", "PERMISSION"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.gdrive_options.file_ingestion_options.format": {"AVRO", "BINARYFILE", "CSV", "EXCEL", "JSON", "ORC", "PARQUET", "XML"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.gdrive_options.file_ingestion_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.outlook_options.attachment_mode": {"ALL", "INLINE_ONLY", "NONE", "NON_INLINE_ONLY"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.outlook_options.body_format": {"TEXT_HTML", "TEXT_PLAIN"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.sharepoint_options.entity_type": {"FILE", "FILE_METADATA", "LIST", "PERMISSION"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.sharepoint_options.file_ingestion_options.format": {"AVRO", "BINARYFILE", "CSV", "EXCEL", "JSON", "ORC", "PARQUET", "XML"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.sharepoint_options.file_ingestion_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.tiktok_ads_options.data_level": {"AUCTION_AD", "AUCTION_ADGROUP", "AUCTION_ADVERTISER", "AUCTION_CAMPAIGN"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.tiktok_ads_options.report_type": {"AUDIENCE", "BASIC", "BUSINESS_CENTER", "DSA", "GMV_MAX", "PLAYABLE_AD"}, - "resources.pipelines.*.ingestion_definition.objects[*].table.table_configuration.scd_type": {"APPEND_ONLY", "SCD_TYPE_1", "SCD_TYPE_2"}, - "resources.pipelines.*.ingestion_definition.source_type": {"BIGQUERY", "CONFLUENCE", "DYNAMICS365", "FOREIGN_CATALOG", "GA4_RAW_DATA", "GOOGLE_DRIVE", "JIRA", "MANAGED_POSTGRESQL", "META_MARKETING", "MYSQL", "NETSUITE", "ORACLE", "POSTGRESQL", "SALESFORCE", "SERVICENOW", "SHAREPOINT", "SQLSERVER", "TERADATA", "WORKDAY_RAAS", "ZENDESK"}, - "resources.pipelines.*.ingestion_definition.table_configuration.scd_type": {"APPEND_ONLY", "SCD_TYPE_1", "SCD_TYPE_2"}, - "resources.pipelines.*.permissions[*].level": {"CAN_MANAGE", "CAN_RUN", "CAN_VIEW", "IS_OWNER"}, - "resources.pipelines.*.restart_window.days_of_week[*]": {"FRIDAY", "MONDAY", "SATURDAY", "SUNDAY", "THURSDAY", "TUESDAY", "WEDNESDAY"}, + "resources.pipelines.*.clusters[*].autoscale.mode": {"ENHANCED", "LEGACY"}, + "resources.pipelines.*.clusters[*].aws_attributes.availability": {"ON_DEMAND", "SPOT", "SPOT_WITH_FALLBACK"}, + "resources.pipelines.*.clusters[*].aws_attributes.ebs_volume_type": {"GENERAL_PURPOSE_SSD", "THROUGHPUT_OPTIMIZED_HDD"}, + "resources.pipelines.*.clusters[*].azure_attributes.availability": {"ON_DEMAND_AZURE", "SPOT_AZURE", "SPOT_WITH_FALLBACK_AZURE"}, + "resources.pipelines.*.clusters[*].gcp_attributes.availability": {"ON_DEMAND_GCP", "PREEMPTIBLE_GCP", "PREEMPTIBLE_WITH_FALLBACK_GCP"}, + "resources.pipelines.*.clusters[*].gcp_attributes.confidential_compute_type": {"CONFIDENTIAL_COMPUTE_TYPE_NONE", "SEV_SNP"}, + "resources.pipelines.*.deployment.kind": {"BUNDLE"}, + "resources.pipelines.*.ingestion_definition.connector_type": {"CDC", "QUERY_BASED"}, + "resources.pipelines.*.ingestion_definition.full_refresh_window.days_of_week[*]": {"FRIDAY", "MONDAY", "SATURDAY", "SUNDAY", "THURSDAY", "TUESDAY", "WEDNESDAY"}, + "resources.pipelines.*.ingestion_definition.objects[*].report.table_configuration.scd_type": {"APPEND_ONLY", "SCD_TYPE_1", "SCD_TYPE_2"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.gdrive_options.entity_type": {"FILE", "FILE_METADATA", "PERMISSION"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.gdrive_options.file_ingestion_options.format": {"AVRO", "BINARYFILE", "CSV", "EXCEL", "JSON", "ORC", "PARQUET", "XML"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.gdrive_options.file_ingestion_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.format": {"JSON", "STRING"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.format": {"JSON", "STRING"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.outlook_options.attachment_mode": {"ALL", "INLINE_ONLY", "NONE", "NON_INLINE_ONLY"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.outlook_options.body_format": {"TEXT_HTML", "TEXT_PLAIN"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.sharepoint_options.entity_type": {"FILE", "FILE_METADATA", "LIST", "PERMISSION"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.sharepoint_options.file_ingestion_options.format": {"AVRO", "BINARYFILE", "CSV", "EXCEL", "JSON", "ORC", "PARQUET", "XML"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.sharepoint_options.file_ingestion_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.tiktok_ads_options.data_level": {"AUCTION_AD", "AUCTION_ADGROUP", "AUCTION_ADVERTISER", "AUCTION_CAMPAIGN"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.tiktok_ads_options.report_type": {"AUDIENCE", "BASIC", "BUSINESS_CENTER", "DSA", "GMV_MAX", "PLAYABLE_AD"}, + "resources.pipelines.*.ingestion_definition.objects[*].schema.table_configuration.scd_type": {"APPEND_ONLY", "SCD_TYPE_1", "SCD_TYPE_2"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.gdrive_options.entity_type": {"FILE", "FILE_METADATA", "PERMISSION"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.gdrive_options.file_ingestion_options.format": {"AVRO", "BINARYFILE", "CSV", "EXCEL", "JSON", "ORC", "PARQUET", "XML"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.gdrive_options.file_ingestion_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.format": {"JSON", "STRING"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.format": {"JSON", "STRING"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.outlook_options.attachment_mode": {"ALL", "INLINE_ONLY", "NONE", "NON_INLINE_ONLY"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.outlook_options.body_format": {"TEXT_HTML", "TEXT_PLAIN"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.sharepoint_options.entity_type": {"FILE", "FILE_METADATA", "LIST", "PERMISSION"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.sharepoint_options.file_ingestion_options.format": {"AVRO", "BINARYFILE", "CSV", "EXCEL", "JSON", "ORC", "PARQUET", "XML"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.sharepoint_options.file_ingestion_options.schema_evolution_mode": {"ADD_NEW_COLUMNS", "ADD_NEW_COLUMNS_WITH_TYPE_WIDENING", "FAIL_ON_NEW_COLUMNS", "NONE", "RESCUE"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.tiktok_ads_options.data_level": {"AUCTION_AD", "AUCTION_ADGROUP", "AUCTION_ADVERTISER", "AUCTION_CAMPAIGN"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.tiktok_ads_options.report_type": {"AUDIENCE", "BASIC", "BUSINESS_CENTER", "DSA", "GMV_MAX", "PLAYABLE_AD"}, + "resources.pipelines.*.ingestion_definition.objects[*].table.table_configuration.scd_type": {"APPEND_ONLY", "SCD_TYPE_1", "SCD_TYPE_2"}, + "resources.pipelines.*.ingestion_definition.source_type": {"BIGQUERY", "CONFLUENCE", "DYNAMICS365", "FOREIGN_CATALOG", "GA4_RAW_DATA", "GOOGLE_DRIVE", "JIRA", "MANAGED_POSTGRESQL", "META_MARKETING", "MYSQL", "NETSUITE", "ORACLE", "POSTGRESQL", "SALESFORCE", "SERVICENOW", "SHAREPOINT", "SQLSERVER", "TERADATA", "WORKDAY_RAAS", "ZENDESK"}, + "resources.pipelines.*.ingestion_definition.table_configuration.scd_type": {"APPEND_ONLY", "SCD_TYPE_1", "SCD_TYPE_2"}, + "resources.pipelines.*.permissions[*].level": {"CAN_MANAGE", "CAN_RUN", "CAN_VIEW", "IS_OWNER"}, + "resources.pipelines.*.restart_window.days_of_week[*]": {"FRIDAY", "MONDAY", "SATURDAY", "SUNDAY", "THURSDAY", "TUESDAY", "WEDNESDAY"}, "resources.postgres_endpoints.*.endpoint_type": {"ENDPOINT_TYPE_READ_ONLY", "ENDPOINT_TYPE_READ_WRITE"}, diff --git a/bundle/schema/jsonschema.json b/bundle/schema/jsonschema.json index 26e773f64a4..6d6b5719c43 100644 --- a/bundle/schema/jsonschema.json +++ b/bundle/schema/jsonschema.json @@ -160,7 +160,9 @@ }, "git_source": { "description": "Git source configuration for app deployments. Specifies which git reference (branch, tag, or commit)\nto use when deploying the app. Used in conjunction with git_repository to deploy code directly from git.\nThe source_code_path within git_source specifies the relative path to the app code within the repository.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.GitSource" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.GitSource", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", @@ -178,7 +180,9 @@ "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/apps.AppResource" }, "source_code_path": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true }, "space": { "description": "Name of the space this app belongs to.", @@ -4115,7 +4119,9 @@ "READ_METADATA", "MANAGE_ACCESS", "MANAGE_ACCESS_CONTROL", - "CREATE_SERVICE" + "CREATE_SERVICE", + "CREATE_FEATURE", + "READ_FEATURE" ] }, { @@ -4627,7 +4633,7 @@ "oneOf": [ { "type": "string", - "description": "Data security mode decides what data governance model to use when accessing data\nfrom a cluster.\n\nThe following modes can only be used when `kind = CLASSIC_PREVIEW`.\n* `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration.\n* `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`.\n* `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`.\n\nThe following modes can be used regardless of `kind`.\n* `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode.\n* `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode.\n* `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited.\n\nThe following modes are deprecated starting with Databricks Runtime 15.0 and\nwill be removed for future Databricks Runtime versions:\n\n* `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters.\n* `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters.\n* `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters.\n* `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled.", + "description": "Data security mode decides what data governance model to use when accessing data\nfrom a cluster.\n\n* `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration.\n* `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited.\n* `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode.\n\nThe following modes are legacy aliases for the above modes:\n\n* `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`.\n* `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`.\n\nThe following modes are deprecated starting with Databricks Runtime 15.0 and\nwill be removed for future Databricks Runtime versions:\n\n* `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters.\n* `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters.\n* `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters.\n* `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled.", "enum": [ "NONE", "SINGLE_USER", @@ -5317,7 +5323,7 @@ "STOPPED", "UPDATING", "FAILING_OVER", - "MIGRATING" + "UPGRADING" ] }, { @@ -6756,6 +6762,30 @@ "full_refresh": { "description": "If true, triggers a full refresh on the spark declarative pipeline.", "$ref": "#/$defs/bool" + }, + "full_refresh_selection": { + "description": "A list of tables to update with fullRefresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "refresh_flow_selection": { + "description": "Flow names to selectively refresh. These are unioned with other selective refresh\noptions (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "refresh_selection": { + "description": "A list of tables to update without fullRefresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "reset_checkpoint_selection": { + "description": "A list of streaming flows to reset checkpoints without clearing data.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true } }, "additionalProperties": false @@ -6775,9 +6805,33 @@ "description": "If true, triggers a full refresh on the spark declarative pipeline.", "$ref": "#/$defs/bool" }, + "full_refresh_selection": { + "description": "A list of tables to update with fullRefresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, "pipeline_id": { "description": "The full name of the pipeline task to execute.", "$ref": "#/$defs/string" + }, + "refresh_flow_selection": { + "description": "Flow names to selectively refresh. These are unioned with other selective refresh\noptions (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "refresh_selection": { + "description": "A list of tables to update without fullRefresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "reset_checkpoint_selection": { + "description": "A list of streaming flows to reset checkpoints without clearing data.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true } }, "additionalProperties": false, @@ -6889,6 +6943,48 @@ } ] }, + "jobs.PythonOperatorTask": { + "oneOf": [ + { + "type": "object", + "properties": { + "main": { + "description": "Fully qualified name of the main class or function.\nFor example, `my_project.my_function` or `my_project.MyOperator`.", + "$ref": "#/$defs/string" + }, + "parameters": { + "description": "An ordered list of task parameters.\nTODO(JOBS-30885): Add limits for parameters.", + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTaskParameter" + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.PythonOperatorTaskParameter": { + "oneOf": [ + { + "type": "object", + "properties": { + "name": { + "$ref": "#/$defs/string" + }, + "value": { + "$ref": "#/$defs/string" + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.PythonWheelTask": { "oneOf": [ { @@ -7484,9 +7580,7 @@ }, "disabled": { "description": "An optional flag to disable the task. If set to true, the task will not run even if it is part of a job.", - "$ref": "#/$defs/bool", - "x-databricks-preview": "PRIVATE", - "doNotSuggest": true + "$ref": "#/$defs/bool" }, "email_notifications": { "description": "An optional set of email addresses that is notified when runs of this task begin or complete as well as when this task is deleted. The default behavior is to not send any emails.", @@ -7548,6 +7642,12 @@ "description": "The task triggers a Power BI semantic model update when the `power_bi_task` field is present.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PowerBiTask" }, + "python_operator_task": { + "description": "The task runs a Python operator task.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTask", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, "python_wheel_task": { "description": "The task runs a Python wheel when the `python_wheel_task` field is present.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PythonWheelTask" @@ -7973,6 +8073,11 @@ "description": "Jira specific options for ingestion", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.JiraConnectorOptions" }, + "kafka_options": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.KafkaOptions", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, "meta_ads_options": { "description": "Meta Marketing (Meta Ads) specific options for ingestion", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.MetaMarketingOptions" @@ -8236,7 +8341,8 @@ "EXCEL", "PARQUET", "AVRO", - "ORC" + "ORC", + "FILE" ] }, { @@ -8383,7 +8489,9 @@ "enum": [ "FILE", "FILE_METADATA", - "PERMISSION" + "PERMISSION", + "FILE_PERMISSION", + "GROUP_MEMBERSHIP" ] }, { @@ -8736,6 +8844,86 @@ } ] }, + "pipelines.JsonTransformerOptions": { + "oneOf": [ + { + "type": "object", + "properties": { + "as_variant": { + "description": "Parse the entire value as a single Variant column.", + "$ref": "#/$defs/bool" + }, + "schema": { + "description": "Inline schema string for JSON parsing (Spark DDL format).", + "$ref": "#/$defs/string" + }, + "schema_evolution_mode": { + "description": "(Optional) Schema evolution mode for schema inference.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsSchemaEvolutionMode" + }, + "schema_file_path": { + "description": "Path to a schema file (.ddl).", + "$ref": "#/$defs/string" + }, + "schema_hints": { + "description": "(Optional) Schema hints as a comma-separated string of \"column_name type\" pairs.", + "$ref": "#/$defs/string" + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "pipelines.KafkaOptions": { + "oneOf": [ + { + "type": "object", + "properties": { + "client_config": { + "description": "Undocumented backdoor mechanism for overriding parameters\nto pass to the Kafka client.\nThis is not supported and may break at any time.", + "$ref": "#/$defs/map/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "key_transformer": { + "description": "(Optional) Transformer for the message key.\nIf not specified, the key is left as raw bytes.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.Transformer" + }, + "max_offsets_per_trigger": { + "description": "Internal option to control the maximum number of offsets to process per trigger.", + "$ref": "#/$defs/int64", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "starting_offset": { + "description": "(Optional) Where to begin reading when no checkpoint exists.\nValid values: \"latest\" and \"earliest\". Defaults to \"latest\".", + "$ref": "#/$defs/string" + }, + "topic_pattern": { + "description": "Java regex pattern to subscribe to matching topics.\nOnly one of topics or topic_pattern must be specified.", + "$ref": "#/$defs/string" + }, + "topics": { + "description": "Topics to subscribe to.\nOnly one of topics or topic_pattern must be specified.", + "$ref": "#/$defs/slice/string" + }, + "value_transformer": { + "description": "(Optional) Transformer for the message value.\nIf not specified, the value is left as raw bytes.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.Transformer" + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "pipelines.ManualTrigger": { "oneOf": [ { @@ -9456,7 +9644,9 @@ "FILE", "FILE_METADATA", "PERMISSION", - "LIST" + "LIST", + "FILE_PERMISSION", + "GROUP_MEMBERSHIP" ] }, { @@ -9736,6 +9926,45 @@ } ] }, + "pipelines.Transformer": { + "oneOf": [ + { + "type": "object", + "description": "Specifies how to transform binary data into structured data.", + "properties": { + "format": { + "description": "Required: the wire format of the data.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TransformerFormat" + }, + "json_options": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.JsonTransformerOptions" + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "pipelines.TransformerFormat": { + "oneOf": [ + { + "type": "string", + "enum": [ + "STRING", + "JSON", + "AVRO", + "PROTOBUF" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "pipelines.ZendeskSupportOptions": { "oneOf": [ { @@ -10938,7 +11167,8 @@ "GPU_MEDIUM", "GPU_SMALL", "GPU_LARGE", - "MULTIGPU_MEDIUM" + "MULTIGPU_MEDIUM", + "GPU_XLARGE" ] }, { @@ -10974,7 +11204,8 @@ "GPU_MEDIUM", "GPU_SMALL", "GPU_LARGE", - "MULTIGPU_MEDIUM" + "MULTIGPU_MEDIUM", + "GPU_XLARGE" ] }, { @@ -12405,6 +12636,20 @@ } ] }, + "jobs.PythonOperatorTaskParameter": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTaskParameter" + } + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.SqlTaskSubscription": { "oneOf": [ { diff --git a/bundle/schema/jsonschema_for_docs.json b/bundle/schema/jsonschema_for_docs.json index 0748cf84e47..b5176ba25f3 100644 --- a/bundle/schema/jsonschema_for_docs.json +++ b/bundle/schema/jsonschema_for_docs.json @@ -22,58 +22,45 @@ "type": "object", "properties": { "custom_description": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "custom_summary": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "display_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "evaluation": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2Evaluation", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2Evaluation" }, "file_path": { - "$ref": "#/$defs/string", - "x-since-version": "v0.282.0" + "$ref": "#/$defs/string" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "parent_path": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "permissions": { - "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission" }, "query_text": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "run_as": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2RunAs", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2RunAs" }, "run_as_user_name": { "$ref": "#/$defs/string", "deprecationMessage": "This field is deprecated", - "x-since-version": "v0.279.0", "deprecated": true }, "schedule": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.CronSchedule", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.CronSchedule" }, "warehouse_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -93,8 +80,7 @@ "x-since-version": "v0.243.0" }, "compute_size": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.ComputeSize", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.ComputeSize" }, "config": { "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.AppConfig", @@ -107,18 +93,17 @@ }, "git_repository": { "description": "Git repository configuration for app deployments. When specified, deployments can\nreference code from this repository by providing only the git reference (branch, tag, or commit).", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.GitRepository", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.GitRepository" }, "git_source": { "description": "Git source configuration for app deployments. Specifies which git reference (branch, tag, or commit)\nto use when deploying the app. Used in conjunction with git_repository to deploy code directly from git.\nThe source_code_path within git_source specifies the relative path to the app code within the repository.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.GitSource", - "x-since-version": "v0.290.0" + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.LifecycleWithStarted", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.LifecycleWithStarted" }, "name": { "description": "The name of the app. The name must contain only lowercase alphanumeric characters and hyphens.\nIt must be unique within the workspace.", @@ -136,22 +121,21 @@ }, "source_code_path": { "$ref": "#/$defs/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true, "x-since-version": "v0.239.0" }, "space": { "description": "Name of the space this app belongs to.", "$ref": "#/$defs/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.290.0" + "doNotSuggest": true }, "telemetry_export_destinations": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/apps.TelemetryExportDestination", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/apps.TelemetryExportDestination" }, "usage_policy_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "user_api_scopes": { "$ref": "#/$defs/slice/string", @@ -167,12 +151,10 @@ "type": "object", "properties": { "command": { - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/slice/string" }, "env": { - "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.AppEnvVar", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.AppEnvVar" } }, "additionalProperties": false @@ -181,16 +163,13 @@ "type": "object", "properties": { "name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "value": { - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "value_from": { - "$ref": "#/$defs/string", - "x-since-version": "v0.284.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -227,49 +206,38 @@ "type": "object", "properties": { "comment": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "connection_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "grants": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.PrivilegeAssignment", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.PrivilegeAssignment" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "managed_encryption_settings": { "description": "Control CMK encryption for managed catalog data", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.EncryptionSettings", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.EncryptionSettings" }, "name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "options": { - "$ref": "#/$defs/map/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/map/string" }, "properties": { - "$ref": "#/$defs/map/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/map/string" }, "provider_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "share_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "storage_root": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -336,8 +304,7 @@ }, "driver_node_type_flexibility": { "description": "Flexible node type configuration for the driver node.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.NodeTypeFlexibility", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.NodeTypeFlexibility" }, "driver_node_type_id": { "description": "The node type of the Spark driver.\nNote that this field is optional; if unset, the driver node type will be set as the same value\nas `node_type_id` defined above.\n\nThis field, along with node_type_id, should not be set if virtual_cluster_size is set.\nIf both driver_node_type_id, node_type_id, and virtual_cluster_size are specified, driver_node_type_id and node_type_id take precedence.", @@ -380,8 +347,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "node_type_id": { "description": "This field encodes, through a single value, the resources available to each of\nthe Spark nodes in this cluster. For example, the Spark nodes can be provisioned\nand optimized for memory or compute intensive workloads. A list of available node\ntypes can be retrieved by using the :method:clusters/listNodeTypes API call.", @@ -448,8 +414,7 @@ }, "worker_node_type_flexibility": { "description": "Flexible node type configuration for worker nodes.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.NodeTypeFlexibility", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.NodeTypeFlexibility" }, "workload_type": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.WorkloadType", @@ -499,13 +464,11 @@ }, "dataset_catalog": { "description": "Sets the default catalog for all datasets in this dashboard. When set, this overrides the catalog specified in individual dataset definitions.", - "$ref": "#/$defs/string", - "x-since-version": "v0.281.0" + "$ref": "#/$defs/string" }, "dataset_schema": { "description": "Sets the default schema for all datasets in this dashboard. When set, this overrides the schema specified in individual dataset definitions.", - "$ref": "#/$defs/string", - "x-since-version": "v0.281.0" + "$ref": "#/$defs/string" }, "display_name": { "description": "The display name of the dashboard.", @@ -527,8 +490,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "lifecycle_state": { "description": "The state of the dashboard resource. Used for tracking trashed status.", @@ -572,28 +534,23 @@ "type": "object", "properties": { "create_database_if_not_exists": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/bool" }, "database_instance_name": { "description": "The name of the DatabaseInstance housing the database.", - "$ref": "#/$defs/string", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/string" }, "database_name": { "description": "The name of the database (in a instance) associated with the catalog.", - "$ref": "#/$defs/string", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/string" }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "The name of the catalog in UC.", - "$ref": "#/$defs/string", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -609,62 +566,50 @@ "properties": { "capacity": { "description": "The sku of the instance. Valid values are \"CU_1\", \"CU_2\", \"CU_4\", \"CU_8\".", - "$ref": "#/$defs/string", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/string" }, "custom_tags": { "description": "Custom tags associated with the instance. This field is only included on create and update responses.", - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/database.CustomTag", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/database.CustomTag" }, "enable_pg_native_login": { "description": "Whether to enable PG native password login on the instance. Defaults to false.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/bool" }, "enable_readable_secondaries": { "description": "Whether to enable secondaries to serve read-only traffic. Defaults to false.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/bool" }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "The name of the instance. This is the unique identifier for the instance.", - "$ref": "#/$defs/string", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/string" }, "node_count": { "description": "The number of nodes in the instance, composed of 1 primary and 0 or more secondaries. Defaults to\n1 primary and 0 secondaries. This field is input only, see effective_node_count for the output.", - "$ref": "#/$defs/int", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/int" }, "parent_instance_ref": { "description": "The ref of the parent instance. This is only available if the instance is\nchild instance.\nInput: For specifying the parent instance to create a child instance. Optional.\nOutput: Only populated if provided as input to create a child instance.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.DatabaseInstanceRef", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.DatabaseInstanceRef" }, "permissions": { - "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission" }, "retention_window_in_days": { "description": "The retention window for the instance. This is the time window in days\nfor which the historical data is retained. The default value is 7 days.\nValid values are 2 to 35 days.", - "$ref": "#/$defs/int", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/int" }, "stopped": { "description": "Whether to stop the instance. An input only param, see effective_stopped for the output.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/bool" }, "usage_policy_id": { "description": "The desired usage policy to associate with the instance.", - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -676,52 +621,40 @@ "type": "object", "properties": { "comment": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" }, "credential_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" }, "enable_file_events": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/bool" }, "encryption_details": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.EncryptionDetails", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.EncryptionDetails" }, "fallback": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/bool" }, "file_event_queue": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.FileEventQueue", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.FileEventQueue" }, "grants": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.PrivilegeAssignment", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.PrivilegeAssignment" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" }, "read_only": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/bool" }, "skip_validation": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/bool" }, "url": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -775,8 +708,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "max_concurrent_runs": { "description": "An optional maximum allowed number of concurrent runs of the job.\nSet this value if you want to be able to execute multiple runs of the same job concurrently.\nThis is useful for example if you trigger your job on a frequent schedule and want to allow consecutive runs to overlap with each other, or if you want to trigger multiple runs which differ by their input parameters.\nThis setting affects only new runs. For example, suppose the job’s concurrency is 4 and there are 4 concurrent active runs. Then setting the concurrency to 3 won’t kill any of the active runs.\nHowever, from then on, new runs are skipped unless there are fewer than 3 active runs.\nThis value cannot exceed 1000. Setting this value to `0` causes all new runs to be skipped.", @@ -845,8 +777,7 @@ "description": "The id of the user specified usage policy to use for this job.\nIf not specified, a default usage policy may be applied when creating or modifying the job.\nSee `effective_usage_policy_id` for the usage policy used by this workload.", "$ref": "#/$defs/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.265.0" + "doNotSuggest": true }, "webhook_notifications": { "description": "A collection of system notification IDs to notify when runs of this job begin or complete.", @@ -887,8 +818,7 @@ "properties": { "prevent_destroy": { "description": "Lifecycle setting to prevent the resource from being destroyed.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/bool" } }, "additionalProperties": false @@ -898,13 +828,11 @@ "properties": { "prevent_destroy": { "description": "Lifecycle setting to prevent the resource from being destroyed.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.297.0" + "$ref": "#/$defs/bool" }, "started": { "description": "Lifecycle setting to deploy the resource in started mode. Only supported for apps, clusters, and sql_warehouses in direct deployment mode.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.297.0" + "$ref": "#/$defs/bool" } }, "additionalProperties": false @@ -919,8 +847,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "Experiment name.", @@ -978,8 +905,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "Register models under this name", @@ -1051,13 +977,11 @@ }, "email_notifications": { "description": "Email notification settings.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/serving.EmailNotifications", - "x-since-version": "v0.264.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/serving.EmailNotifications" }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "The name of the serving endpoint. This field is required and must be unique across a Databricks workspace.\nAn endpoint name can consist of alphanumeric characters, dashes, and underscores.", @@ -1233,8 +1157,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "Friendly identifier for this pipeline.", @@ -1309,8 +1232,7 @@ "description": "Usage policy of this pipeline.", "$ref": "#/$defs/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.276.0" + "doNotSuggest": true } }, "additionalProperties": false, @@ -1345,44 +1267,34 @@ "type": "object", "properties": { "branch_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "expire_time": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/time.Time", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/time.Time" }, "is_protected": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/bool" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "no_expiry": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/bool" }, "parent": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "source_branch": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "source_branch_lsn": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "source_branch_time": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/time.Time", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/time.Time" }, "ttl": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/duration.Duration", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/duration.Duration" } }, "additionalProperties": false, @@ -1395,48 +1307,37 @@ "type": "object", "properties": { "autoscaling_limit_max_cu": { - "$ref": "#/$defs/float64", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/float64" }, "autoscaling_limit_min_cu": { - "$ref": "#/$defs/float64", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/float64" }, "disabled": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/bool" }, "endpoint_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "endpoint_type": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/postgres.EndpointType", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/postgres.EndpointType" }, "group": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/postgres.EndpointGroupSpec", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/postgres.EndpointGroupSpec" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "no_suspension": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/bool" }, "parent": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "settings": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/postgres.EndpointSettings", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/postgres.EndpointSettings" }, "suspend_timeout_duration": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/duration.Duration", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/duration.Duration" } }, "additionalProperties": false, @@ -1450,48 +1351,37 @@ "type": "object", "properties": { "budget_policy_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/string" }, "custom_tags": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/postgres.ProjectCustomTag", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/postgres.ProjectCustomTag" }, "default_branch": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "default_endpoint_settings": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/postgres.ProjectDefaultEndpointSettings", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/postgres.ProjectDefaultEndpointSettings" }, "display_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" }, "enable_pg_native_login": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/bool" }, "history_retention_duration": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/duration.Duration", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/duration.Duration" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "permissions": { - "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission", - "x-since-version": "v0.292.0" + "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission" }, "pg_version": { - "$ref": "#/$defs/int", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/int" }, "project_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -1530,13 +1420,11 @@ }, "latest_monitor_failure_msg": { "description": "[Create:ERR Update:IGN] The latest error message for a monitor failure.", - "$ref": "#/$defs/string", - "x-since-version": "v0.264.0" + "$ref": "#/$defs/string" }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "notifications": { "description": "[Create:OPT Update:OPT] Field for specifying notification settings.", @@ -1595,12 +1483,10 @@ "type": "object", "properties": { "aliases": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.RegisteredModelAlias", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.RegisteredModelAlias" }, "browse_only": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/bool" }, "catalog_name": { "description": "The name of the catalog where the schema and the registered model reside", @@ -1613,16 +1499,13 @@ "x-since-version": "v0.229.0" }, "created_at": { - "$ref": "#/$defs/int64", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/int64" }, "created_by": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "full_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "grants": { "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.PrivilegeAssignment", @@ -1630,12 +1513,10 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "metastore_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "name": { "description": "The name of the registered model", @@ -1643,8 +1524,7 @@ "x-since-version": "v0.229.0" }, "owner": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "schema_name": { "description": "The name of the schema where the registered model resides", @@ -1657,12 +1537,10 @@ "x-since-version": "v0.229.0" }, "updated_at": { - "$ref": "#/$defs/int64", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/int64" }, "updated_by": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -1687,8 +1565,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "Name of schema, relative to parent catalog.", @@ -1727,8 +1604,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "Scope name requested by the user. Scope names are unique.", @@ -1826,8 +1702,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "max_num_clusters": { "description": "Maximum number of clusters that the autoscaler will create to handle\nconcurrent queries.\n\nSupported values:\n- Must be \u003e= min_num_clusters\n- Must be \u003c= 40.\n\nDefaults to min_clusters if unset.", @@ -1893,24 +1768,19 @@ "type": "object", "properties": { "database_instance_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/string" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "logical_database_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/string" }, "name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/string" }, "spec": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableSpec", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableSpec" } }, "additionalProperties": false, @@ -1922,24 +1792,19 @@ "type": "object", "properties": { "budget_policy_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "endpoint_type": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.EndpointType", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.EndpointType" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "permissions": { - "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/slice/github.com/databricks/cli/bundle/config/resources.Permission" }, "target_qps": { "$ref": "#/$defs/int64" @@ -1947,8 +1812,7 @@ "usage_policy_id": { "$ref": "#/$defs/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.298.0" + "doNotSuggest": true } }, "additionalProperties": false, @@ -1976,8 +1840,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", - "x-since-version": "v0.268.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "name": { "description": "The name of the volume", @@ -2214,8 +2077,7 @@ }, "engine": { "description": "The deployment engine to use. Valid values are `terraform` and `direct`. Takes priority over `DATABRICKS_BUNDLE_ENGINE` environment variable. Default is \"terraform\".", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/engine.EngineType", - "x-since-version": "v0.295.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/engine.EngineType" }, "git": { "description": "The Git version control details that are associated with your bundle.", @@ -2415,8 +2277,7 @@ "type": "object", "properties": { "alerts": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.Alert", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.Alert" }, "apps": { "description": "The app resource defines a Databricks app.", @@ -2425,8 +2286,7 @@ "x-since-version": "v0.239.0" }, "catalogs": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.Catalog", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.Catalog" }, "clusters": { "description": "The cluster definitions for the bundle, where each key is the name of a cluster.", @@ -2441,12 +2301,10 @@ "x-since-version": "v0.232.0" }, "database_catalogs": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.DatabaseCatalog", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.DatabaseCatalog" }, "database_instances": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.DatabaseInstance", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.DatabaseInstance" }, "experiments": { "description": "The experiment definitions for the bundle, where each key is the name of the experiment.", @@ -2455,8 +2313,7 @@ "x-since-version": "v0.229.0" }, "external_locations": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.ExternalLocation", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.ExternalLocation" }, "jobs": { "description": "The job definitions for the bundle, where each key is the name of the job.", @@ -2483,16 +2340,13 @@ "x-since-version": "v0.229.0" }, "postgres_branches": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.PostgresBranch", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.PostgresBranch" }, "postgres_endpoints": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.PostgresEndpoint", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.PostgresEndpoint" }, "postgres_projects": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.PostgresProject", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.PostgresProject" }, "quality_monitors": { "description": "The quality monitor definitions for the bundle, where each key is the name of the quality monitor.", @@ -2525,12 +2379,10 @@ "x-since-version": "v0.260.0" }, "synced_database_tables": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.SyncedDatabaseTable", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.SyncedDatabaseTable" }, "vector_search_endpoints": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.VectorSearchEndpoint", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.VectorSearchEndpoint" }, "volumes": { "description": "The volume definitions for the bundle, where each key is the name of the volume.", @@ -2660,8 +2512,7 @@ "properties": { "account_id": { "description": "The Databricks account ID.", - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" }, "artifact_path": { "description": "The artifact path to use within the workspace for both deployments and job runs", @@ -2710,8 +2561,7 @@ }, "experimental_is_unified_host": { "description": "Deprecated: no-op. Unified hosts are now detected automatically from /.well-known/databricks-config. Retained for schema compatibility with existing databricks.yml files.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/bool" }, "file_path": { "description": "The file path to use within the workspace for both deployments and job runs", @@ -2750,8 +2600,7 @@ }, "workspace_id": { "description": "The Databricks workspace ID", - "$ref": "#/$defs/string", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -2781,8 +2630,7 @@ "properties": { "command": { "description": "The command with which to run the app. This will override the command specified in the app.yaml file.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/slice/string" }, "deployment_id": { "$ref": "#/$defs/string", @@ -2790,13 +2638,11 @@ }, "env_vars": { "description": "The environment variables to set in the app runtime environment. This will override the environment variables specified in the app.yaml file.", - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/apps.EnvVar", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/apps.EnvVar" }, "git_source": { "description": "Git repository to use as the source for the app deployment.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.GitSource", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.GitSource" }, "mode": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppDeploymentMode", @@ -2851,8 +2697,7 @@ "type": "object", "properties": { "app": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceApp", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceApp" }, "database": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceDatabase", @@ -2864,12 +2709,10 @@ "x-since-version": "v0.239.0" }, "experiment": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceExperiment", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceExperiment" }, "genie_space": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceGenieSpace", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceGenieSpace" }, "job": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceJob", @@ -2881,8 +2724,7 @@ "x-since-version": "v0.239.0" }, "postgres": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourcePostgres", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourcePostgres" }, "secret": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceSecret", @@ -2910,12 +2752,10 @@ "type": "object", "properties": { "name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "permission": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceAppAppPermission", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceAppAppPermission" } }, "additionalProperties": false @@ -2959,12 +2799,10 @@ "type": "object", "properties": { "experiment_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "permission": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceExperimentExperimentPermission", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceExperimentExperimentPermission" } }, "additionalProperties": false, @@ -2985,16 +2823,13 @@ "type": "object", "properties": { "name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "permission": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceGenieSpaceGenieSpacePermission", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourceGenieSpaceGenieSpacePermission" }, "space_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -3044,16 +2879,13 @@ "type": "object", "properties": { "branch": { - "$ref": "#/$defs/string", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/string" }, "database": { - "$ref": "#/$defs/string", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/string" }, "permission": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourcePostgresPostgresPermission", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.AppResourcePostgresPostgresPermission" } }, "additionalProperties": false @@ -3233,18 +3065,15 @@ "properties": { "name": { "description": "The name of the environment variable.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "value": { "description": "The value for the environment variable.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "value_from": { "description": "The name of an external Databricks resource that contains the value, such as a secret or a database table.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -3255,13 +3084,11 @@ "properties": { "provider": { "description": "Git provider. Case insensitive. Supported values: gitHub, gitHubEnterprise, bitbucketCloud,\nbitbucketServer, azureDevOpsServices, gitLab, gitLabEnterpriseEdition, awsCodeCommit.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "url": { "description": "URL of the Git repository.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -3276,23 +3103,19 @@ "properties": { "branch": { "description": "Git branch to checkout.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "commit": { "description": "Git commit SHA to checkout.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "source_code_path": { "description": "Relative path to the app source code within the Git repository. If not specified, the root\nof the repository is used.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "tag": { "description": "Git tag to checkout.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -3303,8 +3126,7 @@ "properties": { "unity_catalog": { "description": "Unity Catalog Destinations for OTEL telemetry export.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.UnityCatalog", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.UnityCatalog" } }, "additionalProperties": false @@ -3315,18 +3137,15 @@ "properties": { "logs_table": { "description": "Unity Catalog table for OTEL logs.", - "$ref": "#/$defs/string", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/string" }, "metrics_table": { "description": "Unity Catalog table for OTEL metrics.", - "$ref": "#/$defs/string", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/string" }, "traces_table": { "description": "Unity Catalog table for OTEL traces (spans).", - "$ref": "#/$defs/string", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -3340,8 +3159,7 @@ "type": "object", "properties": { "queue_url": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -3350,16 +3168,13 @@ "type": "object", "properties": { "azure_cmk_access_connector_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "azure_cmk_managed_identity_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "azure_tenant_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -3371,16 +3186,13 @@ "type": "object", "properties": { "queue_url": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" }, "resource_group": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" }, "subscription_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -3390,8 +3202,7 @@ "description": "Encryption options that apply to clients connecting to cloud storage.", "properties": { "sse_encryption_details": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.SseEncryptionDetails", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.SseEncryptionDetails" } }, "additionalProperties": false @@ -3402,18 +3213,15 @@ "properties": { "azure_encryption_settings": { "description": "optional Azure settings - only required if an Azure CMK is used.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AzureEncryptionSettings", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AzureEncryptionSettings" }, "azure_key_vault_key_id": { "description": "the AKV URL in Azure, null otherwise.", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "customer_managed_key_id": { "description": "the CMK uuid in AWS and GCP, null otherwise.", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -3422,28 +3230,22 @@ "type": "object", "properties": { "managed_aqs": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AzureQueueStorage", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AzureQueueStorage" }, "managed_pubsub": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.GcpPubsub", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.GcpPubsub" }, "managed_sqs": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AwsSqsQueue", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AwsSqsQueue" }, "provided_aqs": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AzureQueueStorage", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AzureQueueStorage" }, "provided_pubsub": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.GcpPubsub", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.GcpPubsub" }, "provided_sqs": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AwsSqsQueue", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.AwsSqsQueue" } }, "additionalProperties": false @@ -3452,8 +3254,7 @@ "type": "object", "properties": { "subscription_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -3726,7 +3527,9 @@ "READ_METADATA", "MANAGE_ACCESS", "MANAGE_ACCESS_CONTROL", - "CREATE_SERVICE" + "CREATE_SERVICE", + "CREATE_FEATURE", + "READ_FEATURE" ] }, "catalog.PrivilegeAssignment": { @@ -3734,13 +3537,11 @@ "properties": { "principal": { "description": "The principal (user email address or group name).\nFor deleted principals, `principal` is empty while `principal_id` is populated.", - "$ref": "#/$defs/string", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/string" }, "privileges": { "description": "The privileges assigned to the principal.", - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.Privilege", - "x-since-version": "v0.294.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.Privilege" } }, "additionalProperties": false @@ -3750,29 +3551,23 @@ "properties": { "alias_name": { "description": "Name of the alias, e.g. 'champion' or 'latest_stable'", - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "catalog_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "model_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "schema_name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "version_num": { "description": "Integer version number of the model version to which this alias points.", - "$ref": "#/$defs/int", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/int" } }, "additionalProperties": false @@ -3782,12 +3577,10 @@ "description": "Server-Side Encryption properties for clients communicating with AWS s3.", "properties": { "algorithm": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.SseEncryptionDetailsAlgorithm", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/catalog.SseEncryptionDetailsAlgorithm" }, "aws_kms_key_arn": { - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -4045,8 +3838,7 @@ }, "driver_node_type_flexibility": { "description": "Flexible node type configuration for the driver node.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.NodeTypeFlexibility", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.NodeTypeFlexibility" }, "driver_node_type_id": { "description": "The node type of the Spark driver.\nNote that this field is optional; if unset, the driver node type will be set as the same value\nas `node_type_id` defined above.\n\nThis field, along with node_type_id, should not be set if virtual_cluster_size is set.\nIf both driver_node_type_id, node_type_id, and virtual_cluster_size are specified, driver_node_type_id and node_type_id take precedence.", @@ -4148,8 +3940,7 @@ }, "worker_node_type_flexibility": { "description": "Flexible node type configuration for worker nodes.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.NodeTypeFlexibility", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.NodeTypeFlexibility" }, "workload_type": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.WorkloadType", @@ -4168,7 +3959,7 @@ }, "compute.DataSecurityMode": { "type": "string", - "description": "Data security mode decides what data governance model to use when accessing data\nfrom a cluster.\n\nThe following modes can only be used when `kind = CLASSIC_PREVIEW`.\n* `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration.\n* `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`.\n* `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`.\n\nThe following modes can be used regardless of `kind`.\n* `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode.\n* `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode.\n* `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited.\n\nThe following modes are deprecated starting with Databricks Runtime 15.0 and\nwill be removed for future Databricks Runtime versions:\n\n* `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters.\n* `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters.\n* `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters.\n* `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled.", + "description": "Data security mode decides what data governance model to use when accessing data\nfrom a cluster.\n\n* `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration.\n* `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited.\n* `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode.\n\nThe following modes are legacy aliases for the above modes:\n\n* `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`.\n* `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`.\n\nThe following modes are deprecated starting with Databricks Runtime 15.0 and\nwill be removed for future Databricks Runtime versions:\n\n* `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters.\n* `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters.\n* `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters.\n* `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled.", "enum": [ "NONE", "SINGLE_USER", @@ -4242,8 +4033,7 @@ "properties": { "base_environment": { "description": "The base environment this environment is built on top of. A base environment defines the environment version and a\nlist of dependencies for serverless compute. The value can be a file path to a custom `env.yaml` file\n(e.g., `/Workspace/path/to/env.yaml`). Support for a Databricks-provided base environment ID\n(e.g., `workspace-base-environments/databricks_ai_v4`) and workspace base environment ID\n(e.g., `workspace-base-environments/dbe_b849b66e-b31a-4cb5-b161-1f2b10877fb7`) is in Beta.\nEither `environment_version` or `base_environment` can be provided. For more information, see", - "$ref": "#/$defs/string", - "x-since-version": "v0.289.0" + "$ref": "#/$defs/string" }, "client": { "description": "Use `environment_version` instead.", @@ -4263,8 +4053,7 @@ "x-since-version": "v0.252.0" }, "java_dependencies": { - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.271.0" + "$ref": "#/$defs/slice/string" } }, "additionalProperties": false @@ -4290,8 +4079,7 @@ }, "first_on_demand": { "description": "The first `first_on_demand` nodes of the cluster will be placed on on-demand instances.\nThis value should be greater than 0, to make sure the cluster driver node is placed on an\non-demand instance. If this value is greater than or equal to the current cluster size, all\nnodes will be placed on on-demand instances. If this value is less than the current cluster\nsize, `first_on_demand` nodes will be placed on on-demand instances and the remainder will\nbe placed on `availability` instances. Note that this value does not affect\ncluster size and cannot currently be mutated over the lifetime of a cluster.", - "$ref": "#/$defs/int", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/int" }, "google_service_account": { "description": "If provided, the cluster will impersonate the google service account when accessing\ngcloud services (like GCS). The google service account\nmust have previously been added to the Databricks environment by an account\nadministrator.", @@ -4504,8 +4292,7 @@ "properties": { "alternate_node_type_ids": { "description": "A list of node type IDs to use as fallbacks when the primary node type is unavailable.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/slice/string" } }, "additionalProperties": false @@ -4658,13 +4445,11 @@ "properties": { "key": { "description": "The key of the custom tag.", - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" }, "value": { "description": "The value of the custom tag.", - "$ref": "#/$defs/string", - "x-since-version": "v0.273.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -4675,18 +4460,15 @@ "properties": { "branch_time": { "description": "Branch time of the ref database instance.\nFor a parent ref instance, this is the point in time on the parent instance from which the\ninstance was created.\nFor a child ref instance, this is the point in time on the instance from which the child\ninstance was created.\nInput: For specifying the point in time to create a child instance. Optional.\nOutput: Only populated if provided as input to create a child instance.", - "$ref": "#/$defs/string", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/string" }, "lsn": { "description": "User-specified WAL LSN of the ref database instance.\n\nInput: For specifying the WAL LSN to create a child instance. Optional.\nOutput: Only populated if provided as input to create a child instance.", - "$ref": "#/$defs/string", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/string" }, "name": { "description": "Name of the ref database instance.", - "$ref": "#/$defs/string", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -4700,7 +4482,7 @@ "STOPPED", "UPDATING", "FAILING_OVER", - "MIGRATING" + "UPGRADING" ] }, "database.DeltaTableSyncInfo": { @@ -4713,18 +4495,15 @@ "properties": { "budget_policy_id": { "description": "Budget policy to set on the newly created pipeline.", - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "storage_catalog": { "description": "This field needs to be specified if the destination catalog is a managed postgres catalog.\n\nUC catalog for the pipeline to store intermediate files (checkpoints, event logs etc).\nThis needs to be a standard catalog where the user has permissions to create Delta tables.", - "$ref": "#/$defs/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/string" }, "storage_schema": { "description": "This field needs to be specified if the destination catalog is a managed postgres catalog.\n\nUC schema for the pipeline to store intermediate files (checkpoints, event logs etc).\nThis needs to be in the standard catalog where the user has permissions to create Delta tables.", - "$ref": "#/$defs/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -4786,38 +4565,31 @@ "properties": { "create_database_objects_if_missing": { "description": "If true, the synced table's logical database and schema resources in PG\nwill be created if they do not already exist.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/bool" }, "existing_pipeline_id": { "description": "At most one of existing_pipeline_id and new_pipeline_spec should be defined.\n\nIf existing_pipeline_id is defined, the synced table will be bin packed into the existing pipeline\nreferenced. This avoids creating a new pipeline and allows sharing existing compute.\nIn this case, the scheduling_policy of this synced table must match the scheduling policy of the existing pipeline.", - "$ref": "#/$defs/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/string" }, "new_pipeline_spec": { "description": "At most one of existing_pipeline_id and new_pipeline_spec should be defined.\n\nIf new_pipeline_spec is defined, a new pipeline is created for this synced table. The location pointed to is used\nto store intermediate files (checkpoints, event logs etc). The caller must have write permissions to create Delta\ntables in the specified catalog and schema. Again, note this requires write permissions, whereas the source table\nonly requires read permissions.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.NewPipelineSpec", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.NewPipelineSpec" }, "primary_key_columns": { "description": "Primary Key columns to be used for data insert/update in the destination.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/slice/string" }, "scheduling_policy": { "description": "Scheduling policy of the underlying pipeline.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableSchedulingPolicy", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableSchedulingPolicy" }, "source_table_full_name": { "description": "Three-part (catalog, schema, table) name of the source Delta table.", - "$ref": "#/$defs/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/string" }, "timeseries_key": { "description": "Time series key to deduplicate (tie-break) rows with the same primary key.", - "$ref": "#/$defs/string", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -4845,23 +4617,19 @@ "properties": { "continuous_update_status": { "description": "Detailed status of a synced table. Shown if the synced table is in the SYNCED_CONTINUOUS_UPDATE\nor the SYNCED_UPDATING_PIPELINE_RESOURCES state.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableContinuousUpdateStatus", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableContinuousUpdateStatus" }, "failed_status": { "description": "Detailed status of a synced table. Shown if the synced table is in the OFFLINE_FAILED or the\nSYNCED_PIPELINE_FAILED state.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableFailedStatus", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableFailedStatus" }, "provisioning_status": { "description": "Detailed status of a synced table. Shown if the synced table is in the\nPROVISIONING_PIPELINE_RESOURCES or the PROVISIONING_INITIAL_SNAPSHOT state.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableProvisioningStatus", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableProvisioningStatus" }, "triggered_update_status": { "description": "Detailed status of a synced table. Shown if the synced table is in the SYNCED_TRIGGERED_UPDATE\nor the SYNCED_NO_PENDING_UPDATE state.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableTriggeredUpdateStatus", - "x-since-version": "v0.266.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/database.SyncedTableTriggeredUpdateStatus" } }, "additionalProperties": false @@ -4903,23 +4671,19 @@ "properties": { "alert_id": { "description": "The alert_id is the canonical identifier of the alert.", - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" }, "subscribers": { "description": "The subscribers receive alert evaluation result notifications after the alert task is completed.\nThe number of subscriptions is limited to 100.", - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.AlertTaskSubscriber", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.AlertTaskSubscriber" }, "warehouse_id": { "description": "The warehouse_id identifies the warehouse settings used by the alert task.", - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" }, "workspace_path": { "description": "The workspace_path is the path to the alert file in the workspace. The path:\n* must start with \"/Workspace\"\n* must be a normalized path.\nUser has to select only one of alert_id or workspace_path to identify the alert.", - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -4929,13 +4693,11 @@ "description": "Represents a subscriber that will receive alert notifications.\nA subscriber can be either a user (via email) or a notification destination (via destination_id).", "properties": { "destination_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" }, "user_name": { "description": "A valid workspace email address.", - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -4983,8 +4745,7 @@ "properties": { "hardware_accelerator": { "description": "Hardware accelerator configuration for Serverless GPU workloads.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.HardwareAcceleratorType", - "x-since-version": "v0.288.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.HardwareAcceleratorType" } }, "additionalProperties": false @@ -5068,8 +4829,7 @@ }, "task_retry_mode": { "description": "Indicate whether the continuous job is applying task level retries or not. Defaults to NEVER.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.TaskRetryMode", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.TaskRetryMode" } }, "additionalProperties": false @@ -5111,8 +4871,7 @@ "description": "Dashboard task parameters. Used to apply dashboard filter values during dashboard task execution. Parameter values get applied to any dashboard filters that have a matching URL identifier as the parameter key.\nThe parameter value format is dependent on the filter type:\n- For text and single-select filters, provide a single value (e.g. `\"value\"`)\n- For date and datetime filters, provide the value in ISO 8601 format (e.g. `\"2000-01-01T00:00:00\"`)\n- For multi-select filters, provide a JSON array of values (e.g. `\"[\\\"value1\\\",\\\"value2\\\"]\"`)\n- For range and date range filters, provide a JSON object with `start` and `end` (e.g. `\"{\\\"start\\\":\\\"1\\\",\\\"end\\\":\\\"10\\\"}\"`)", "$ref": "#/$defs/map/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.289.0" + "doNotSuggest": true }, "subscription": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.Subscription", @@ -5362,8 +5121,7 @@ "x-since-version": "v0.229.0" }, "sparse_checkout": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.SparseCheckout", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.SparseCheckout" } }, "additionalProperties": false, @@ -5537,8 +5295,7 @@ "description": "Group name of an account group assigned to the workspace. Setting this field requires being a member of the group.", "$ref": "#/$defs/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.283.0" + "doNotSuggest": true }, "service_principal_name": { "description": "The application ID of an active service principal. Setting this field requires the `servicePrincipal/user` role.", @@ -5645,28 +5402,23 @@ "properties": { "aliases": { "description": "Aliases of the model versions to monitor. Can only be used in conjunction with condition MODEL_ALIAS_SET.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/slice/string" }, "condition": { "description": "The condition based on which to trigger a job run.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.ModelTriggerConfigurationCondition", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.ModelTriggerConfigurationCondition" }, "min_time_between_triggers_seconds": { "description": "If set, the trigger starts a run only after the specified amount of time has passed since\nthe last time the trigger fired. The minimum allowed value is 60 seconds.", - "$ref": "#/$defs/int", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/int" }, "securable_name": { "description": "Name of the securable to monitor (\"mycatalog.myschema.mymodel\" in the case of model-level triggers,\n\"mycatalog.myschema\" in the case of schema-level triggers) or empty in the case of metastore-level triggers.", - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "wait_after_last_change_seconds": { "description": "If set, the trigger starts a run only after no model updates have occurred for the specified time\nand can be used to wait for a series of model updates before triggering a run. The\nminimum allowed value is 60 seconds.", - "$ref": "#/$defs/int", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/int" } }, "additionalProperties": false, @@ -5761,6 +5513,30 @@ "description": "If true, triggers a full refresh on the spark declarative pipeline.", "$ref": "#/$defs/bool", "x-since-version": "v0.229.0" + }, + "full_refresh_selection": { + "description": "A list of tables to update with fullRefresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "refresh_flow_selection": { + "description": "Flow names to selectively refresh. These are unioned with other selective refresh\noptions (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "refresh_selection": { + "description": "A list of tables to update without fullRefresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "reset_checkpoint_selection": { + "description": "A list of streaming flows to reset checkpoints without clearing data.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true } }, "additionalProperties": false @@ -5773,10 +5549,34 @@ "$ref": "#/$defs/bool", "x-since-version": "v0.229.0" }, + "full_refresh_selection": { + "description": "A list of tables to update with fullRefresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, "pipeline_id": { "description": "The full name of the pipeline task to execute.", "$ref": "#/$defs/string", "x-since-version": "v0.229.0" + }, + "refresh_flow_selection": { + "description": "Flow names to selectively refresh. These are unioned with other selective refresh\noptions (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "refresh_selection": { + "description": "A list of tables to update without fullRefresh.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "reset_checkpoint_selection": { + "description": "A list of streaming flows to reset checkpoints without clearing data.", + "$ref": "#/$defs/slice/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true } }, "additionalProperties": false, @@ -5872,6 +5672,32 @@ }, "additionalProperties": false }, + "jobs.PythonOperatorTask": { + "type": "object", + "properties": { + "main": { + "description": "Fully qualified name of the main class or function.\nFor example, `my_project.my_function` or `my_project.MyOperator`.", + "$ref": "#/$defs/string" + }, + "parameters": { + "description": "An ordered list of task parameters.\nTODO(JOBS-30885): Add limits for parameters.", + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTaskParameter" + } + }, + "additionalProperties": false + }, + "jobs.PythonOperatorTaskParameter": { + "type": "object", + "properties": { + "name": { + "$ref": "#/$defs/string" + }, + "value": { + "$ref": "#/$defs/string" + } + }, + "additionalProperties": false + }, "jobs.PythonWheelTask": { "type": "object", "properties": { @@ -6092,8 +5918,7 @@ "properties": { "patterns": { "description": "List of patterns to include for sparse checkout.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/slice/string" } }, "additionalProperties": false @@ -6315,8 +6140,7 @@ "properties": { "alert_task": { "description": "The task evaluates a Databricks alert and sends notifications to subscribers\nwhen the `alert_task` field is present.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AlertTask", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AlertTask" }, "clean_rooms_notebook_task": { "description": "The task runs a [clean rooms](https://docs.databricks.com/clean-rooms/index.html) notebook\nwhen the `clean_rooms_notebook_task` field is present.", @@ -6325,8 +6149,7 @@ }, "compute": { "description": "Task level compute configuration.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.Compute", - "x-since-version": "v0.288.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.Compute" }, "condition_task": { "description": "The task evaluates a condition that can be used to control the execution of other tasks when the `condition_task` field is present.\nThe condition task does not require a cluster to execute and does not support retries or notifications.", @@ -6375,10 +6198,7 @@ }, "disabled": { "description": "An optional flag to disable the task. If set to true, the task will not run even if it is part of a job.", - "$ref": "#/$defs/bool", - "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.271.0" + "$ref": "#/$defs/bool" }, "email_notifications": { "description": "An optional set of email addresses that is notified when runs of this task begin or complete as well as when this task is deleted. The default behavior is to not send any emails.", @@ -6455,6 +6275,12 @@ "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PowerBiTask", "x-since-version": "v0.248.0" }, + "python_operator_task": { + "description": "The task runs a Python operator task.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTask", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, "python_wheel_task": { "description": "The task runs a Python wheel when the `python_wheel_task` field is present.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PythonWheelTask", @@ -6615,8 +6441,7 @@ "model": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.ModelTriggerConfiguration", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.279.0" + "doNotSuggest": true }, "pause_status": { "description": "Whether this trigger is paused or not.", @@ -6739,13 +6564,11 @@ "properties": { "enabled": { "description": "(Required, Mutable) Whether to enable auto full refresh or not.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/bool" }, "min_interval_hours": { "description": "(Optional, Mutable) Specify the minimum interval in hours between the timestamp\nat which a table was last full refreshed and the current timestamp for triggering auto full\nIf unspecified and autoFullRefresh is enabled then by default min_interval_hours is 24 hours.", - "$ref": "#/$defs/int", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/int" } }, "additionalProperties": false, @@ -6771,8 +6594,7 @@ "description": "Source catalog for initial connection.\nThis is necessary for schema exploration in some database systems like Oracle, and optional but nice-to-have\nin some other database systems like Postgres.\nFor Oracle databases, this maps to a service name.", "$ref": "#/$defs/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.279.0" + "doNotSuggest": true } }, "additionalProperties": false @@ -6788,20 +6610,23 @@ "gdrive_options": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.GoogleDriveOptions", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.298.0" + "doNotSuggest": true }, "google_ads_options": { "description": "Google Ads specific options for ingestion (object-level).\nWhen set, these values override the corresponding fields in GoogleAdsConfig\n(source_configurations).", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.GoogleAdsOptions", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.298.0" + "doNotSuggest": true }, "jira_options": { "description": "Jira specific options for ingestion", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.JiraConnectorOptions" }, + "kafka_options": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.KafkaOptions", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, "meta_ads_options": { "description": "Meta Marketing (Meta Ads) specific options for ingestion", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.MetaMarketingOptions" @@ -6815,8 +6640,7 @@ "sharepoint_options": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.SharepointOptions", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.298.0" + "doNotSuggest": true }, "smartsheet_options": { "description": "Smartsheet specific options for ingestion", @@ -6828,8 +6652,7 @@ "description": "TikTok Ads specific options for ingestion", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TikTokAdsOptions", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.298.0" + "doNotSuggest": true }, "zendesk_support_options": { "description": "Zendesk Support specific options for ingestion", @@ -6868,18 +6691,15 @@ "properties": { "catalog_name": { "description": "(Required, Immutable) The name of the catalog for the connector's staging storage location.", - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" }, "schema_name": { "description": "(Required, Immutable) The name of the schema for the connector's staging storage location.", - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" }, "volume_name": { "description": "(Optional) The Unity Catalog-compatible name for the storage location.\nThis is the volume to use for the data that is extracted by the connector.\nSpark Declarative Pipelines system will automatically create the volume under the catalog and schema.\nFor Combined Cdc Managed Ingestion pipelines default name for the volume would be :\n__databricks_ingestion_gateway_staging_data-$pipelineId", - "$ref": "#/$defs/string", - "x-since-version": "v0.296.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -6935,18 +6755,15 @@ "properties": { "modified_after": { "description": "Include files with modification times occurring after the specified time.\nTimestamp format: YYYY-MM-DDTHH:mm:ss (e.g. 2020-06-01T13:00:00)\nBased on https://spark.apache.org/docs/latest/sql-data-sources-generic-options.html#modification-time-path-filters", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "modified_before": { "description": "Include files with modification times occurring before the specified time.\nTimestamp format: YYYY-MM-DDTHH:mm:ss (e.g. 2020-06-01T13:00:00)\nBased on https://spark.apache.org/docs/latest/sql-data-sources-generic-options.html#modification-time-path-filters", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "path_filter": { "description": "Include files with file names matching the pattern\nBased on https://spark.apache.org/docs/latest/sql-data-sources-generic-options.html#path-glob-filter", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -6955,54 +6772,43 @@ "type": "object", "properties": { "corrupt_record_column": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "file_filters": { "description": "Generic options", - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/pipelines.FileFilter", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/pipelines.FileFilter" }, "format": { "description": "required for TableSpec", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsFileFormat", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsFileFormat" }, "format_options": { "description": "Format-specific options\nBased on https://docs.databricks.com/aws/en/ingestion/cloud-object-storage/auto-loader/options#file-format-options", - "$ref": "#/$defs/map/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/map/string" }, "ignore_corrupt_files": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/bool" }, "infer_column_types": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/bool" }, "reader_case_sensitive": { "description": "Column name case sensitivity\nhttps://docs.databricks.com/aws/en/ingestion/cloud-object-storage/auto-loader/schema#change-case-sensitive-behavior", - "$ref": "#/$defs/bool", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/bool" }, "rescued_data_column": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "schema_evolution_mode": { "description": "Based on https://docs.databricks.com/aws/en/ingestion/cloud-object-storage/auto-loader/schema#how-does-auto-loader-schema-evolution-work", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsSchemaEvolutionMode", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsSchemaEvolutionMode" }, "schema_hints": { "description": "Override inferred schema of specific columns\nBased on https://docs.databricks.com/aws/en/ingestion/cloud-object-storage/auto-loader/schema#override-schema-inference-with-schema-hints", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "single_variant_column": { - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -7017,7 +6823,8 @@ "EXCEL", "PARQUET", "AVRO", - "ORC" + "ORC", + "FILE" ] }, "pipelines.FileIngestionOptionsSchemaEvolutionMode": { @@ -7074,18 +6881,15 @@ "properties": { "lookback_window_days": { "description": "(Optional) Number of days to look back for report tables to capture late-arriving data.\nIf not specified, defaults to 30 days.", - "$ref": "#/$defs/int", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/int" }, "manager_account_id": { "description": "(Optional at this level) Manager Account ID (also called MCC Account ID) used to list\nand access customer accounts under this manager account.\nOverrides GoogleAdsConfig.manager_account_id from source_configurations when set.", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" }, "sync_start_date": { "description": "(Optional) Start date for the initial sync of report tables in YYYY-MM-DD format.\nThis determines the earliest date from which to sync historical data.\nIf not specified, defaults to 2 years of historical data.", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -7097,17 +6901,14 @@ "type": "object", "properties": { "entity_type": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.GoogleDriveOptionsGoogleDriveEntityType", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.GoogleDriveOptionsGoogleDriveEntityType" }, "file_ingestion_options": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptions", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptions" }, "url": { "description": "Google Drive URL.", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -7117,7 +6918,9 @@ "enum": [ "FILE", "FILE_METADATA", - "PERMISSION" + "PERMISSION", + "FILE_PERMISSION", + "GROUP_MEMBERSHIP" ] }, "pipelines.IngestionConfig": { @@ -7160,8 +6963,7 @@ "description": "Optional, Internal. Parameters required to establish an initial connection with the source.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ConnectionParameters", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.279.0" + "doNotSuggest": true }, "gateway_storage_catalog": { "description": "Required, Immutable. The name of the catalog for the gateway pipeline's storage location.", @@ -7198,25 +7000,21 @@ "description": "(Optional) Connector Type for sources. Ex: CDC, Query Based.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ConnectorType", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.296.0" + "doNotSuggest": true }, "data_staging_options": { "description": "(Optional) Location of staged data storage. This is required for migration from Cdc Managed Ingestion Pipeline\nwith Gateway pipeline to Combined Cdc Managed Ingestion Pipeline.\nIf not specified, the volume for staged data will be created in catalog and schema/target specified in the\ntop level pipeline definition.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.DataStagingOptions", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.296.0" + "doNotSuggest": true }, "full_refresh_window": { "description": "(Optional) A window that specifies a set of time ranges for snapshot queries in CDC.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.OperationTimeWindow", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.OperationTimeWindow" }, "ingest_from_uc_foreign_catalog": { "description": "Immutable. If set to true, the pipeline will ingest tables from the\nUC foreign catalogs directly without the need to specify a UC connection or ingestion gateway.\nThe `source_catalog` fields in objects of IngestionConfig are interpreted as\nthe UC foreign catalogs to ingest from.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/bool" }, "ingestion_gateway_id": { "description": "Identifier for the gateway that is used by this ingestion pipeline to communicate with the source database.\nThis is used with CDC connectors to databases like SQL Server using a gateway pipeline (connector_type = CDC).\nUnder certain conditions, this can be replaced with connection_name to change the connector to Combined Cdc\nManaged Ingestion Pipeline.", @@ -7226,8 +7024,7 @@ "netsuite_jar_path": { "$ref": "#/$defs/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.271.0" + "doNotSuggest": true }, "objects": { "description": "Required. Settings specifying tables to replicate and the destination for the replicated tables.", @@ -7236,8 +7033,7 @@ }, "source_configurations": { "description": "Top-level source configurations", - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/pipelines.SourceConfig", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/pipelines.SourceConfig" }, "table_configuration": { "description": "Configuration settings to control the ingestion of tables. These settings are applied to all tables in the pipeline.", @@ -7253,18 +7049,15 @@ "properties": { "cursor_columns": { "description": "The names of the monotonically increasing columns in the source table that are used to enable\nthe table to be read and ingested incrementally through structured streaming.\nThe columns are allowed to have repeated values but have to be non-decreasing.\nIf the source data is merged into the destination (e.g., using SCD Type 1 or Type 2), these\ncolumns will implicitly define the `sequence_by` behavior. You can still explicitly set\n`sequence_by` to override this default.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.264.0" + "$ref": "#/$defs/slice/string" }, "deletion_condition": { "description": "Specifies a SQL WHERE condition that specifies that the source row has been deleted.\nThis is sometimes referred to as \"soft-deletes\".\nFor example: \"Operation = 'DELETE'\" or \"is_deleted = true\".\nThis field is orthogonal to `hard_deletion_sync_interval_in_seconds`,\none for soft-deletes and the other for hard-deletes.\nSee also the hard_deletion_sync_min_interval_in_seconds field for\nhandling of \"hard deletes\" where the source rows are physically removed from the table.", - "$ref": "#/$defs/string", - "x-since-version": "v0.264.0" + "$ref": "#/$defs/string" }, "hard_deletion_sync_min_interval_in_seconds": { "description": "Specifies the minimum interval (in seconds) between snapshots on primary keys\nfor detecting and synchronizing hard deletions—i.e., rows that have been\nphysically removed from the source table.\nThis interval acts as a lower bound. If ingestion runs less frequently than\nthis value, hard deletion synchronization will align with the actual ingestion\nfrequency instead of happening more often.\nIf not set, hard deletion synchronization via snapshots is disabled.\nThis field is mutable and can be updated without triggering a full snapshot.", - "$ref": "#/$defs/int64", - "x-since-version": "v0.264.0" + "$ref": "#/$defs/int64" } }, "additionalProperties": false @@ -7276,19 +7069,16 @@ "description": "(Optional) Marks the report as incremental.\nThis field is deprecated and should not be used. Use `parameters` instead. The incremental behavior is now\ncontrolled by the `parameters` field.", "$ref": "#/$defs/bool", "deprecationMessage": "This field is deprecated", - "x-since-version": "v0.271.0", "deprecated": true }, "parameters": { "description": "Parameters for the Workday report. Each key represents the parameter name (e.g., \"start_date\", \"end_date\"),\nand the corresponding value is a SQL-like expression used to compute the parameter value at runtime.\nExample:\n{\n\"start_date\": \"{ coalesce(current_offset(), date(\\\"2025-02-01\\\")) }\",\n\"end_date\": \"{ current_date() - INTERVAL 1 DAY }\"\n}", - "$ref": "#/$defs/map/string", - "x-since-version": "v0.271.0" + "$ref": "#/$defs/map/string" }, "report_parameters": { "description": "(Optional) Additional custom parameters for Workday Report\nThis field is deprecated and should not be used. Use `parameters` instead.", "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/pipelines.IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue", "deprecationMessage": "This field is deprecated", - "x-since-version": "v0.271.0", "deprecated": true } }, @@ -7299,13 +7089,11 @@ "properties": { "key": { "description": "Key for the report parameter, can be a column name or other metadata", - "$ref": "#/$defs/string", - "x-since-version": "v0.271.0" + "$ref": "#/$defs/string" }, "value": { "description": "Value for the report parameter.\nPossible values it can take are these sql functions:\n1. coalesce(current_offset(), date(\"YYYY-MM-DD\")) -\u003e if current_offset() is null, then the passed date, else current_offset()\n2. current_date()\n3. date_sub(current_date(), x) -\u003e subtract x (some non-negative integer) days from current date", - "$ref": "#/$defs/string", - "x-since-version": "v0.271.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -7427,6 +7215,70 @@ }, "additionalProperties": false }, + "pipelines.JsonTransformerOptions": { + "type": "object", + "properties": { + "as_variant": { + "description": "Parse the entire value as a single Variant column.", + "$ref": "#/$defs/bool" + }, + "schema": { + "description": "Inline schema string for JSON parsing (Spark DDL format).", + "$ref": "#/$defs/string" + }, + "schema_evolution_mode": { + "description": "(Optional) Schema evolution mode for schema inference.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsSchemaEvolutionMode" + }, + "schema_file_path": { + "description": "Path to a schema file (.ddl).", + "$ref": "#/$defs/string" + }, + "schema_hints": { + "description": "(Optional) Schema hints as a comma-separated string of \"column_name type\" pairs.", + "$ref": "#/$defs/string" + } + }, + "additionalProperties": false + }, + "pipelines.KafkaOptions": { + "type": "object", + "properties": { + "client_config": { + "description": "Undocumented backdoor mechanism for overriding parameters\nto pass to the Kafka client.\nThis is not supported and may break at any time.", + "$ref": "#/$defs/map/string", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "key_transformer": { + "description": "(Optional) Transformer for the message key.\nIf not specified, the key is left as raw bytes.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.Transformer" + }, + "max_offsets_per_trigger": { + "description": "Internal option to control the maximum number of offsets to process per trigger.", + "$ref": "#/$defs/int64", + "x-databricks-preview": "PRIVATE", + "doNotSuggest": true + }, + "starting_offset": { + "description": "(Optional) Where to begin reading when no checkpoint exists.\nValid values: \"latest\" and \"earliest\". Defaults to \"latest\".", + "$ref": "#/$defs/string" + }, + "topic_pattern": { + "description": "Java regex pattern to subscribe to matching topics.\nOnly one of topics or topic_pattern must be specified.", + "$ref": "#/$defs/string" + }, + "topics": { + "description": "Topics to subscribe to.\nOnly one of topics or topic_pattern must be specified.", + "$ref": "#/$defs/slice/string" + }, + "value_transformer": { + "description": "(Optional) Transformer for the message value.\nIf not specified, the value is left as raw bytes.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.Transformer" + } + }, + "additionalProperties": false + }, "pipelines.ManualTrigger": { "type": "object", "additionalProperties": false @@ -7503,18 +7355,15 @@ "properties": { "days_of_week": { "description": "Days of week in which the window is allowed to happen\nIf not specified all days of the week will be used.", - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/pipelines.DayOfWeek", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/pipelines.DayOfWeek" }, "start_hour": { "description": "An integer between 0 and 23 denoting the start hour for the window in the 24-hour day.", - "$ref": "#/$defs/int", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/int" }, "time_zone_id": { "description": "Time zone id of window. See https://docs.databricks.com/sql/language-manual/sql-ref-syntax-aux-conf-mgmt-set-timezone.html for details.\nIf not specified, UTC will be used.", - "$ref": "#/$defs/string", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -7836,8 +7685,7 @@ "description": "The environment version of the serverless Python environment used to execute\ncustomer Python code. Each environment version includes a specific Python\nversion and a curated set of pre-installed libraries with defined versions,\nproviding a stable and reproducible execution environment.\n\nDatabricks supports a three-year lifecycle for each environment version.\nFor available versions and their included packages, see\nhttps://docs.databricks.com/aws/en/release-notes/serverless/environment-version/\n\nThe value should be a string representing the environment version number, for example: `\"4\"`.", "$ref": "#/$defs/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.294.0" + "doNotSuggest": true } }, "additionalProperties": false @@ -7848,8 +7696,7 @@ "properties": { "slot_config": { "description": "Optional. The Postgres slot configuration to use for logical replication", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.PostgresSlotConfig", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.PostgresSlotConfig" } }, "additionalProperties": false @@ -7860,13 +7707,11 @@ "properties": { "publication_name": { "description": "The name of the publication to use for the Postgres source", - "$ref": "#/$defs/string", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/string" }, "slot_name": { "description": "The name of the logical replication slot to use for the Postgres source", - "$ref": "#/$defs/string", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -7953,8 +7798,7 @@ "properties": { "connector_options": { "description": "(Optional) Source Specific Connector Options", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ConnectorOptions", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ConnectorOptions" }, "destination_catalog": { "description": "Required. Destination catalog to store tables.", @@ -7994,18 +7838,15 @@ "properties": { "entity_type": { "description": "(Optional) The type of SharePoint entity to ingest.\nIf not specified, defaults to FILE.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.SharepointOptionsSharepointEntityType", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.SharepointOptionsSharepointEntityType" }, "file_ingestion_options": { "description": "(Optional) File ingestion options for processing files.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptions", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptions" }, "url": { "description": "Required. The SharePoint URL.", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -8016,7 +7857,9 @@ "FILE", "FILE_METADATA", "PERMISSION", - "LIST" + "LIST", + "FILE_PERMISSION", + "GROUP_MEMBERSHIP" ] }, "pipelines.SmartsheetOptions": { @@ -8036,13 +7879,11 @@ "properties": { "postgres": { "description": "Postgres-specific catalog-level configuration parameters", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.PostgresCatalogConfig", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.PostgresCatalogConfig" }, "source_catalog": { "description": "Source catalog name", - "$ref": "#/$defs/string", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -8052,8 +7893,7 @@ "properties": { "catalog": { "description": "Catalog-level source configuration parameters", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.SourceCatalogConfig", - "x-since-version": "v0.267.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.SourceCatalogConfig" }, "google_ads_config": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.GoogleAdsConfig", @@ -8068,8 +7908,7 @@ "properties": { "connector_options": { "description": "(Optional) Source Specific Connector Options", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ConnectorOptions", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ConnectorOptions" }, "destination_catalog": { "description": "Required. Destination catalog to store table.", @@ -8119,8 +7958,7 @@ "properties": { "auto_full_refresh_policy": { "description": "(Optional, Mutable) Policy for auto full refresh, if enabled pipeline will automatically try\nto fix issues by doing a full refresh on the table in the retry run. auto_full_refresh_policy\nin table configuration will override the above level auto_full_refresh_policy.\nFor example,\n{\n\"auto_full_refresh_policy\": {\n\"enabled\": true,\n\"min_interval_hours\": 23,\n}\n}\nIf unspecified, auto full refresh is disabled.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.AutoFullRefreshPolicy", - "x-since-version": "v0.285.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.AutoFullRefreshPolicy" }, "exclude_columns": { "description": "A list of column names to be excluded for the ingestion.\nWhen not specified, include_columns fully controls what columns to be ingested.\nWhen specified, all other columns including future ones will be automatically included for ingestion.\nThis field in mutually exclusive with `include_columns`.", @@ -8139,13 +7977,11 @@ }, "query_based_connector_config": { "description": "Configurations that are only applicable for query-based ingestion connectors.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.IngestionPipelineDefinitionTableSpecificConfigQueryBasedConnectorConfig", - "x-since-version": "v0.264.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.IngestionPipelineDefinitionTableSpecificConfigQueryBasedConnectorConfig" }, "row_filter": { "description": "(Optional, Immutable) The row filter condition to be applied to the table.\nIt must not contain the WHERE keyword, only the actual filter condition.\nIt must be in DBSQL format.", - "$ref": "#/$defs/string", - "x-since-version": "v0.283.0" + "$ref": "#/$defs/string" }, "salesforce_include_formula_fields": { "description": "If true, formula fields defined in the table are included in the ingestion. This setting is only valid for the Salesforce connector", @@ -8167,8 +8003,7 @@ "workday_report_parameters": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.IngestionPipelineDefinitionWorkdayReportParameters", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true, - "x-since-version": "v0.271.0" + "doNotSuggest": true } }, "additionalProperties": false @@ -8188,38 +8023,31 @@ "properties": { "data_level": { "description": "(Optional) Data level for the report.\nIf not specified, defaults to AUCTION_CAMPAIGN.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TikTokAdsOptionsTikTokDataLevel", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TikTokAdsOptionsTikTokDataLevel" }, "dimensions": { "description": "(Optional) Dimensions to include in the report.\nExamples: \"campaign_id\", \"adgroup_id\", \"ad_id\", \"stat_time_day\", \"stat_time_hour\"\nIf not specified, defaults to campaign_id.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/slice/string" }, "lookback_window_days": { "description": "(Optional) Number of days to look back for report tables during incremental sync\nto capture late-arriving conversions and attribution data.\nIf not specified, defaults to 7 days.", - "$ref": "#/$defs/int", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/int" }, "metrics": { "description": "(Optional) Metrics to include in the report.\nExamples: \"spend\", \"impressions\", \"clicks\", \"conversion\", \"cpc\"\nIf not specified, defaults to basic metrics (spend, impressions, clicks, etc.)", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/slice/string" }, "query_lifetime": { "description": "(Optional) Whether to request lifetime metrics (all-time aggregated data).\nWhen true, the report returns all-time data.\nIf not specified, defaults to false.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/bool" }, "report_type": { "description": "(Optional) Report type for the TikTok Ads API.\nIf not specified, defaults to BASIC.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TikTokAdsOptionsTikTokReportType", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TikTokAdsOptionsTikTokReportType" }, "sync_start_date": { "description": "(Optional) Start date for the initial sync of report tables in YYYY-MM-DD format.\nThis determines the earliest date from which to sync historical data.\nIf not specified, defaults to 1 year of historical data for daily reports\nand 30 days for hourly reports.", - "$ref": "#/$defs/string", - "x-since-version": "v0.298.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -8246,6 +8074,29 @@ "GMV_MAX" ] }, + "pipelines.Transformer": { + "type": "object", + "description": "Specifies how to transform binary data into structured data.", + "properties": { + "format": { + "description": "Required: the wire format of the data.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TransformerFormat" + }, + "json_options": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.JsonTransformerOptions" + } + }, + "additionalProperties": false + }, + "pipelines.TransformerFormat": { + "type": "string", + "enum": [ + "STRING", + "JSON", + "AVRO", + "PROTOBUF" + ] + }, "pipelines.ZendeskSupportOptions": { "type": "object", "description": "Zendesk Support specific options for ingestion", @@ -8262,18 +8113,15 @@ "properties": { "enable_readable_secondaries": { "description": "Whether to allow read-only connections to read-write endpoints. Only relevant for read-write endpoints where\nsize.max \u003e 1.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/bool" }, "max": { "description": "The maximum number of computes in the endpoint group. Currently, this must be equal to min. Set to 1 for single\ncompute endpoints, to disable HA. To manually suspend all computes in an endpoint group, set disabled to\ntrue on the EndpointSpec.", - "$ref": "#/$defs/int", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/int" }, "min": { "description": "The minimum number of computes in the endpoint group. Currently, this must be equal to max. This must be greater\nthan or equal to 1.", - "$ref": "#/$defs/int", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/int" } }, "additionalProperties": false, @@ -8288,8 +8136,7 @@ "properties": { "pg_settings": { "description": "A raw representation of Postgres settings.", - "$ref": "#/$defs/map/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/map/string" } }, "additionalProperties": false @@ -8307,13 +8154,11 @@ "properties": { "key": { "description": "The key of the custom tag.", - "$ref": "#/$defs/string", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/string" }, "value": { "description": "The value of the custom tag.", - "$ref": "#/$defs/string", - "x-since-version": "v0.290.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -8324,28 +8169,23 @@ "properties": { "autoscaling_limit_max_cu": { "description": "The maximum number of Compute Units. Minimum value is 0.5.", - "$ref": "#/$defs/float64", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/float64" }, "autoscaling_limit_min_cu": { "description": "The minimum number of Compute Units. Minimum value is 0.5.", - "$ref": "#/$defs/float64", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/float64" }, "no_suspension": { "description": "When set to true, explicitly disables automatic suspension (never suspend).\nShould be set to true when provided.\nMutually exclusive with `suspend_timeout_duration`. When updating, use `spec.project_default_settings.suspension` in the update_mask.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/bool" }, "pg_settings": { "description": "A raw representation of Postgres settings.", - "$ref": "#/$defs/map/string", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/map/string" }, "suspend_timeout_duration": { "description": "Duration of inactivity after which the compute endpoint is automatically suspended.\nIf specified should be between 60s and 604800s (1 minute to 1 week).\nMutually exclusive with `no_suspension`. When updating, use `spec.project_default_settings.suspension` in the update_mask.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/duration.Duration", - "x-since-version": "v0.287.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/duration.Duration" } }, "additionalProperties": false @@ -8513,8 +8353,7 @@ }, "tokens": { "description": "Used to specify how many tokens are allowed for a key within the renewal_period.", - "$ref": "#/$defs/int64", - "x-since-version": "v0.265.0" + "$ref": "#/$defs/int64" } }, "additionalProperties": false, @@ -8760,13 +8599,11 @@ "properties": { "on_update_failure": { "description": "A list of email addresses to be notified when an endpoint fails to update its configuration or state.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.264.0" + "$ref": "#/$defs/slice/string" }, "on_update_success": { "description": "A list of email addresses to be notified when an endpoint successfully updates its configuration or state.", - "$ref": "#/$defs/slice/string", - "x-since-version": "v0.264.0" + "$ref": "#/$defs/slice/string" } }, "additionalProperties": false @@ -9091,8 +8928,7 @@ "properties": { "burst_scaling_enabled": { "description": "Whether burst scaling is enabled. When enabled (default), the endpoint can automatically\nscale up beyond provisioned capacity to handle traffic spikes. When disabled, the endpoint\nmaintains fixed capacity at provisioned_model_units.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.288.0" + "$ref": "#/$defs/bool" }, "entity_name": { "description": "The name of the entity to be served. The entity may be a model in the Databricks Model Registry, a model in the Unity Catalog (UC), or a function of type FEATURE_SPEC in the UC. If it is a UC object, the full name of the object should be given in the form of **catalog_name.schema_name.model_name**.", @@ -9171,8 +9007,7 @@ "properties": { "burst_scaling_enabled": { "description": "Whether burst scaling is enabled. When enabled (default), the endpoint can automatically\nscale up beyond provisioned capacity to handle traffic spikes. When disabled, the endpoint\nmaintains fixed capacity at provisioned_model_units.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.288.0" + "$ref": "#/$defs/bool" }, "environment_vars": { "description": "An object containing a set of optional, user-specified environment variable key-value pairs used for serving this entity. Note: this is an experimental feature and subject to change. Example entity environment variables that refer to Databricks secrets: `{\"OPENAI_API_KEY\": \"{{secrets/my_scope/my_key}}\", \"DATABRICKS_TOKEN\": \"{{secrets/my_scope2/my_key2}}\"}`", @@ -9253,7 +9088,8 @@ "GPU_MEDIUM", "GPU_SMALL", "GPU_LARGE", - "MULTIGPU_MEDIUM" + "MULTIGPU_MEDIUM", + "GPU_XLARGE" ] }, "serving.ServingEndpointPermissionLevel": { @@ -9273,7 +9109,8 @@ "GPU_MEDIUM", "GPU_SMALL", "GPU_LARGE", - "MULTIGPU_MEDIUM" + "MULTIGPU_MEDIUM", + "GPU_XLARGE" ] }, "serving.TrafficConfig": { @@ -9322,28 +9159,23 @@ "properties": { "comparison_operator": { "description": "Operator used for comparison in alert evaluation.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.ComparisonOperator", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.ComparisonOperator" }, "empty_result_state": { "description": "Alert state if result is empty. Please avoid setting this field to be `UNKNOWN` because `UNKNOWN` state is planned to be deprecated.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertEvaluationState", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertEvaluationState" }, "notification": { "description": "User or Notification Destination to notify when alert is triggered.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2Notification", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2Notification" }, "source": { "description": "Source column from result to use to evaluate alert", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2OperandColumn", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2OperandColumn" }, "threshold": { "description": "Threshold to user for alert evaluation, can be a column or a value.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2Operand", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2Operand" } }, "additionalProperties": false, @@ -9357,17 +9189,14 @@ "properties": { "notify_on_ok": { "description": "Whether to notify alert subscribers when alert returns back to normal.", - "$ref": "#/$defs/bool", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/bool" }, "retrigger_seconds": { "description": "Number of seconds an alert waits after being triggered before it is allowed to send another notification.\nIf set to 0 or omitted, the alert will not send any further notifications after the first trigger\nSetting this value to 1 allows the alert to send a notification on every evaluation where the condition is met, effectively making it always retrigger for notification purposes.", - "$ref": "#/$defs/int", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/int" }, "subscriptions": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/sql.AlertV2Subscription", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/sql.AlertV2Subscription" } }, "additionalProperties": false @@ -9376,12 +9205,10 @@ "type": "object", "properties": { "column": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2OperandColumn", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2OperandColumn" }, "value": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2OperandValue", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.AlertV2OperandValue" } }, "additionalProperties": false @@ -9390,16 +9217,13 @@ "type": "object", "properties": { "aggregation": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.Aggregation", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.Aggregation" }, "display": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "name": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -9411,16 +9235,13 @@ "type": "object", "properties": { "bool_value": { - "$ref": "#/$defs/bool", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/bool" }, "double_value": { - "$ref": "#/$defs/float64", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/float64" }, "string_value": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -9430,13 +9251,11 @@ "properties": { "service_principal_name": { "description": "Application ID of an active service principal. Setting this field requires the `servicePrincipal/user` role.", - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "user_name": { "description": "The email of an active workspace user. Can only set this field to their own email.", - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -9445,12 +9264,10 @@ "type": "object", "properties": { "destination_id": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "user_email": { - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -9506,18 +9323,15 @@ "properties": { "pause_status": { "description": "Indicate whether this schedule is paused or not.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.SchedulePauseStatus", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/sql.SchedulePauseStatus" }, "quartz_cron_schedule": { "description": "A cron expression using quartz syntax that specifies the schedule for this pipeline.\nShould use the quartz format described here: http://www.quartz-scheduler.org/documentation/quartz-2.1.7/tutorials/tutorial-lesson-06.html", - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" }, "timezone_id": { "description": "A Java timezone id. The schedule will be resolved using this timezone.\nThis will be combined with the quartz_cron_schedule to determine the schedule.\nSee https://docs.databricks.com/sql/language-manual/sql-ref-syntax-aux-conf-mgmt-set-timezone.html for details.", - "$ref": "#/$defs/string", - "x-since-version": "v0.279.0" + "$ref": "#/$defs/string" } }, "additionalProperties": false, @@ -10009,6 +9823,12 @@ "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PowerBiTable" } }, + "jobs.PythonOperatorTaskParameter": { + "type": "array", + "items": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTaskParameter" + } + }, "jobs.SqlTaskSubscription": { "type": "array", "items": { @@ -10212,8 +10032,7 @@ "x-since-version": "v0.229.0" }, "python": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config.Python", - "x-since-version": "v0.275.0" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config.Python" }, "resources": { "description": "A Map that defines the resources for the bundle, where each key is the name of the resource, and the value is a Map that defines the resource.", diff --git a/cmd/account/endpoints/endpoints.go b/cmd/account/endpoints/endpoints.go index 0da1a198d02..eb3056de47f 100755 --- a/cmd/account/endpoints/endpoints.go +++ b/cmd/account/endpoints/endpoints.go @@ -20,8 +20,8 @@ var cmdOverrides []func(*cobra.Command) func New() *cobra.Command { cmd := &cobra.Command{ Use: "endpoints", - Short: `*Beta* These APIs manage endpoint configurations for this account.`, - Long: `This command is in Beta and may change without notice. + Short: `*Public Preview* These APIs manage endpoint configurations for this account.`, + Long: `This command is in Public Preview and may change without notice. These APIs manage endpoint configurations for this account.`, GroupID: "provisioning", @@ -29,8 +29,8 @@ These APIs manage endpoint configurations for this account.`, } cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" // Add methods cmd.AddCommand(newCreateEndpoint()) @@ -67,8 +67,8 @@ func newCreateEndpoint() *cobra.Command { // TODO: complex arg: azure_private_endpoint_info cmd.Use = "create-endpoint PARENT DISPLAY_NAME REGION" - cmd.Short = `*Beta* Create a network endpoint.` - cmd.Long = `This command is in Beta and may change without notice. + cmd.Short = `*Public Preview* Create a network endpoint.` + cmd.Long = `This command is in Public Preview and may change without notice. Create a network endpoint. @@ -91,8 +91,8 @@ Create a network endpoint. REGION: The cloud provider region where this endpoint is located.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("json") { @@ -166,8 +166,8 @@ func newDeleteEndpoint() *cobra.Command { var deleteEndpointReq networking.DeleteEndpointRequest cmd.Use = "delete-endpoint NAME" - cmd.Short = `*Beta* Delete a network endpoint.` - cmd.Long = `This command is in Beta and may change without notice. + cmd.Short = `*Public Preview* Delete a network endpoint.` + cmd.Long = `This command is in Public Preview and may change without notice. Delete a network endpoint. @@ -176,8 +176,8 @@ Delete a network endpoint. delete corresponding network resources in your cloud provider account.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -225,16 +225,16 @@ func newGetEndpoint() *cobra.Command { var getEndpointReq networking.GetEndpointRequest cmd.Use = "get-endpoint NAME" - cmd.Short = `*Beta* Get a network endpoint.` - cmd.Long = `This command is in Beta and may change without notice. + cmd.Short = `*Public Preview* Get a network endpoint.` + cmd.Long = `This command is in Public Preview and may change without notice. Get a network endpoint. Gets details of a specific network endpoint.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -296,8 +296,8 @@ func newListEndpoints() *cobra.Command { cmd.Flags().Lookup("page-token").Hidden = true cmd.Use = "list-endpoints PARENT" - cmd.Short = `*Beta* List network endpoints.` - cmd.Long = `This command is in Beta and may change without notice. + cmd.Short = `*Public Preview* List network endpoints.` + cmd.Long = `This command is in Public Preview and may change without notice. List network endpoints. @@ -308,8 +308,8 @@ List network endpoints. accounts/{account_id}.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) diff --git a/cmd/account/iam-v2/iam-v2.go b/cmd/account/iam-v2/iam-v2.go index bbddb8cbca4..965966c124c 100755 --- a/cmd/account/iam-v2/iam-v2.go +++ b/cmd/account/iam-v2/iam-v2.go @@ -4,11 +4,13 @@ package iam_v2 import ( "fmt" + "strings" "github.com/databricks/cli/cmd/root" "github.com/databricks/cli/libs/cmdctx" "github.com/databricks/cli/libs/cmdio" "github.com/databricks/cli/libs/flags" + "github.com/databricks/databricks-sdk-go/common/types/fieldmask" "github.com/databricks/databricks-sdk-go/service/iamv2" "github.com/spf13/cobra" ) @@ -34,10 +36,15 @@ These APIs are used to manage identities and the workspace access of these cmd.Annotations["launch_stage_display"] = "Beta" // Add methods + cmd.AddCommand(newCreateWorkspaceAssignmentDetail()) + cmd.AddCommand(newDeleteWorkspaceAssignmentDetail()) cmd.AddCommand(newGetWorkspaceAccessDetail()) + cmd.AddCommand(newGetWorkspaceAssignmentDetail()) + cmd.AddCommand(newListWorkspaceAssignmentDetails()) cmd.AddCommand(newResolveGroup()) cmd.AddCommand(newResolveServicePrincipal()) cmd.AddCommand(newResolveUser()) + cmd.AddCommand(newUpdateWorkspaceAssignmentDetail()) // Apply optional overrides to this command. for _, fn := range cmdOverrides { @@ -47,6 +54,185 @@ These APIs are used to manage identities and the workspace access of these return cmd } +// start create-workspace-assignment-detail command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var createWorkspaceAssignmentDetailOverrides []func( + *cobra.Command, + *iamv2.CreateWorkspaceAssignmentDetailRequest, +) + +func newCreateWorkspaceAssignmentDetail() *cobra.Command { + cmd := &cobra.Command{} + + var createWorkspaceAssignmentDetailReq iamv2.CreateWorkspaceAssignmentDetailRequest + createWorkspaceAssignmentDetailReq.WorkspaceAssignmentDetail = iamv2.WorkspaceAssignmentDetail{} + var createWorkspaceAssignmentDetailJson flags.JsonFlag + + cmd.Flags().Var(&createWorkspaceAssignmentDetailJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + // TODO: array: entitlements + + cmd.Use = "create-workspace-assignment-detail WORKSPACE_ID PRINCIPAL_ID" + cmd.Short = `Create a workspace assignment detail.` + cmd.Long = `Create a workspace assignment detail. + + Creates a workspace assignment detail for a principal. Entitlement grants are + applied individually and non-atomically — if a failure occurs partway + through, the principal will be assigned to the workspace but with only a + subset of the requested entitlements. Use GetWorkspaceAssignmentDetail to + confirm which entitlements were successfully granted. + + Arguments: + WORKSPACE_ID: Required. The workspace ID for which the workspace assignment detail is + being created. + PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + if cmd.Flags().Changed("json") { + err := root.ExactArgs(1)(cmd, args) + if err != nil { + return fmt.Errorf("when --json flag is specified, provide only WORKSPACE_ID as positional arguments. Provide 'principal_id' in your JSON input") + } + return nil + } + check := root.ExactArgs(2) + return check(cmd, args) + } + + cmd.PreRunE = root.MustAccountClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + a := cmdctx.AccountClient(ctx) + + if cmd.Flags().Changed("json") { + diags := createWorkspaceAssignmentDetailJson.Unmarshal(&createWorkspaceAssignmentDetailReq.WorkspaceAssignmentDetail) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + _, err = fmt.Sscan(args[0], &createWorkspaceAssignmentDetailReq.WorkspaceId) + if err != nil { + return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) + } + + if !cmd.Flags().Changed("json") { + _, err = fmt.Sscan(args[1], &createWorkspaceAssignmentDetailReq.WorkspaceAssignmentDetail.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) + } + + } + + response, err := a.IamV2.CreateWorkspaceAssignmentDetail(ctx, createWorkspaceAssignmentDetailReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range createWorkspaceAssignmentDetailOverrides { + fn(cmd, &createWorkspaceAssignmentDetailReq) + } + + return cmd +} + +// start delete-workspace-assignment-detail command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var deleteWorkspaceAssignmentDetailOverrides []func( + *cobra.Command, + *iamv2.DeleteWorkspaceAssignmentDetailRequest, +) + +func newDeleteWorkspaceAssignmentDetail() *cobra.Command { + cmd := &cobra.Command{} + + var deleteWorkspaceAssignmentDetailReq iamv2.DeleteWorkspaceAssignmentDetailRequest + + cmd.Use = "delete-workspace-assignment-detail WORKSPACE_ID PRINCIPAL_ID" + cmd.Short = `Delete a workspace assignment detail.` + cmd.Long = `Delete a workspace assignment detail. + + Deletes a workspace assignment detail for a principal, revoking all associated + entitlements. Entitlement revocations are applied individually and + non-atomically — if a failure occurs partway through, the principal remains + assigned with a subset of its original entitlements, and the operation is safe + to retry. + + Arguments: + WORKSPACE_ID: The workspace ID where the principal has access. + PRINCIPAL_ID: Required. ID of the principal in Databricks to delete workspace assignment + for.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + check := root.ExactArgs(2) + return check(cmd, args) + } + + cmd.PreRunE = root.MustAccountClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + a := cmdctx.AccountClient(ctx) + + _, err = fmt.Sscan(args[0], &deleteWorkspaceAssignmentDetailReq.WorkspaceId) + if err != nil { + return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) + } + + _, err = fmt.Sscan(args[1], &deleteWorkspaceAssignmentDetailReq.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) + } + + err = a.IamV2.DeleteWorkspaceAssignmentDetail(ctx, deleteWorkspaceAssignmentDetailReq) + if err != nil { + return err + } + return nil + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range deleteWorkspaceAssignmentDetailOverrides { + fn(cmd, &deleteWorkspaceAssignmentDetailReq) + } + + return cmd +} + // start get-workspace-access-detail command // Slice with functions to override default command behavior. @@ -126,6 +312,148 @@ Get workspace access details for a principal. return cmd } +// start get-workspace-assignment-detail command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var getWorkspaceAssignmentDetailOverrides []func( + *cobra.Command, + *iamv2.GetWorkspaceAssignmentDetailRequest, +) + +func newGetWorkspaceAssignmentDetail() *cobra.Command { + cmd := &cobra.Command{} + + var getWorkspaceAssignmentDetailReq iamv2.GetWorkspaceAssignmentDetailRequest + + cmd.Use = "get-workspace-assignment-detail WORKSPACE_ID PRINCIPAL_ID" + cmd.Short = `Get workspace assignment details for a principal.` + cmd.Long = `Get workspace assignment details for a principal. + + Returns the assignment details for a principal in a workspace. + + Arguments: + WORKSPACE_ID: Required. The workspace ID for which the assignment details are being + requested. + PRINCIPAL_ID: Required. The internal ID of the principal (user/sp/group) for which the + assignment details are being requested.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + check := root.ExactArgs(2) + return check(cmd, args) + } + + cmd.PreRunE = root.MustAccountClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + a := cmdctx.AccountClient(ctx) + + _, err = fmt.Sscan(args[0], &getWorkspaceAssignmentDetailReq.WorkspaceId) + if err != nil { + return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) + } + + _, err = fmt.Sscan(args[1], &getWorkspaceAssignmentDetailReq.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) + } + + response, err := a.IamV2.GetWorkspaceAssignmentDetail(ctx, getWorkspaceAssignmentDetailReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range getWorkspaceAssignmentDetailOverrides { + fn(cmd, &getWorkspaceAssignmentDetailReq) + } + + return cmd +} + +// start list-workspace-assignment-details command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var listWorkspaceAssignmentDetailsOverrides []func( + *cobra.Command, + *iamv2.ListWorkspaceAssignmentDetailsRequest, +) + +func newListWorkspaceAssignmentDetails() *cobra.Command { + cmd := &cobra.Command{} + + var listWorkspaceAssignmentDetailsReq iamv2.ListWorkspaceAssignmentDetailsRequest + + cmd.Flags().IntVar(&listWorkspaceAssignmentDetailsReq.PageSize, "page-size", listWorkspaceAssignmentDetailsReq.PageSize, `The maximum number of workspace assignment details to return.`) + cmd.Flags().StringVar(&listWorkspaceAssignmentDetailsReq.PageToken, "page-token", listWorkspaceAssignmentDetailsReq.PageToken, `A page token, received from a previous ListWorkspaceAssignmentDetails call.`) + + cmd.Use = "list-workspace-assignment-details WORKSPACE_ID" + cmd.Short = `List workspace assignment details for a workspace.` + cmd.Long = `List workspace assignment details for a workspace. + + Lists workspace assignment details for a workspace. + + Arguments: + WORKSPACE_ID: Required. The workspace ID for which the workspace assignment details are + being fetched.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + check := root.ExactArgs(1) + return check(cmd, args) + } + + cmd.PreRunE = root.MustAccountClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + a := cmdctx.AccountClient(ctx) + + _, err = fmt.Sscan(args[0], &listWorkspaceAssignmentDetailsReq.WorkspaceId) + if err != nil { + return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) + } + + response, err := a.IamV2.ListWorkspaceAssignmentDetails(ctx, listWorkspaceAssignmentDetailsReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range listWorkspaceAssignmentDetailsOverrides { + fn(cmd, &listWorkspaceAssignmentDetailsReq) + } + + return cmd +} + // start resolve-group command // Slice with functions to override default command behavior. @@ -388,4 +716,119 @@ Resolve an external user in the Databricks account. return cmd } +// start update-workspace-assignment-detail command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var updateWorkspaceAssignmentDetailOverrides []func( + *cobra.Command, + *iamv2.UpdateWorkspaceAssignmentDetailRequest, +) + +func newUpdateWorkspaceAssignmentDetail() *cobra.Command { + cmd := &cobra.Command{} + + var updateWorkspaceAssignmentDetailReq iamv2.UpdateWorkspaceAssignmentDetailRequest + updateWorkspaceAssignmentDetailReq.WorkspaceAssignmentDetail = iamv2.WorkspaceAssignmentDetail{} + var updateWorkspaceAssignmentDetailJson flags.JsonFlag + + cmd.Flags().Var(&updateWorkspaceAssignmentDetailJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + // TODO: array: entitlements + + cmd.Use = "update-workspace-assignment-detail WORKSPACE_ID PRINCIPAL_ID UPDATE_MASK PRINCIPAL_ID" + cmd.Short = `Update a workspace assignment detail.` + cmd.Long = `Update a workspace assignment detail. + + Updates the entitlements of a directly assigned principal in a workspace. + Entitlement changes are applied individually and non-atomically — if a + failure occurs partway through, only a subset of the requested changes may + have been applied. Use GetWorkspaceAssignmentDetail to confirm the final + state. + + Arguments: + WORKSPACE_ID: Required. The workspace ID for which the workspace assignment detail is + being updated. + PRINCIPAL_ID: Required. ID of the principal in Databricks. + UPDATE_MASK: Required. The list of fields to update. + PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + if cmd.Flags().Changed("json") { + err := root.ExactArgs(3)(cmd, args) + if err != nil { + return fmt.Errorf("when --json flag is specified, provide only WORKSPACE_ID, PRINCIPAL_ID, UPDATE_MASK as positional arguments. Provide 'principal_id' in your JSON input") + } + return nil + } + check := root.ExactArgs(4) + return check(cmd, args) + } + + cmd.PreRunE = root.MustAccountClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + a := cmdctx.AccountClient(ctx) + + if cmd.Flags().Changed("json") { + diags := updateWorkspaceAssignmentDetailJson.Unmarshal(&updateWorkspaceAssignmentDetailReq.WorkspaceAssignmentDetail) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + _, err = fmt.Sscan(args[0], &updateWorkspaceAssignmentDetailReq.WorkspaceId) + if err != nil { + return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) + } + + _, err = fmt.Sscan(args[1], &updateWorkspaceAssignmentDetailReq.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) + } + + if args[2] != "" { + updateMaskArray := strings.Split(args[2], ",") + updateWorkspaceAssignmentDetailReq.UpdateMask = *fieldmask.New(updateMaskArray) + } + if !cmd.Flags().Changed("json") { + _, err = fmt.Sscan(args[3], &updateWorkspaceAssignmentDetailReq.WorkspaceAssignmentDetail.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[3]) + } + + } + + response, err := a.IamV2.UpdateWorkspaceAssignmentDetail(ctx, updateWorkspaceAssignmentDetailReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range updateWorkspaceAssignmentDetailOverrides { + fn(cmd, &updateWorkspaceAssignmentDetailReq) + } + + return cmd +} + // end service AccountIamV2 diff --git a/cmd/account/settings-v2/settings-v2.go b/cmd/account/settings-v2/settings-v2.go index 7e6a042e83a..c42665912dd 100755 --- a/cmd/account/settings-v2/settings-v2.go +++ b/cmd/account/settings-v2/settings-v2.go @@ -349,18 +349,22 @@ func newPatchPublicAccountSetting() *cobra.Command { // TODO: complex arg: aibi_dashboard_embedding_access_policy // TODO: complex arg: aibi_dashboard_embedding_approved_domains + // TODO: complex arg: allowed_apps_user_api_scopes // TODO: complex arg: automatic_cluster_update_workspace // TODO: complex arg: boolean_val // TODO: complex arg: effective_aibi_dashboard_embedding_access_policy // TODO: complex arg: effective_aibi_dashboard_embedding_approved_domains + // TODO: complex arg: effective_allowed_apps_user_api_scopes // TODO: complex arg: effective_automatic_cluster_update_workspace // TODO: complex arg: effective_boolean_val // TODO: complex arg: effective_integer_val + // TODO: complex arg: effective_operational_email_custom_recipient // TODO: complex arg: effective_personal_compute // TODO: complex arg: effective_restrict_workspace_admins // TODO: complex arg: effective_string_val // TODO: complex arg: integer_val cmd.Flags().StringVar(&patchPublicAccountSettingReq.Setting.Name, "name", patchPublicAccountSettingReq.Setting.Name, `Name of the setting.`) + // TODO: complex arg: operational_email_custom_recipient // TODO: complex arg: personal_compute // TODO: complex arg: restrict_workspace_admins // TODO: complex arg: string_val diff --git a/cmd/workspace/experiments/experiments.go b/cmd/workspace/experiments/experiments.go index 23b9176cba7..6875a03b588 100755 --- a/cmd/workspace/experiments/experiments.go +++ b/cmd/workspace/experiments/experiments.go @@ -117,6 +117,8 @@ func newCreateExperiment() *cobra.Command { exists. Throws RESOURCE_ALREADY_EXISTS if an experiment with the given name exists. + Note: In some contexts, this error may be remapped to ALREADY_EXISTS. To be + safe, clients should check for both error codes. Arguments: NAME: Experiment name.` diff --git a/cmd/workspace/feature-engineering/feature-engineering.go b/cmd/workspace/feature-engineering/feature-engineering.go index fe4c98e74dc..a9d665fc17b 100755 --- a/cmd/workspace/feature-engineering/feature-engineering.go +++ b/cmd/workspace/feature-engineering/feature-engineering.go @@ -93,7 +93,9 @@ func newCreateFeature() *cobra.Command { Create a Feature. Arguments: - FULL_NAME: The full three-part name (catalog, schema, name) of the feature. + FULL_NAME: The full three-part name (catalog, schema, name) of the feature. This is + the feature's resource identifier; the catalog_name, schema_name, and name + fields below are OUTPUT_ONLY decomposed views of this value. SOURCE: The data source of the feature. FUNCTION: The function by which the feature is computed.` @@ -747,18 +749,22 @@ func newListFeatures() *cobra.Command { cmd.Flags().StringVar(&listFeaturesReq.PageToken, "page-token", listFeaturesReq.PageToken, `Pagination token.`) cmd.Flags().Lookup("page-token").Hidden = true - cmd.Use = "list-features" + cmd.Use = "list-features CATALOG_NAME SCHEMA_NAME" cmd.Short = `List features.` cmd.Long = `List features. - List Features.` + List Features. + + Arguments: + CATALOG_NAME: Name of parent catalog for features of interest. + SCHEMA_NAME: Name of parent schema relative to its parent catalog.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" cmd.Annotations["launch_stage_display"] = "Private Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(0) + check := root.ExactArgs(2) return check(cmd, args) } @@ -767,6 +773,9 @@ func newListFeatures() *cobra.Command { ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) + listFeaturesReq.CatalogName = args[0] + listFeaturesReq.SchemaName = args[1] + response := w.FeatureEngineering.ListFeatures(ctx, listFeaturesReq) if listFeaturesLimit < 0 { return fmt.Errorf("--limit must be a non-negative integer, got %d", listFeaturesLimit) @@ -964,7 +973,9 @@ func newUpdateFeature() *cobra.Command { Update a Feature. Arguments: - FULL_NAME: The full three-part name (catalog, schema, name) of the feature. + FULL_NAME: The full three-part name (catalog, schema, name) of the feature. This is + the feature's resource identifier; the catalog_name, schema_name, and name + fields below are OUTPUT_ONLY decomposed views of this value. UPDATE_MASK: The list of fields to update. SOURCE: The data source of the feature. FUNCTION: The function by which the feature is computed.` diff --git a/cmd/workspace/postgres/postgres.go b/cmd/workspace/postgres/postgres.go index 5367e36f3f3..715265c8a76 100755 --- a/cmd/workspace/postgres/postgres.go +++ b/cmd/workspace/postgres/postgres.go @@ -1743,9 +1743,8 @@ func newGenerateDatabaseCredential() *cobra.Command { Generate OAuth credentials for a Postgres database. Arguments: - ENDPOINT: This field is not yet supported. The endpoint for which this credential - will be generated. Format: - projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id}` + ENDPOINT: The endpoint resource name for which this credential will be generated. + Format: projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -2708,8 +2707,10 @@ func newUndeleteProject() *cobra.Command { cmd.Flags().DurationVar(&undeleteProjectTimeout, "timeout", 0, `maximum amount of time to reach DONE state`) cmd.Use = "undelete-project NAME" - cmd.Short = `Undelete a Project.` - cmd.Long = `Undelete a Project. + cmd.Short = `*Beta* Undelete a Project.` + cmd.Long = `This command is in Beta and may change without notice. + +Undelete a Project. Undeletes a soft-deleted project. @@ -2722,12 +2723,9 @@ func newUndeleteProject() *cobra.Command { NAME: The full resource path of the project to undelete. Format: projects/{project_id}` - // This command is being previewed; hide from help output. - cmd.Hidden = true - cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Private Preview" + cmd.Annotations["launch_stage"] = "PUBLIC_BETA" + cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) diff --git a/cmd/workspace/supervisor-agents/supervisor-agents.go b/cmd/workspace/supervisor-agents/supervisor-agents.go index afad5cbe5e0..b8a654de92a 100755 --- a/cmd/workspace/supervisor-agents/supervisor-agents.go +++ b/cmd/workspace/supervisor-agents/supervisor-agents.go @@ -287,8 +287,10 @@ Create a Tool. Creates a Tool under a Supervisor Agent. Specify one of "genie_space", "knowledge_assistant", "uc_function", "uc_connection", "app", "volume", - "lakeview_dashboard", "uc_table", "vector_search_index", "catalog", "schema", - "supervisor_agent", "web_search" in the request body. + "dashboard", "table", "vector_search_index", "catalog", "schema", + "supervisor_agent", "web_search" in the request body. The legacy values + "lakeview_dashboard" and "uc_table" are also accepted and remain equivalent to + "dashboard" and "table" respectively. Arguments: PARENT: Parent resource where this tool will be created. Format: @@ -296,9 +298,11 @@ Create a Tool. TOOL_ID: The ID to use for the tool, which will become the final component of the tool's resource name. TOOL_TYPE: Tool type. Must be one of: "genie_space", "knowledge_assistant", - "uc_function", "uc_connection", "app", "volume", "lakeview_dashboard", - "serving_endpoint", "uc_table", "vector_search_index", "catalog", - "schema", "supervisor_agent", "web_search".` + "uc_function", "uc_connection", "app", "volume", "dashboard", + "serving_endpoint", "table", "vector_search_index", "catalog", "schema", + "supervisor_agent", "web_search". The legacy values "lakeview_dashboard" + and "uc_table" are also accepted and remain equivalent to "dashboard" and + "table" respectively.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1484,9 +1488,11 @@ Update a Tool. supervisor-agents/{supervisor_agent_id}/tools/{tool_id} UPDATE_MASK: Field mask for fields to be updated. TOOL_TYPE: Tool type. Must be one of: "genie_space", "knowledge_assistant", - "uc_function", "uc_connection", "app", "volume", "lakeview_dashboard", - "serving_endpoint", "uc_table", "vector_search_index", "catalog", - "schema", "supervisor_agent", "web_search".` + "uc_function", "uc_connection", "app", "volume", "dashboard", + "serving_endpoint", "table", "vector_search_index", "catalog", "schema", + "supervisor_agent", "web_search". The legacy values "lakeview_dashboard" + and "uc_table" are also accepted and remain equivalent to "dashboard" and + "table" respectively.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" diff --git a/cmd/workspace/temporary-path-credentials/temporary-path-credentials.go b/cmd/workspace/temporary-path-credentials/temporary-path-credentials.go index a6a77d6c72f..a8abcf57ad7 100755 --- a/cmd/workspace/temporary-path-credentials/temporary-path-credentials.go +++ b/cmd/workspace/temporary-path-credentials/temporary-path-credentials.go @@ -37,18 +37,16 @@ Temporary Path Credentials refer to short-lived, downscoped credentials used temporary path credentials API, a metastore admin needs to enable the external_access_enabled flag (off by default) at the metastore level. A user needs to be granted the EXTERNAL USE LOCATION permission by external location - owner. For requests on existing external tables, user also needs to be granted - the EXTERNAL USE SCHEMA permission at the schema level by catalog owner. + owner. For requests on existing external tables and external volumes, user + also needs to be granted the EXTERNAL USE SCHEMA permission at the schema + level by catalog owner. Note that EXTERNAL USE SCHEMA is a schema level permission that can only be granted by catalog owner explicitly and is not included in schema ownership or ALL PRIVILEGES on the schema for security reasons. Similarly, EXTERNAL USE LOCATION is an external location level permission that can only be granted by external location owner explicitly and is not included in external location - ownership or ALL PRIVILEGES on the external location for security reasons. - - This API only supports temporary path credentials for external locations and - external tables, and volumes will be supported in the future.`, + ownership or ALL PRIVILEGES on the external location for security reasons.`, GroupID: "catalog", RunE: root.ReportUnknownSubcommand, } diff --git a/cmd/workspace/temporary-volume-credentials/temporary-volume-credentials.go b/cmd/workspace/temporary-volume-credentials/temporary-volume-credentials.go index d3ed061d399..1afe54d31f5 100755 --- a/cmd/workspace/temporary-volume-credentials/temporary-volume-credentials.go +++ b/cmd/workspace/temporary-volume-credentials/temporary-volume-credentials.go @@ -18,8 +18,10 @@ var cmdOverrides []func(*cobra.Command) func New() *cobra.Command { cmd := &cobra.Command{ Use: "temporary-volume-credentials", - Short: `Temporary Volume Credentials refer to short-lived, downscoped credentials used to access cloud storage locations where volume data is stored in Databricks.`, - Long: `Temporary Volume Credentials refer to short-lived, downscoped credentials used + Short: `*Public Preview* Temporary Volume Credentials refer to short-lived, downscoped credentials used to access cloud storage locations where volume data is stored in Databricks.`, + Long: `This command is in Public Preview and may change without notice. + +Temporary Volume Credentials refer to short-lived, downscoped credentials used to access cloud storage locations where volume data is stored in Databricks. These credentials are employed to provide secure and time-limited access to data in cloud environments such as AWS, Azure, and Google Cloud. Each cloud @@ -37,15 +39,12 @@ func New() *cobra.Command { can only be granted by catalog owner explicitly and is not included in schema ownership or ALL PRIVILEGES on the schema for security reasons.`, GroupID: "catalog", - - // This service is being previewed; hide from help output. - Hidden: true, - RunE: root.ReportUnknownSubcommand, + RunE: root.ReportUnknownSubcommand, } cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Private Preview" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" // Add methods cmd.AddCommand(newGenerateTemporaryVolumeCredentials()) @@ -79,8 +78,10 @@ func newGenerateTemporaryVolumeCredentials() *cobra.Command { cmd.Flags().StringVar(&generateTemporaryVolumeCredentialsReq.VolumeId, "volume-id", generateTemporaryVolumeCredentialsReq.VolumeId, `Id of the volume to read or write.`) cmd.Use = "generate-temporary-volume-credentials" - cmd.Short = `Generate a temporary volume credential.` - cmd.Long = `Generate a temporary volume credential. + cmd.Short = `*Public Preview* Generate a temporary volume credential.` + cmd.Long = `This command is in Public Preview and may change without notice. + +Generate a temporary volume credential. Get a short-lived credential for directly accessing the volume data on cloud storage. The metastore must have **external_access_enabled** flag set to true @@ -88,8 +89,8 @@ func newGenerateTemporaryVolumeCredentials() *cobra.Command { the parent schema and this privilege can only be granted by catalog owners.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Private Preview" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(0) diff --git a/cmd/workspace/vector-search-endpoints/vector-search-endpoints.go b/cmd/workspace/vector-search-endpoints/vector-search-endpoints.go index 455a61586ac..9342d2999d0 100755 --- a/cmd/workspace/vector-search-endpoints/vector-search-endpoints.go +++ b/cmd/workspace/vector-search-endpoints/vector-search-endpoints.go @@ -21,8 +21,8 @@ var cmdOverrides []func(*cobra.Command) func New() *cobra.Command { cmd := &cobra.Command{ Use: "vector-search-endpoints", - Short: `**Endpoint**: Represents the compute resources to host vector search indexes.`, - Long: `**Endpoint**: Represents the compute resources to host vector search indexes.`, + Short: `**Endpoint**: Represents the compute resources to host AI Search indexes.`, + Long: `**Endpoint**: Represents the compute resources to host AI Search indexes.`, GroupID: "vectorsearch", RunE: root.ReportUnknownSubcommand, } @@ -87,7 +87,7 @@ func newCreateEndpoint() *cobra.Command { Create a new endpoint. Arguments: - NAME: Name of the vector search endpoint + NAME: Name of the AI Search endpoint ENDPOINT_TYPE: Type of endpoint Supported values: [STANDARD, STORAGE_OPTIMIZED]` @@ -191,10 +191,10 @@ func newDeleteEndpoint() *cobra.Command { cmd.Short = `Delete an endpoint.` cmd.Long = `Delete an endpoint. - Delete a vector search endpoint. + Delete an AI Search endpoint. Arguments: - ENDPOINT_NAME: Name of the vector search endpoint` + ENDPOINT_NAME: Name of the AI Search endpoint` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "GA" @@ -249,7 +249,7 @@ func newGetEndpoint() *cobra.Command { cmd.Short = `Get an endpoint.` cmd.Long = `Get an endpoint. - Get details for a single vector search endpoint. + Get details for a single AI Search endpoint. Arguments: ENDPOINT_NAME: Name of the endpoint` @@ -438,7 +438,7 @@ func newListEndpoints() *cobra.Command { cmd.Short = `List all endpoints.` cmd.Long = `List all endpoints. - List all vector search endpoints in the workspace.` + List all AI Search endpoints in the workspace.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "GA" @@ -505,7 +505,7 @@ Update an endpoint. Update an endpoint Arguments: - ENDPOINT_NAME: Name of the vector search endpoint` + ENDPOINT_NAME: Name of the AI Search endpoint` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" @@ -585,7 +585,7 @@ func newRetrieveUserVisibleMetrics() *cobra.Command { Retrieve user-visible metrics for an endpoint Arguments: - NAME: Vector search endpoint name` + NAME: AI Search endpoint name` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "GA" @@ -739,7 +739,7 @@ Update the budget policy of an endpoint. Update the budget policy of an endpoint Arguments: - ENDPOINT_NAME: Name of the vector search endpoint + ENDPOINT_NAME: Name of the AI Search endpoint BUDGET_POLICY_ID: The budget policy id to be applied` cmd.Annotations = make(map[string]string) @@ -822,7 +822,7 @@ func newUpdateEndpointCustomTags() *cobra.Command { cmd.Long = `Update the custom tags of an endpoint. Arguments: - ENDPOINT_NAME: Name of the vector search endpoint` + ENDPOINT_NAME: Name of the AI Search endpoint` // This command is being previewed; hide from help output. cmd.Hidden = true diff --git a/cmd/workspace/vector-search-indexes/vector-search-indexes.go b/cmd/workspace/vector-search-indexes/vector-search-indexes.go index 87dc851c222..53b5c250716 100755 --- a/cmd/workspace/vector-search-indexes/vector-search-indexes.go +++ b/cmd/workspace/vector-search-indexes/vector-search-indexes.go @@ -24,12 +24,12 @@ func New() *cobra.Command { Long: `**Index**: An efficient representation of your embedding vectors that supports real-time and efficient approximate nearest neighbor (ANN) search queries. - There are 2 types of Vector Search indexes: - **Delta Sync Index**: An index - that automatically syncs with a source Delta Table, automatically and - incrementally updating the index as the underlying data in the Delta Table - changes. - **Direct Vector Access Index**: An index that supports direct read - and write of vectors and metadata through our REST and SDK APIs. With this - model, the user manages index updates.`, + There are 2 types of AI Search indexes: - **Delta Sync Index**: An index that + automatically syncs with a source Delta Table, automatically and incrementally + updating the index as the underlying data in the Delta Table changes. - + **Direct Vector Access Index**: An index that supports direct read and write + of vectors and metadata through our REST and SDK APIs. With this model, the + user manages index updates.`, GroupID: "vectorsearch", RunE: root.ReportUnknownSubcommand, } diff --git a/cmd/workspace/workspace-iam-v2/workspace-iam-v2.go b/cmd/workspace/workspace-iam-v2/workspace-iam-v2.go index 48402a61c70..f46706976cf 100755 --- a/cmd/workspace/workspace-iam-v2/workspace-iam-v2.go +++ b/cmd/workspace/workspace-iam-v2/workspace-iam-v2.go @@ -4,11 +4,13 @@ package workspace_iam_v2 import ( "fmt" + "strings" "github.com/databricks/cli/cmd/root" "github.com/databricks/cli/libs/cmdctx" "github.com/databricks/cli/libs/cmdio" "github.com/databricks/cli/libs/flags" + "github.com/databricks/databricks-sdk-go/common/types/fieldmask" "github.com/databricks/databricks-sdk-go/service/iamv2" "github.com/spf13/cobra" ) @@ -34,10 +36,15 @@ These APIs are used to manage identities and the workspace access of these cmd.Annotations["launch_stage_display"] = "Beta" // Add methods + cmd.AddCommand(newCreateWorkspaceAssignmentDetailProxy()) + cmd.AddCommand(newDeleteWorkspaceAssignmentDetailProxy()) cmd.AddCommand(newGetWorkspaceAccessDetailLocal()) + cmd.AddCommand(newGetWorkspaceAssignmentDetailProxy()) + cmd.AddCommand(newListWorkspaceAssignmentDetailsProxy()) cmd.AddCommand(newResolveGroupProxy()) cmd.AddCommand(newResolveServicePrincipalProxy()) cmd.AddCommand(newResolveUserProxy()) + cmd.AddCommand(newUpdateWorkspaceAssignmentDetailProxy()) // Apply optional overrides to this command. for _, fn := range cmdOverrides { @@ -47,6 +54,173 @@ These APIs are used to manage identities and the workspace access of these return cmd } +// start create-workspace-assignment-detail-proxy command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var createWorkspaceAssignmentDetailProxyOverrides []func( + *cobra.Command, + *iamv2.CreateWorkspaceAssignmentDetailProxyRequest, +) + +func newCreateWorkspaceAssignmentDetailProxy() *cobra.Command { + cmd := &cobra.Command{} + + var createWorkspaceAssignmentDetailProxyReq iamv2.CreateWorkspaceAssignmentDetailProxyRequest + createWorkspaceAssignmentDetailProxyReq.WorkspaceAssignmentDetail = iamv2.WorkspaceAssignmentDetail{} + var createWorkspaceAssignmentDetailProxyJson flags.JsonFlag + + cmd.Flags().Var(&createWorkspaceAssignmentDetailProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + // TODO: array: entitlements + + cmd.Use = "create-workspace-assignment-detail-proxy PRINCIPAL_ID" + cmd.Short = `Create a workspace assignment detail for a workspace.` + cmd.Long = `Create a workspace assignment detail for a workspace. + + Creates a workspace assignment detail for a principal (workspace-level proxy). + Entitlement grants are applied individually and non-atomically — if a + failure occurs partway through, the principal will be assigned to the + workspace but with only a subset of the requested entitlements. Use + GetWorkspaceAssignmentDetail to confirm which entitlements were successfully + granted. + + Arguments: + PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + if cmd.Flags().Changed("json") { + err := root.ExactArgs(0)(cmd, args) + if err != nil { + return fmt.Errorf("when --json flag is specified, no positional arguments are allowed. Provide 'principal_id' in your JSON input") + } + return nil + } + check := root.ExactArgs(1) + return check(cmd, args) + } + + cmd.PreRunE = root.MustWorkspaceClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + w := cmdctx.WorkspaceClient(ctx) + + if cmd.Flags().Changed("json") { + diags := createWorkspaceAssignmentDetailProxyJson.Unmarshal(&createWorkspaceAssignmentDetailProxyReq.WorkspaceAssignmentDetail) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + if !cmd.Flags().Changed("json") { + _, err = fmt.Sscan(args[0], &createWorkspaceAssignmentDetailProxyReq.WorkspaceAssignmentDetail.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) + } + + } + + response, err := w.WorkspaceIamV2.CreateWorkspaceAssignmentDetailProxy(ctx, createWorkspaceAssignmentDetailProxyReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range createWorkspaceAssignmentDetailProxyOverrides { + fn(cmd, &createWorkspaceAssignmentDetailProxyReq) + } + + return cmd +} + +// start delete-workspace-assignment-detail-proxy command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var deleteWorkspaceAssignmentDetailProxyOverrides []func( + *cobra.Command, + *iamv2.DeleteWorkspaceAssignmentDetailProxyRequest, +) + +func newDeleteWorkspaceAssignmentDetailProxy() *cobra.Command { + cmd := &cobra.Command{} + + var deleteWorkspaceAssignmentDetailProxyReq iamv2.DeleteWorkspaceAssignmentDetailProxyRequest + + cmd.Use = "delete-workspace-assignment-detail-proxy PRINCIPAL_ID" + cmd.Short = `Delete a workspace assignment detail for a workspace.` + cmd.Long = `Delete a workspace assignment detail for a workspace. + + Deletes a workspace assignment detail for a principal (workspace-level proxy), + revoking all associated entitlements. Entitlement revocations are applied + individually and non-atomically — if a failure occurs partway through, the + principal remains assigned with a subset of its original entitlements, and the + operation is safe to retry. + + Arguments: + PRINCIPAL_ID: Required. ID of the principal in Databricks to delete workspace assignment + for.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + check := root.ExactArgs(1) + return check(cmd, args) + } + + cmd.PreRunE = root.MustWorkspaceClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + w := cmdctx.WorkspaceClient(ctx) + + _, err = fmt.Sscan(args[0], &deleteWorkspaceAssignmentDetailProxyReq.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) + } + + err = w.WorkspaceIamV2.DeleteWorkspaceAssignmentDetailProxy(ctx, deleteWorkspaceAssignmentDetailProxyReq) + if err != nil { + return err + } + return nil + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range deleteWorkspaceAssignmentDetailProxyOverrides { + fn(cmd, &deleteWorkspaceAssignmentDetailProxyReq) + } + + return cmd +} + // start get-workspace-access-detail-local command // Slice with functions to override default command behavior. @@ -119,6 +293,133 @@ Get workspace access details for a principal. return cmd } +// start get-workspace-assignment-detail-proxy command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var getWorkspaceAssignmentDetailProxyOverrides []func( + *cobra.Command, + *iamv2.GetWorkspaceAssignmentDetailProxyRequest, +) + +func newGetWorkspaceAssignmentDetailProxy() *cobra.Command { + cmd := &cobra.Command{} + + var getWorkspaceAssignmentDetailProxyReq iamv2.GetWorkspaceAssignmentDetailProxyRequest + + cmd.Use = "get-workspace-assignment-detail-proxy PRINCIPAL_ID" + cmd.Short = `Get workspace assignment details for a principal.` + cmd.Long = `Get workspace assignment details for a principal. + + Returns the assignment details for a principal in a workspace (workspace-level + proxy). + + Arguments: + PRINCIPAL_ID: Required. The internal ID of the principal (user/sp/group) for which the + assignment details are being requested.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + check := root.ExactArgs(1) + return check(cmd, args) + } + + cmd.PreRunE = root.MustWorkspaceClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + w := cmdctx.WorkspaceClient(ctx) + + _, err = fmt.Sscan(args[0], &getWorkspaceAssignmentDetailProxyReq.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) + } + + response, err := w.WorkspaceIamV2.GetWorkspaceAssignmentDetailProxy(ctx, getWorkspaceAssignmentDetailProxyReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range getWorkspaceAssignmentDetailProxyOverrides { + fn(cmd, &getWorkspaceAssignmentDetailProxyReq) + } + + return cmd +} + +// start list-workspace-assignment-details-proxy command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var listWorkspaceAssignmentDetailsProxyOverrides []func( + *cobra.Command, + *iamv2.ListWorkspaceAssignmentDetailsProxyRequest, +) + +func newListWorkspaceAssignmentDetailsProxy() *cobra.Command { + cmd := &cobra.Command{} + + var listWorkspaceAssignmentDetailsProxyReq iamv2.ListWorkspaceAssignmentDetailsProxyRequest + + cmd.Flags().IntVar(&listWorkspaceAssignmentDetailsProxyReq.PageSize, "page-size", listWorkspaceAssignmentDetailsProxyReq.PageSize, `The maximum number of workspace assignment details to return.`) + cmd.Flags().StringVar(&listWorkspaceAssignmentDetailsProxyReq.PageToken, "page-token", listWorkspaceAssignmentDetailsProxyReq.PageToken, `A page token, received from a previous ListWorkspaceAssignmentDetailsProxy call.`) + + cmd.Use = "list-workspace-assignment-details-proxy" + cmd.Short = `List workspace assignment details for a workspace.` + cmd.Long = `List workspace assignment details for a workspace. + + Lists workspace assignment details for a workspace (workspace-level proxy).` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + check := root.ExactArgs(0) + return check(cmd, args) + } + + cmd.PreRunE = root.MustWorkspaceClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + w := cmdctx.WorkspaceClient(ctx) + + response, err := w.WorkspaceIamV2.ListWorkspaceAssignmentDetailsProxy(ctx, listWorkspaceAssignmentDetailsProxyReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range listWorkspaceAssignmentDetailsProxyOverrides { + fn(cmd, &listWorkspaceAssignmentDetailsProxyReq) + } + + return cmd +} + // start resolve-group-proxy command // Slice with functions to override default command behavior. @@ -381,4 +682,112 @@ Resolve an external user in the Databricks account. return cmd } +// start update-workspace-assignment-detail-proxy command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var updateWorkspaceAssignmentDetailProxyOverrides []func( + *cobra.Command, + *iamv2.UpdateWorkspaceAssignmentDetailProxyRequest, +) + +func newUpdateWorkspaceAssignmentDetailProxy() *cobra.Command { + cmd := &cobra.Command{} + + var updateWorkspaceAssignmentDetailProxyReq iamv2.UpdateWorkspaceAssignmentDetailProxyRequest + updateWorkspaceAssignmentDetailProxyReq.WorkspaceAssignmentDetail = iamv2.WorkspaceAssignmentDetail{} + var updateWorkspaceAssignmentDetailProxyJson flags.JsonFlag + + cmd.Flags().Var(&updateWorkspaceAssignmentDetailProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + // TODO: array: entitlements + + cmd.Use = "update-workspace-assignment-detail-proxy PRINCIPAL_ID UPDATE_MASK PRINCIPAL_ID" + cmd.Short = `Update a workspace assignment detail for a workspace.` + cmd.Long = `Update a workspace assignment detail for a workspace. + + Updates the entitlements of a directly assigned principal in a workspace + (workspace-level proxy). Entitlement changes are applied individually and + non-atomically — if a failure occurs partway through, only a subset of the + requested changes may have been applied. Use GetWorkspaceAssignmentDetail to + confirm the final state. + + Arguments: + PRINCIPAL_ID: Required. ID of the principal in Databricks. + UPDATE_MASK: Required. The list of fields to update. + PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks.` + + // This command is being previewed; hide from help output. + cmd.Hidden = true + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + if cmd.Flags().Changed("json") { + err := root.ExactArgs(2)(cmd, args) + if err != nil { + return fmt.Errorf("when --json flag is specified, provide only PRINCIPAL_ID, UPDATE_MASK as positional arguments. Provide 'principal_id' in your JSON input") + } + return nil + } + check := root.ExactArgs(3) + return check(cmd, args) + } + + cmd.PreRunE = root.MustWorkspaceClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + w := cmdctx.WorkspaceClient(ctx) + + if cmd.Flags().Changed("json") { + diags := updateWorkspaceAssignmentDetailProxyJson.Unmarshal(&updateWorkspaceAssignmentDetailProxyReq.WorkspaceAssignmentDetail) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + _, err = fmt.Sscan(args[0], &updateWorkspaceAssignmentDetailProxyReq.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) + } + + if args[1] != "" { + updateMaskArray := strings.Split(args[1], ",") + updateWorkspaceAssignmentDetailProxyReq.UpdateMask = *fieldmask.New(updateMaskArray) + } + if !cmd.Flags().Changed("json") { + _, err = fmt.Sscan(args[2], &updateWorkspaceAssignmentDetailProxyReq.WorkspaceAssignmentDetail.PrincipalId) + if err != nil { + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[2]) + } + + } + + response, err := w.WorkspaceIamV2.UpdateWorkspaceAssignmentDetailProxy(ctx, updateWorkspaceAssignmentDetailProxyReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range updateWorkspaceAssignmentDetailProxyOverrides { + fn(cmd, &updateWorkspaceAssignmentDetailProxyReq) + } + + return cmd +} + // end service WorkspaceIamV2 diff --git a/cmd/workspace/workspace-settings-v2/workspace-settings-v2.go b/cmd/workspace/workspace-settings-v2/workspace-settings-v2.go index 114b97882e0..64ceb60cedc 100755 --- a/cmd/workspace/workspace-settings-v2/workspace-settings-v2.go +++ b/cmd/workspace/workspace-settings-v2/workspace-settings-v2.go @@ -202,18 +202,22 @@ func newPatchPublicWorkspaceSetting() *cobra.Command { // TODO: complex arg: aibi_dashboard_embedding_access_policy // TODO: complex arg: aibi_dashboard_embedding_approved_domains + // TODO: complex arg: allowed_apps_user_api_scopes // TODO: complex arg: automatic_cluster_update_workspace // TODO: complex arg: boolean_val // TODO: complex arg: effective_aibi_dashboard_embedding_access_policy // TODO: complex arg: effective_aibi_dashboard_embedding_approved_domains + // TODO: complex arg: effective_allowed_apps_user_api_scopes // TODO: complex arg: effective_automatic_cluster_update_workspace // TODO: complex arg: effective_boolean_val // TODO: complex arg: effective_integer_val + // TODO: complex arg: effective_operational_email_custom_recipient // TODO: complex arg: effective_personal_compute // TODO: complex arg: effective_restrict_workspace_admins // TODO: complex arg: effective_string_val // TODO: complex arg: integer_val cmd.Flags().StringVar(&patchPublicWorkspaceSettingReq.Setting.Name, "name", patchPublicWorkspaceSettingReq.Setting.Name, `Name of the setting.`) + // TODO: complex arg: operational_email_custom_recipient // TODO: complex arg: personal_compute // TODO: complex arg: restrict_workspace_admins // TODO: complex arg: string_val diff --git a/go.mod b/go.mod index 0bb3109463e..e6d45612fbc 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/charmbracelet/huh v1.0.0 // MIT github.com/charmbracelet/lipgloss v1.1.0 // MIT github.com/charmbracelet/x/ansi v0.11.6 // MIT - github.com/databricks/databricks-sdk-go v0.132.0 // Apache-2.0 + github.com/databricks/databricks-sdk-go v0.134.0 // Apache-2.0 github.com/google/jsonschema-go v0.4.3 // MIT github.com/google/uuid v1.6.0 // BSD-3-Clause github.com/gorilla/websocket v1.5.3 // BSD-2-Clause diff --git a/go.sum b/go.sum index b89ad220399..0c76322739c 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22r github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= github.com/danieljoos/wincred v1.2.3/go.mod h1:6qqX0WNrS4RzPZ1tnroDzq9kY3fu1KwE7MRLQK4X0bs= -github.com/databricks/databricks-sdk-go v0.132.0 h1:NuwAMg7aSlMinINIv4iJDDGge426QptIOi2N6RC/k3k= -github.com/databricks/databricks-sdk-go v0.132.0/go.mod h1:C5LNgGe6hGuRrTwoxFmuup3XtQQEaqtq0e+K8IFDIS4= +github.com/databricks/databricks-sdk-go v0.134.0 h1:rq11iYhCl+Em3Wb4qoR1TCYd575U9rxhDESmhOLeVmA= +github.com/databricks/databricks-sdk-go v0.134.0/go.mod h1:C5LNgGe6hGuRrTwoxFmuup3XtQQEaqtq0e+K8IFDIS4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/internal/genkit/tagging.py b/internal/genkit/tagging.py old mode 100644 new mode 100755 index 021e730be07..a3897bbeedf --- a/internal/genkit/tagging.py +++ b/internal/genkit/tagging.py @@ -443,6 +443,18 @@ def get_previous_tag_info(package: Package) -> Optional[TagInfo]: return TagInfo(package=package, version=version, content=latest_release) +def _load_codegen_config() -> Dict: + """ + Loads ``.codegen.json`` from the repo root. Returns an empty dict when + the file is missing. + """ + package_file_path = os.path.join(os.getcwd(), CODEGEN_FILE_NAME) + if not os.path.exists(package_file_path): + return {} + with open(package_file_path, "r") as file: + return json.load(file) + + def get_next_tag_info(package: Package) -> Optional[TagInfo]: """ Extracts the changes from the "NEXT_CHANGELOG.md" file. @@ -461,7 +473,11 @@ def get_next_tag_info(package: Package) -> Optional[TagInfo]: # Ensure there is exactly one empty line before each section next_changelog = re.sub(r"(\n*)(###[^\n]+)", r"\n\n\2", next_changelog) - if not re.search(r"###", next_changelog): + # By default, packages whose NEXT_CHANGELOG.md has no populated + # sections are skipped — there's nothing meaningful to release. + # Repos like sdk-js which are still in development can opt in + # by setting ``allow_empty_changelog: true`` in .codegen.json. + if not re.search(r"###", next_changelog) and not _load_codegen_config().get("allow_empty_changelog", False): print("All sections are empty. No changes will be made to the changelog.") return None @@ -709,11 +725,11 @@ def generate_commit_message(tag_infos: List[TagInfo]) -> str: raise Exception("Multiple packages found in legacy mode") return f"[Release] Release v{info.version}\n\n{info.content}" - # Sort tag_infos by package name for consistency + # Sort tag_infos by package name for consistency. tag_infos.sort(key=lambda info: info.package.name) - return "Release\n\n" + "\n\n".join( - f"## {info.package.name}/v{info.version}\n\n{info.content}" for info in tag_infos - ) + titles = ", ".join(f"{info.package.name}/v{info.version}" for info in tag_infos) + body = "\n\n".join(f"## {info.package.name}/v{info.version}\n\n{info.content}" for info in tag_infos) + return f"[Release] {titles}\n\n{body}" def push_changes(tag_infos: List[TagInfo]) -> None: @@ -816,10 +832,82 @@ def preview_tag_infos(packages: List[Package]) -> List[TagInfo]: return [info for info in (get_next_tag_info(package) for package in packages) if info is not None] +def order_tag_infos_by_dependency(tag_infos: List[TagInfo]) -> List[TagInfo]: + """ + Returns ``tag_infos`` in topological order: every package appears + after every sibling it depends on. + """ + if not tag_infos: + return list(tag_infos) + + if any(not info.package.name for info in tag_infos) and len(tag_infos) > 1: + raise Exception("Multiple packages found in legacy mode") + + package_file_path = os.path.join(os.getcwd(), CODEGEN_FILE_NAME) + with open(package_file_path, "r") as file: + codegen = json.load(file) + + name_template = codegen.get("dependency_name_template", "") + dep_patterns = codegen.get("dependency_pattern", {}) + if not name_template or not dep_patterns: + return list(tag_infos) + + by_dep_name: Dict[str, TagInfo] = { + name_template.replace("$PACKAGE", info.package.name): info for info in tag_infos if info.package.name + } + + # Adjacency: path -> set of paths it depends on (within tag_infos). + deps: Dict[str, set] = {info.package.path: set() for info in tag_infos} + for info in tag_infos: + for filename, pattern in dep_patterns.items(): + loc = os.path.join(os.getcwd(), info.package.path, filename) + if not os.path.exists(loc): + continue + with open(loc, "r") as f: + content = f.read() + for dep_name, dep_info in by_dep_name.items(): + if dep_info.package.path == info.package.path: + continue + regex = ( + re.escape(pattern) + .replace(re.escape("$DEPENDENCY"), re.escape(dep_name)) + .replace(re.escape("$VERSION"), Version.PATTERN) + ) + if re.search(regex, content): + deps[info.package.path].add(dep_info.package.path) + + # Stable topological sort: at each step, emit every node whose deps + # are already emitted, alphabetically by package name. Ties broken + # alphabetically so the manifest is reproducible across runs. + emitted: set = set() + ordered: List[TagInfo] = [] + while len(ordered) < len(tag_infos): + ready = sorted( + ( + info + for info in tag_infos + if info.package.path not in emitted and deps[info.package.path].issubset(emitted) + ), + key=lambda info: info.package.name, + ) + if not ready: + remaining = [info.package.name for info in tag_infos if info.package.path not in emitted] + raise Exception(f"Cyclic dependency detected among packages: {remaining}") + for info in ready: + ordered.append(info) + emitted.add(info.package.path) + return ordered + + def push_tags(tag_infos: List[TagInfo]) -> None: """ Creates and pushes tags to the repository. + Tags are emitted in topological order — dependencies before + dependents — so downstream publishing pipelines reading + ``created_tags.json`` can walk it sequentially without re-deriving + the dependency graph. See ``order_tag_infos_by_dependency``. + As a side effect, writes the names of successfully created tags to ``./created_tags.json`` so that workflows triggering this script can discover what was produced (the GitHub Actions workflow uploads this @@ -833,6 +921,7 @@ def push_tags(tag_infos: List[TagInfo]) -> None: exception is re-raised, so recovery-mode runs still surface their output. """ + tag_infos = order_tag_infos_by_dependency(tag_infos) created: List[str] = [] try: for tag_info in tag_infos: diff --git a/internal/genkit/tagging.py.lock b/internal/genkit/tagging.py.lock index d680b187f5b..2bd746a66c2 100644 --- a/internal/genkit/tagging.py.lock +++ b/internal/genkit/tagging.py.lock @@ -12,7 +12,7 @@ requirements = [ [[package]] name = "certifi" version = "2026.2.25" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, @@ -21,7 +21,7 @@ wheels = [ [[package]] name = "cffi" version = "2.0.0" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } dependencies = [ { name = "pycparser", marker = "implementation_name != 'PyPy'" }, ] @@ -78,7 +78,7 @@ wheels = [ [[package]] name = "charset-normalizer" version = "3.4.5" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9c/b6/9ee9c1a608916ca5feae81a344dffbaa53b26b90be58cc2159e3332d44ec/charset_normalizer-3.4.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed97c282ee4f994ef814042423a529df9497e3c666dca19be1d4cd1129dc7ade", size = 280976, upload-time = "2026-03-06T06:01:15.276Z" }, @@ -135,7 +135,7 @@ wheels = [ [[package]] name = "cryptography" version = "46.0.5" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] @@ -188,7 +188,7 @@ wheels = [ [[package]] name = "idna" version = "3.11" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, @@ -197,7 +197,7 @@ wheels = [ [[package]] name = "pycparser" version = "3.0" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, @@ -206,7 +206,7 @@ wheels = [ [[package]] name = "pygithub" version = "2.8.1" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } dependencies = [ { name = "pyjwt", extra = ["crypto"] }, { name = "pynacl" }, @@ -222,7 +222,7 @@ wheels = [ [[package]] name = "pyjwt" version = "2.11.0" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } sdist = { url = "https://files.pythonhosted.org/packages/5c/5a/b46fa56bf322901eee5b0454a34343cdbdae202cd421775a8ee4e42fd519/pyjwt-2.11.0.tar.gz", hash = "sha256:35f95c1f0fbe5d5ba6e43f00271c275f7a1a4db1dab27bf708073b75318ea623", size = 98019, upload-time = "2026-01-30T19:59:55.694Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl", hash = "sha256:94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469", size = 28224, upload-time = "2026-01-30T19:59:54.539Z" }, @@ -236,7 +236,7 @@ crypto = [ [[package]] name = "pynacl" version = "1.6.2" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] @@ -271,7 +271,7 @@ wheels = [ [[package]] name = "requests" version = "2.32.5" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } dependencies = [ { name = "certifi" }, { name = "charset-normalizer" }, @@ -286,7 +286,7 @@ wheels = [ [[package]] name = "typing-extensions" version = "4.15.0" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, @@ -295,7 +295,7 @@ wheels = [ [[package]] name = "urllib3" version = "2.6.3" -source = { registry = "https://pypi-proxy.dev.databricks.com/simple/" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" } sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, diff --git a/python/codegen/uv.lock b/python/codegen/uv.lock index 681ead3c4f0..3dd6e49247c 100644 --- a/python/codegen/uv.lock +++ b/python/codegen/uv.lock @@ -20,7 +20,7 @@ dev = [{ name = "pytest" }] [[package]] name = "colorama" version = "0.4.6" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, @@ -29,7 +29,7 @@ wheels = [ [[package]] name = "iniconfig" version = "2.1.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, @@ -38,7 +38,7 @@ wheels = [ [[package]] name = "packaging" version = "24.2" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950, upload-time = "2024-11-08T09:47:47.202Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451, upload-time = "2024-11-08T09:47:44.722Z" }, @@ -47,7 +47,7 @@ wheels = [ [[package]] name = "pluggy" version = "1.5.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, @@ -56,7 +56,7 @@ wheels = [ [[package]] name = "pygments" version = "2.20.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, @@ -65,7 +65,7 @@ wheels = [ [[package]] name = "pytest" version = "9.0.3" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "iniconfig" }, diff --git a/python/databricks/bundles/catalogs/_models/privilege.py b/python/databricks/bundles/catalogs/_models/privilege.py index 6a0215a210c..74f25b462c1 100644 --- a/python/databricks/bundles/catalogs/_models/privilege.py +++ b/python/databricks/bundles/catalogs/_models/privilege.py @@ -65,6 +65,8 @@ class Privilege(Enum): MANAGE_ACCESS = "MANAGE_ACCESS" MANAGE_ACCESS_CONTROL = "MANAGE_ACCESS_CONTROL" CREATE_SERVICE = "CREATE_SERVICE" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" PrivilegeParam = ( @@ -131,6 +133,8 @@ class Privilege(Enum): "MANAGE_ACCESS", "MANAGE_ACCESS_CONTROL", "CREATE_SERVICE", + "CREATE_FEATURE", + "READ_FEATURE", ] | Privilege ) diff --git a/python/databricks/bundles/jobs/__init__.py b/python/databricks/bundles/jobs/__init__.py index 308c4ba7faf..5ed6b101421 100644 --- a/python/databricks/bundles/jobs/__init__.py +++ b/python/databricks/bundles/jobs/__init__.py @@ -196,6 +196,12 @@ "PowerBiTask", "PowerBiTaskDict", "PowerBiTaskParam", + "PythonOperatorTask", + "PythonOperatorTaskDict", + "PythonOperatorTaskParam", + "PythonOperatorTaskParameter", + "PythonOperatorTaskParameterDict", + "PythonOperatorTaskParameterParam", "PythonPyPiLibrary", "PythonPyPiLibraryDict", "PythonPyPiLibraryParam", @@ -609,6 +615,16 @@ PowerBiTaskDict, PowerBiTaskParam, ) +from databricks.bundles.jobs._models.python_operator_task import ( + PythonOperatorTask, + PythonOperatorTaskDict, + PythonOperatorTaskParam, +) +from databricks.bundles.jobs._models.python_operator_task_parameter import ( + PythonOperatorTaskParameter, + PythonOperatorTaskParameterDict, + PythonOperatorTaskParameterParam, +) from databricks.bundles.jobs._models.python_py_pi_library import ( PythonPyPiLibrary, PythonPyPiLibraryDict, diff --git a/python/databricks/bundles/jobs/_models/data_security_mode.py b/python/databricks/bundles/jobs/_models/data_security_mode.py index e195d0cfc8d..2a050bfddc5 100644 --- a/python/databricks/bundles/jobs/_models/data_security_mode.py +++ b/python/databricks/bundles/jobs/_models/data_security_mode.py @@ -7,15 +7,14 @@ class DataSecurityMode(Enum): Data security mode decides what data governance model to use when accessing data from a cluster. - The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. - * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. - * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. + * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. + * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. - The following modes can be used regardless of `kind`. - * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. - * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. - * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. + The following modes are legacy aliases for the above modes: + + * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. + * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: diff --git a/python/databricks/bundles/jobs/_models/pipeline_params.py b/python/databricks/bundles/jobs/_models/pipeline_params.py index 69dd3b77797..688120b0d9d 100644 --- a/python/databricks/bundles/jobs/_models/pipeline_params.py +++ b/python/databricks/bundles/jobs/_models/pipeline_params.py @@ -1,9 +1,9 @@ -from dataclasses import dataclass +from dataclasses import dataclass, field from typing import TYPE_CHECKING, TypedDict from databricks.bundles.core._transform import _transform from databricks.bundles.core._transform_to_json import _transform_to_json_value -from databricks.bundles.core._variable import VariableOrOptional +from databricks.bundles.core._variable import VariableOrList, VariableOrOptional if TYPE_CHECKING: from typing_extensions import Self @@ -18,6 +18,35 @@ class PipelineParams: If true, triggers a full refresh on the spark declarative pipeline. """ + full_refresh_selection: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + A list of tables to update with fullRefresh. + """ + + refresh_flow_selection: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + Flow names to selectively refresh. These are unioned with other selective refresh + options (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh. + """ + + refresh_selection: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + A list of tables to update without fullRefresh. + """ + + reset_checkpoint_selection: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + A list of streaming flows to reset checkpoints without clearing data. + """ + @classmethod def from_dict(cls, value: "PipelineParamsDict") -> "Self": return _transform(cls, value) @@ -34,5 +63,34 @@ class PipelineParamsDict(TypedDict, total=False): If true, triggers a full refresh on the spark declarative pipeline. """ + full_refresh_selection: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + A list of tables to update with fullRefresh. + """ + + refresh_flow_selection: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + Flow names to selectively refresh. These are unioned with other selective refresh + options (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh. + """ + + refresh_selection: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + A list of tables to update without fullRefresh. + """ + + reset_checkpoint_selection: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + A list of streaming flows to reset checkpoints without clearing data. + """ + PipelineParamsParam = PipelineParamsDict | PipelineParams diff --git a/python/databricks/bundles/jobs/_models/pipeline_task.py b/python/databricks/bundles/jobs/_models/pipeline_task.py index a5c22bdd986..308e740af2c 100644 --- a/python/databricks/bundles/jobs/_models/pipeline_task.py +++ b/python/databricks/bundles/jobs/_models/pipeline_task.py @@ -1,9 +1,13 @@ -from dataclasses import dataclass +from dataclasses import dataclass, field from typing import TYPE_CHECKING, TypedDict from databricks.bundles.core._transform import _transform from databricks.bundles.core._transform_to_json import _transform_to_json_value -from databricks.bundles.core._variable import VariableOr, VariableOrOptional +from databricks.bundles.core._variable import ( + VariableOr, + VariableOrList, + VariableOrOptional, +) if TYPE_CHECKING: from typing_extensions import Self @@ -23,6 +27,35 @@ class PipelineTask: If true, triggers a full refresh on the spark declarative pipeline. """ + full_refresh_selection: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + A list of tables to update with fullRefresh. + """ + + refresh_flow_selection: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + Flow names to selectively refresh. These are unioned with other selective refresh + options (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh. + """ + + refresh_selection: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + A list of tables to update without fullRefresh. + """ + + reset_checkpoint_selection: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + A list of streaming flows to reset checkpoints without clearing data. + """ + @classmethod def from_dict(cls, value: "PipelineTaskDict") -> "Self": return _transform(cls, value) @@ -44,5 +77,34 @@ class PipelineTaskDict(TypedDict, total=False): If true, triggers a full refresh on the spark declarative pipeline. """ + full_refresh_selection: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + A list of tables to update with fullRefresh. + """ + + refresh_flow_selection: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + Flow names to selectively refresh. These are unioned with other selective refresh + options (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh. + """ + + refresh_selection: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + A list of tables to update without fullRefresh. + """ + + reset_checkpoint_selection: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + A list of streaming flows to reset checkpoints without clearing data. + """ + PipelineTaskParam = PipelineTaskDict | PipelineTask diff --git a/python/databricks/bundles/jobs/_models/python_operator_task.py b/python/databricks/bundles/jobs/_models/python_operator_task.py new file mode 100644 index 00000000000..fbce9e38cde --- /dev/null +++ b/python/databricks/bundles/jobs/_models/python_operator_task.py @@ -0,0 +1,60 @@ +from dataclasses import dataclass, field +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import VariableOrList, VariableOrOptional +from databricks.bundles.jobs._models.python_operator_task_parameter import ( + PythonOperatorTaskParameter, + PythonOperatorTaskParameterParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class PythonOperatorTask: + """ + :meta private: [EXPERIMENTAL] + """ + + main: VariableOrOptional[str] = None + """ + Fully qualified name of the main class or function. + For example, `my_project.my_function` or `my_project.MyOperator`. + """ + + parameters: VariableOrList[PythonOperatorTaskParameter] = field( + default_factory=list + ) + """ + An ordered list of task parameters. + TODO(JOBS-30885): Add limits for parameters. + """ + + @classmethod + def from_dict(cls, value: "PythonOperatorTaskDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "PythonOperatorTaskDict": + return _transform_to_json_value(self) # type:ignore + + +class PythonOperatorTaskDict(TypedDict, total=False): + """""" + + main: VariableOrOptional[str] + """ + Fully qualified name of the main class or function. + For example, `my_project.my_function` or `my_project.MyOperator`. + """ + + parameters: VariableOrList[PythonOperatorTaskParameterParam] + """ + An ordered list of task parameters. + TODO(JOBS-30885): Add limits for parameters. + """ + + +PythonOperatorTaskParam = PythonOperatorTaskDict | PythonOperatorTask diff --git a/python/databricks/bundles/jobs/_models/python_operator_task_parameter.py b/python/databricks/bundles/jobs/_models/python_operator_task_parameter.py new file mode 100644 index 00000000000..5fd3628748d --- /dev/null +++ b/python/databricks/bundles/jobs/_models/python_operator_task_parameter.py @@ -0,0 +1,40 @@ +from dataclasses import dataclass +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import VariableOrOptional + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class PythonOperatorTaskParameter: + """ + :meta private: [EXPERIMENTAL] + """ + + name: VariableOrOptional[str] = None + + value: VariableOrOptional[str] = None + + @classmethod + def from_dict(cls, value: "PythonOperatorTaskParameterDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "PythonOperatorTaskParameterDict": + return _transform_to_json_value(self) # type:ignore + + +class PythonOperatorTaskParameterDict(TypedDict, total=False): + """""" + + name: VariableOrOptional[str] + + value: VariableOrOptional[str] + + +PythonOperatorTaskParameterParam = ( + PythonOperatorTaskParameterDict | PythonOperatorTaskParameter +) diff --git a/python/databricks/bundles/jobs/_models/task.py b/python/databricks/bundles/jobs/_models/task.py index cfac99bc571..8cb2fe0c273 100644 --- a/python/databricks/bundles/jobs/_models/task.py +++ b/python/databricks/bundles/jobs/_models/task.py @@ -50,6 +50,10 @@ PipelineTaskParam, ) from databricks.bundles.jobs._models.power_bi_task import PowerBiTask, PowerBiTaskParam +from databricks.bundles.jobs._models.python_operator_task import ( + PythonOperatorTask, + PythonOperatorTaskParam, +) from databricks.bundles.jobs._models.python_wheel_task import ( PythonWheelTask, PythonWheelTaskParam, @@ -160,8 +164,6 @@ class Task: disabled: VariableOrOptional[bool] = None """ - :meta private: [EXPERIMENTAL] - An optional flag to disable the task. If set to true, the task will not run even if it is part of a job. """ @@ -241,6 +243,13 @@ class Task: The task triggers a Power BI semantic model update when the `power_bi_task` field is present. """ + python_operator_task: VariableOrOptional[PythonOperatorTask] = None + """ + :meta private: [EXPERIMENTAL] + + The task runs a Python operator task. + """ + python_wheel_task: VariableOrOptional[PythonWheelTask] = None """ The task runs a Python wheel when the `python_wheel_task` field is present. @@ -373,8 +382,6 @@ class TaskDict(TypedDict, total=False): disabled: VariableOrOptional[bool] """ - :meta private: [EXPERIMENTAL] - An optional flag to disable the task. If set to true, the task will not run even if it is part of a job. """ @@ -454,6 +461,13 @@ class TaskDict(TypedDict, total=False): The task triggers a Power BI semantic model update when the `power_bi_task` field is present. """ + python_operator_task: VariableOrOptional[PythonOperatorTaskParam] + """ + :meta private: [EXPERIMENTAL] + + The task runs a Python operator task. + """ + python_wheel_task: VariableOrOptional[PythonWheelTaskParam] """ The task runs a Python wheel when the `python_wheel_task` field is present. diff --git a/python/databricks/bundles/pipelines/__init__.py b/python/databricks/bundles/pipelines/__init__.py index 2ef4c1e6c72..c7dbd9b41e8 100644 --- a/python/databricks/bundles/pipelines/__init__.py +++ b/python/databricks/bundles/pipelines/__init__.py @@ -103,6 +103,12 @@ "JiraConnectorOptions", "JiraConnectorOptionsDict", "JiraConnectorOptionsParam", + "JsonTransformerOptions", + "JsonTransformerOptionsDict", + "JsonTransformerOptionsParam", + "KafkaOptions", + "KafkaOptionsDict", + "KafkaOptionsParam", "Lifecycle", "LifecycleDict", "LifecycleParam", @@ -209,6 +215,11 @@ "TikTokAdsOptionsTikTokDataLevelParam", "TikTokAdsOptionsTikTokReportType", "TikTokAdsOptionsTikTokReportTypeParam", + "Transformer", + "TransformerDict", + "TransformerFormat", + "TransformerFormatParam", + "TransformerParam", "VolumesStorageInfo", "VolumesStorageInfoDict", "VolumesStorageInfoParam", @@ -398,6 +409,16 @@ JiraConnectorOptionsDict, JiraConnectorOptionsParam, ) +from databricks.bundles.pipelines._models.json_transformer_options import ( + JsonTransformerOptions, + JsonTransformerOptionsDict, + JsonTransformerOptionsParam, +) +from databricks.bundles.pipelines._models.kafka_options import ( + KafkaOptions, + KafkaOptionsDict, + KafkaOptionsParam, +) from databricks.bundles.pipelines._models.lifecycle import ( Lifecycle, LifecycleDict, @@ -576,6 +597,15 @@ TikTokAdsOptionsTikTokReportType, TikTokAdsOptionsTikTokReportTypeParam, ) +from databricks.bundles.pipelines._models.transformer import ( + Transformer, + TransformerDict, + TransformerParam, +) +from databricks.bundles.pipelines._models.transformer_format import ( + TransformerFormat, + TransformerFormatParam, +) from databricks.bundles.pipelines._models.volumes_storage_info import ( VolumesStorageInfo, VolumesStorageInfoDict, diff --git a/python/databricks/bundles/pipelines/_models/connector_options.py b/python/databricks/bundles/pipelines/_models/connector_options.py index 3f8b7add1ff..b236e16f762 100644 --- a/python/databricks/bundles/pipelines/_models/connector_options.py +++ b/python/databricks/bundles/pipelines/_models/connector_options.py @@ -20,6 +20,10 @@ JiraConnectorOptions, JiraConnectorOptionsParam, ) +from databricks.bundles.pipelines._models.kafka_options import ( + KafkaOptions, + KafkaOptionsParam, +) from databricks.bundles.pipelines._models.meta_marketing_options import ( MetaMarketingOptions, MetaMarketingOptionsParam, @@ -79,6 +83,11 @@ class ConnectorOptions: Jira specific options for ingestion """ + kafka_options: VariableOrOptional[KafkaOptions] = None + """ + :meta private: [EXPERIMENTAL] + """ + meta_ads_options: VariableOrOptional[MetaMarketingOptions] = None """ Meta Marketing (Meta Ads) specific options for ingestion @@ -152,6 +161,11 @@ class ConnectorOptionsDict(TypedDict, total=False): Jira specific options for ingestion """ + kafka_options: VariableOrOptional[KafkaOptionsParam] + """ + :meta private: [EXPERIMENTAL] + """ + meta_ads_options: VariableOrOptional[MetaMarketingOptionsParam] """ Meta Marketing (Meta Ads) specific options for ingestion diff --git a/python/databricks/bundles/pipelines/_models/file_ingestion_options_file_format.py b/python/databricks/bundles/pipelines/_models/file_ingestion_options_file_format.py index bf5838c8701..b9295c3378f 100644 --- a/python/databricks/bundles/pipelines/_models/file_ingestion_options_file_format.py +++ b/python/databricks/bundles/pipelines/_models/file_ingestion_options_file_format.py @@ -15,9 +15,12 @@ class FileIngestionOptionsFileFormat(Enum): PARQUET = "PARQUET" AVRO = "AVRO" ORC = "ORC" + FILE = "FILE" FileIngestionOptionsFileFormatParam = ( - Literal["BINARYFILE", "JSON", "CSV", "XML", "EXCEL", "PARQUET", "AVRO", "ORC"] + Literal[ + "BINARYFILE", "JSON", "CSV", "XML", "EXCEL", "PARQUET", "AVRO", "ORC", "FILE" + ] | FileIngestionOptionsFileFormat ) diff --git a/python/databricks/bundles/pipelines/_models/google_drive_options_google_drive_entity_type.py b/python/databricks/bundles/pipelines/_models/google_drive_options_google_drive_entity_type.py index 136b3aff953..4ddab6c6792 100644 --- a/python/databricks/bundles/pipelines/_models/google_drive_options_google_drive_entity_type.py +++ b/python/databricks/bundles/pipelines/_models/google_drive_options_google_drive_entity_type.py @@ -10,9 +10,13 @@ class GoogleDriveOptionsGoogleDriveEntityType(Enum): FILE = "FILE" FILE_METADATA = "FILE_METADATA" PERMISSION = "PERMISSION" + FILE_PERMISSION = "FILE_PERMISSION" + GROUP_MEMBERSHIP = "GROUP_MEMBERSHIP" GoogleDriveOptionsGoogleDriveEntityTypeParam = ( - Literal["FILE", "FILE_METADATA", "PERMISSION"] + Literal[ + "FILE", "FILE_METADATA", "PERMISSION", "FILE_PERMISSION", "GROUP_MEMBERSHIP" + ] | GoogleDriveOptionsGoogleDriveEntityType ) diff --git a/python/databricks/bundles/pipelines/_models/json_transformer_options.py b/python/databricks/bundles/pipelines/_models/json_transformer_options.py new file mode 100644 index 00000000000..26b310204b9 --- /dev/null +++ b/python/databricks/bundles/pipelines/_models/json_transformer_options.py @@ -0,0 +1,88 @@ +from dataclasses import dataclass +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import VariableOrOptional +from databricks.bundles.pipelines._models.file_ingestion_options_schema_evolution_mode import ( + FileIngestionOptionsSchemaEvolutionMode, + FileIngestionOptionsSchemaEvolutionModeParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class JsonTransformerOptions: + """ + :meta private: [EXPERIMENTAL] + """ + + as_variant: VariableOrOptional[bool] = None + """ + Parse the entire value as a single Variant column. + """ + + schema: VariableOrOptional[str] = None + """ + Inline schema string for JSON parsing (Spark DDL format). + """ + + schema_evolution_mode: VariableOrOptional[ + FileIngestionOptionsSchemaEvolutionMode + ] = None + """ + (Optional) Schema evolution mode for schema inference. + """ + + schema_file_path: VariableOrOptional[str] = None + """ + Path to a schema file (.ddl). + """ + + schema_hints: VariableOrOptional[str] = None + """ + (Optional) Schema hints as a comma-separated string of "column_name type" pairs. + """ + + @classmethod + def from_dict(cls, value: "JsonTransformerOptionsDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "JsonTransformerOptionsDict": + return _transform_to_json_value(self) # type:ignore + + +class JsonTransformerOptionsDict(TypedDict, total=False): + """""" + + as_variant: VariableOrOptional[bool] + """ + Parse the entire value as a single Variant column. + """ + + schema: VariableOrOptional[str] + """ + Inline schema string for JSON parsing (Spark DDL format). + """ + + schema_evolution_mode: VariableOrOptional[ + FileIngestionOptionsSchemaEvolutionModeParam + ] + """ + (Optional) Schema evolution mode for schema inference. + """ + + schema_file_path: VariableOrOptional[str] + """ + Path to a schema file (.ddl). + """ + + schema_hints: VariableOrOptional[str] + """ + (Optional) Schema hints as a comma-separated string of "column_name type" pairs. + """ + + +JsonTransformerOptionsParam = JsonTransformerOptionsDict | JsonTransformerOptions diff --git a/python/databricks/bundles/pipelines/_models/kafka_options.py b/python/databricks/bundles/pipelines/_models/kafka_options.py new file mode 100644 index 00000000000..0b83708ee3a --- /dev/null +++ b/python/databricks/bundles/pipelines/_models/kafka_options.py @@ -0,0 +1,130 @@ +from dataclasses import dataclass, field +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import ( + VariableOrDict, + VariableOrList, + VariableOrOptional, +) +from databricks.bundles.pipelines._models.transformer import ( + Transformer, + TransformerParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class KafkaOptions: + """ + :meta private: [EXPERIMENTAL] + """ + + client_config: VariableOrDict[str] = field(default_factory=dict) + """ + :meta private: [EXPERIMENTAL] + + Undocumented backdoor mechanism for overriding parameters + to pass to the Kafka client. + This is not supported and may break at any time. + """ + + key_transformer: VariableOrOptional[Transformer] = None + """ + (Optional) Transformer for the message key. + If not specified, the key is left as raw bytes. + """ + + max_offsets_per_trigger: VariableOrOptional[int] = None + """ + :meta private: [EXPERIMENTAL] + + Internal option to control the maximum number of offsets to process per trigger. + """ + + starting_offset: VariableOrOptional[str] = None + """ + (Optional) Where to begin reading when no checkpoint exists. + Valid values: "latest" and "earliest". Defaults to "latest". + """ + + topic_pattern: VariableOrOptional[str] = None + """ + Java regex pattern to subscribe to matching topics. + Only one of topics or topic_pattern must be specified. + """ + + topics: VariableOrList[str] = field(default_factory=list) + """ + Topics to subscribe to. + Only one of topics or topic_pattern must be specified. + """ + + value_transformer: VariableOrOptional[Transformer] = None + """ + (Optional) Transformer for the message value. + If not specified, the value is left as raw bytes. + """ + + @classmethod + def from_dict(cls, value: "KafkaOptionsDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "KafkaOptionsDict": + return _transform_to_json_value(self) # type:ignore + + +class KafkaOptionsDict(TypedDict, total=False): + """""" + + client_config: VariableOrDict[str] + """ + :meta private: [EXPERIMENTAL] + + Undocumented backdoor mechanism for overriding parameters + to pass to the Kafka client. + This is not supported and may break at any time. + """ + + key_transformer: VariableOrOptional[TransformerParam] + """ + (Optional) Transformer for the message key. + If not specified, the key is left as raw bytes. + """ + + max_offsets_per_trigger: VariableOrOptional[int] + """ + :meta private: [EXPERIMENTAL] + + Internal option to control the maximum number of offsets to process per trigger. + """ + + starting_offset: VariableOrOptional[str] + """ + (Optional) Where to begin reading when no checkpoint exists. + Valid values: "latest" and "earliest". Defaults to "latest". + """ + + topic_pattern: VariableOrOptional[str] + """ + Java regex pattern to subscribe to matching topics. + Only one of topics or topic_pattern must be specified. + """ + + topics: VariableOrList[str] + """ + Topics to subscribe to. + Only one of topics or topic_pattern must be specified. + """ + + value_transformer: VariableOrOptional[TransformerParam] + """ + (Optional) Transformer for the message value. + If not specified, the value is left as raw bytes. + """ + + +KafkaOptionsParam = KafkaOptionsDict | KafkaOptions diff --git a/python/databricks/bundles/pipelines/_models/pipeline.py b/python/databricks/bundles/pipelines/_models/pipeline.py index 284a3734897..0756c44af51 100644 --- a/python/databricks/bundles/pipelines/_models/pipeline.py +++ b/python/databricks/bundles/pipelines/_models/pipeline.py @@ -25,10 +25,7 @@ IngestionPipelineDefinition, IngestionPipelineDefinitionParam, ) -from databricks.bundles.pipelines._models.lifecycle import ( - Lifecycle, - LifecycleParam, -) +from databricks.bundles.pipelines._models.lifecycle import Lifecycle, LifecycleParam from databricks.bundles.pipelines._models.notifications import ( Notifications, NotificationsParam, diff --git a/python/databricks/bundles/pipelines/_models/sharepoint_options_sharepoint_entity_type.py b/python/databricks/bundles/pipelines/_models/sharepoint_options_sharepoint_entity_type.py index 46e15fff79d..21f76eca27f 100644 --- a/python/databricks/bundles/pipelines/_models/sharepoint_options_sharepoint_entity_type.py +++ b/python/databricks/bundles/pipelines/_models/sharepoint_options_sharepoint_entity_type.py @@ -11,9 +11,18 @@ class SharepointOptionsSharepointEntityType(Enum): FILE_METADATA = "FILE_METADATA" PERMISSION = "PERMISSION" LIST = "LIST" + FILE_PERMISSION = "FILE_PERMISSION" + GROUP_MEMBERSHIP = "GROUP_MEMBERSHIP" SharepointOptionsSharepointEntityTypeParam = ( - Literal["FILE", "FILE_METADATA", "PERMISSION", "LIST"] + Literal[ + "FILE", + "FILE_METADATA", + "PERMISSION", + "LIST", + "FILE_PERMISSION", + "GROUP_MEMBERSHIP", + ] | SharepointOptionsSharepointEntityType ) diff --git a/python/databricks/bundles/pipelines/_models/transformer.py b/python/databricks/bundles/pipelines/_models/transformer.py new file mode 100644 index 00000000000..b707307fbbc --- /dev/null +++ b/python/databricks/bundles/pipelines/_models/transformer.py @@ -0,0 +1,54 @@ +from dataclasses import dataclass +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import VariableOrOptional +from databricks.bundles.pipelines._models.json_transformer_options import ( + JsonTransformerOptions, + JsonTransformerOptionsParam, +) +from databricks.bundles.pipelines._models.transformer_format import ( + TransformerFormat, + TransformerFormatParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class Transformer: + """ + :meta private: [EXPERIMENTAL] + + Specifies how to transform binary data into structured data. + """ + + format: VariableOrOptional[TransformerFormat] = None + """ + Required: the wire format of the data. + """ + + json_options: VariableOrOptional[JsonTransformerOptions] = None + + @classmethod + def from_dict(cls, value: "TransformerDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "TransformerDict": + return _transform_to_json_value(self) # type:ignore + + +class TransformerDict(TypedDict, total=False): + """""" + + format: VariableOrOptional[TransformerFormatParam] + """ + Required: the wire format of the data. + """ + + json_options: VariableOrOptional[JsonTransformerOptionsParam] + + +TransformerParam = TransformerDict | Transformer diff --git a/python/databricks/bundles/pipelines/_models/transformer_format.py b/python/databricks/bundles/pipelines/_models/transformer_format.py new file mode 100644 index 00000000000..b37db5110ce --- /dev/null +++ b/python/databricks/bundles/pipelines/_models/transformer_format.py @@ -0,0 +1,18 @@ +from enum import Enum +from typing import Literal + + +class TransformerFormat(Enum): + """ + :meta private: [EXPERIMENTAL] + """ + + STRING = "STRING" + JSON = "JSON" + AVRO = "AVRO" + PROTOBUF = "PROTOBUF" + + +TransformerFormatParam = ( + Literal["STRING", "JSON", "AVRO", "PROTOBUF"] | TransformerFormat +) diff --git a/python/databricks/bundles/schemas/_models/privilege.py b/python/databricks/bundles/schemas/_models/privilege.py index 6a0215a210c..74f25b462c1 100644 --- a/python/databricks/bundles/schemas/_models/privilege.py +++ b/python/databricks/bundles/schemas/_models/privilege.py @@ -65,6 +65,8 @@ class Privilege(Enum): MANAGE_ACCESS = "MANAGE_ACCESS" MANAGE_ACCESS_CONTROL = "MANAGE_ACCESS_CONTROL" CREATE_SERVICE = "CREATE_SERVICE" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" PrivilegeParam = ( @@ -131,6 +133,8 @@ class Privilege(Enum): "MANAGE_ACCESS", "MANAGE_ACCESS_CONTROL", "CREATE_SERVICE", + "CREATE_FEATURE", + "READ_FEATURE", ] | Privilege ) diff --git a/python/databricks/bundles/volumes/_models/privilege.py b/python/databricks/bundles/volumes/_models/privilege.py index 6a0215a210c..74f25b462c1 100644 --- a/python/databricks/bundles/volumes/_models/privilege.py +++ b/python/databricks/bundles/volumes/_models/privilege.py @@ -65,6 +65,8 @@ class Privilege(Enum): MANAGE_ACCESS = "MANAGE_ACCESS" MANAGE_ACCESS_CONTROL = "MANAGE_ACCESS_CONTROL" CREATE_SERVICE = "CREATE_SERVICE" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" PrivilegeParam = ( @@ -131,6 +133,8 @@ class Privilege(Enum): "MANAGE_ACCESS", "MANAGE_ACCESS_CONTROL", "CREATE_SERVICE", + "CREATE_FEATURE", + "READ_FEATURE", ] | Privilege ) diff --git a/python/uv.lock b/python/uv.lock index 311249427a0..4bfc4e9296f 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -5,7 +5,7 @@ requires-python = ">=3.10" [[package]] name = "alabaster" version = "1.0.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a6/f8/d9c74d0daf3f742840fd818d69cfae176fa332022fd44e3469487d5a9420/alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e", size = 24210, upload-time = "2024-07-26T18:15:03.762Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b", size = 13929, upload-time = "2024-07-26T18:15:02.05Z" }, @@ -14,7 +14,7 @@ wheels = [ [[package]] name = "babel" version = "2.17.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, @@ -23,7 +23,7 @@ wheels = [ [[package]] name = "certifi" version = "2025.1.31" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577, upload-time = "2025-01-31T02:16:47.166Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393, upload-time = "2025-01-31T02:16:45.015Z" }, @@ -32,7 +32,7 @@ wheels = [ [[package]] name = "charset-normalizer" version = "3.4.1" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188, upload-time = "2024-12-24T18:12:35.43Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013, upload-time = "2024-12-24T18:09:43.671Z" }, @@ -93,7 +93,7 @@ wheels = [ [[package]] name = "colorama" version = "0.4.6" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, @@ -102,7 +102,7 @@ wheels = [ [[package]] name = "coverage" version = "7.6.12" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/0c/d6/2b53ab3ee99f2262e6f0b8369a43f6d66658eab45510331c0b3d5c8c4272/coverage-7.6.12.tar.gz", hash = "sha256:48cfc4641d95d34766ad41d9573cc0f22a48aa88d22657a1fe01dca0dbae4de2", size = 805941, upload-time = "2025-02-11T14:47:03.797Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ba/67/81dc41ec8f548c365d04a29f1afd492d3176b372c33e47fa2a45a01dc13a/coverage-7.6.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:704c8c8c6ce6569286ae9622e534b4f5b9759b6f2cd643f1c1a61f666d534fe8", size = 208345, upload-time = "2025-02-11T14:44:51.83Z" }, @@ -194,7 +194,7 @@ dev = [ [[package]] name = "docutils" version = "0.21.2" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444, upload-time = "2024-04-23T18:57:18.24Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408, upload-time = "2024-04-23T18:57:14.835Z" }, @@ -203,7 +203,7 @@ wheels = [ [[package]] name = "exceptiongroup" version = "1.2.2" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883, upload-time = "2024-07-12T22:26:00.161Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453, upload-time = "2024-07-12T22:25:58.476Z" }, @@ -212,7 +212,7 @@ wheels = [ [[package]] name = "idna" version = "3.10" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, @@ -221,7 +221,7 @@ wheels = [ [[package]] name = "imagesize" version = "1.4.1" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026, upload-time = "2022-07-01T12:21:05.687Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769, upload-time = "2022-07-01T12:21:02.467Z" }, @@ -230,7 +230,7 @@ wheels = [ [[package]] name = "iniconfig" version = "2.0.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646, upload-time = "2023-01-07T11:08:11.254Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892, upload-time = "2023-01-07T11:08:09.864Z" }, @@ -239,7 +239,7 @@ wheels = [ [[package]] name = "jinja2" version = "3.1.6" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } dependencies = [ { name = "markupsafe" }, ] @@ -251,7 +251,7 @@ wheels = [ [[package]] name = "markupsafe" version = "3.0.2" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload-time = "2024-10-18T15:20:51.44Z" }, @@ -309,7 +309,7 @@ wheels = [ [[package]] name = "nodeenv" version = "1.9.1" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, @@ -318,7 +318,7 @@ wheels = [ [[package]] name = "packaging" version = "24.2" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950, upload-time = "2024-11-08T09:47:47.202Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451, upload-time = "2024-11-08T09:47:44.722Z" }, @@ -327,7 +327,7 @@ wheels = [ [[package]] name = "pluggy" version = "1.5.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, @@ -336,7 +336,7 @@ wheels = [ [[package]] name = "pygments" version = "2.20.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, @@ -345,7 +345,7 @@ wheels = [ [[package]] name = "pyright" version = "1.1.380" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } dependencies = [ { name = "nodeenv" }, ] @@ -357,7 +357,7 @@ wheels = [ [[package]] name = "pytest" version = "9.0.3" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, @@ -375,7 +375,7 @@ wheels = [ [[package]] name = "pytest-cov" version = "5.0.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } dependencies = [ { name = "coverage", extra = ["toml"] }, { name = "pytest" }, @@ -388,7 +388,7 @@ wheels = [ [[package]] name = "requests" version = "2.33.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } dependencies = [ { name = "certifi" }, { name = "charset-normalizer" }, @@ -403,7 +403,7 @@ wheels = [ [[package]] name = "ruff" version = "0.9.1" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/67/3e/e89f736f01aa9517a97e2e7e0ce8d34a4d8207087b3cfdec95133fee13b5/ruff-0.9.1.tar.gz", hash = "sha256:fd2b25ecaf907d6458fa842675382c8597b3c746a2dde6717fe3415425df0c17", size = 3498844, upload-time = "2025-01-10T18:57:53.896Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/dc/05/c3a2e0feb3d5d394cdfd552de01df9d3ec8a3a3771bbff247fab7e668653/ruff-0.9.1-py3-none-linux_armv6l.whl", hash = "sha256:84330dda7abcc270e6055551aca93fdde1b0685fc4fd358f26410f9349cf1743", size = 10645241, upload-time = "2025-01-10T18:56:45.897Z" }, @@ -428,7 +428,7 @@ wheels = [ [[package]] name = "snowballstemmer" version = "2.2.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/44/7b/af302bebf22c749c56c9c3e8ae13190b5b5db37a33d9068652e8f73b7089/snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", size = 86699, upload-time = "2021-11-16T18:38:38.009Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a", size = 93002, upload-time = "2021-11-16T18:38:34.792Z" }, @@ -437,7 +437,7 @@ wheels = [ [[package]] name = "sphinx" version = "8.0.2" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } dependencies = [ { name = "alabaster" }, { name = "babel" }, @@ -465,7 +465,7 @@ wheels = [ [[package]] name = "sphinxcontrib-applehelp" version = "2.0.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053, upload-time = "2024-07-29T01:09:00.465Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300, upload-time = "2024-07-29T01:08:58.99Z" }, @@ -474,7 +474,7 @@ wheels = [ [[package]] name = "sphinxcontrib-devhelp" version = "2.0.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967, upload-time = "2024-07-29T01:09:23.417Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530, upload-time = "2024-07-29T01:09:21.945Z" }, @@ -483,7 +483,7 @@ wheels = [ [[package]] name = "sphinxcontrib-htmlhelp" version = "2.1.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617, upload-time = "2024-07-29T01:09:37.889Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705, upload-time = "2024-07-29T01:09:36.407Z" }, @@ -492,7 +492,7 @@ wheels = [ [[package]] name = "sphinxcontrib-jsmath" version = "1.0.1" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787, upload-time = "2019-01-21T16:10:16.347Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071, upload-time = "2019-01-21T16:10:14.333Z" }, @@ -501,7 +501,7 @@ wheels = [ [[package]] name = "sphinxcontrib-qthelp" version = "2.0.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165, upload-time = "2024-07-29T01:09:56.435Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743, upload-time = "2024-07-29T01:09:54.885Z" }, @@ -510,7 +510,7 @@ wheels = [ [[package]] name = "sphinxcontrib-serializinghtml" version = "2.0.0" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080, upload-time = "2024-07-29T01:10:09.332Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, @@ -519,7 +519,7 @@ wheels = [ [[package]] name = "tomli" version = "2.2.1" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, @@ -558,7 +558,7 @@ wheels = [ [[package]] name = "typing-extensions" version = "4.12.2" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321, upload-time = "2024-06-07T18:52:15.995Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438, upload-time = "2024-06-07T18:52:13.582Z" }, @@ -567,7 +567,7 @@ wheels = [ [[package]] name = "urllib3" version = "2.6.3" -source = { registry = "https://pypi.org/simple" } +source = { registry = "https://pypi-proxy.cloud.databricks.com/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },