From 13c669f620a5c1967e12766c43fc298991d76ffe Mon Sep 17 00:00:00 2001 From: "databricks-ci-ghec-2[bot]" <184307802+databricks-ci-ghec-2[bot]@users.noreply.github.com> Date: Tue, 3 Nov 2026 04:34:38 +0000 Subject: [PATCH 1/3] Update Go SDK to v0.193.0 --- .codegen/_openapi_sha | 2 +- .codegen/cli.json | 7981 ++++++++++++++--- .../dependency-updates/go-sdk-v0.193.0.md | 1 + cmd/account/iam-v2/iam-v2.go | 367 +- .../network-connectivity.go | 95 + cmd/workspace/agent-kit/agent-kit.go | 104 +- cmd/workspace/cmd.go | 4 + .../compute-migrations/compute-migrations.go | 835 ++ cmd/workspace/credentials/credentials.go | 6 +- cmd/workspace/data-quality/data-quality.go | 120 +- .../feature-engineering.go | 13 +- cmd/workspace/genie-agents/genie-agents.go | 499 ++ cmd/workspace/policies/policies.go | 4 + cmd/workspace/postgres/postgres.go | 24 +- go.mod | 2 +- go.sum | 4 +- 16 files changed, 8594 insertions(+), 1467 deletions(-) create mode 100644 .nextchanges/dependency-updates/go-sdk-v0.193.0.md create mode 100644 cmd/workspace/compute-migrations/compute-migrations.go create mode 100644 cmd/workspace/genie-agents/genie-agents.go diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index 82500564aa5..7dec683f403 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -1ffcd5d95ca7d798ee643728874f25352e976aaf \ No newline at end of file +e70a22231111e4c68080544b08d28ab7aa0d86b5 \ No newline at end of file diff --git a/.codegen/cli.json b/.codegen/cli.json index c302b5ce264..e9719c6fbc1 100644 --- a/.codegen/cli.json +++ b/.codegen/cli.json @@ -325,12 +325,12 @@ "permission": { "description": "Permission level to grant.", "ref": "agentkit.PermissionLevel", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "principal": { "description": "Principal to grant the permission to.", "ref": "agentkit.StorePrincipal", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -343,12 +343,12 @@ "permission": { "description": "Permission level to grant.", "ref": "agentkit.PermissionLevel", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "principal": { "description": "Principal to grant the permission to.", "ref": "agentkit.StorePrincipal", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -459,14 +459,14 @@ "fields": { "page_size": { "description": "Maximum number of permissions to return. Defaults to 100; maximum is 1000.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL" ] }, "page_token": { "description": "Continuation token from a previous response.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL" ] @@ -478,14 +478,14 @@ "fields": { "memory_store_permissions": { "description": "Explicit READ or WRITE grants. Implicit owner/admin access and inherited grants are excluded.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OUTPUT_ONLY" ] }, "next_page_token": { "description": "Token for the next page, omitted when all permissions have been returned.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OUTPUT_ONLY" ] @@ -534,14 +534,14 @@ "fields": { "page_size": { "description": "Maximum number of permissions to return. Defaults to 100; maximum is 1000.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL" ] }, "page_token": { "description": "Continuation token from a previous response.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL" ] @@ -553,14 +553,14 @@ "fields": { "next_page_token": { "description": "Token for the next page, omitted when all permissions have been returned.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OUTPUT_ONLY" ] }, "session_store_permissions": { "description": "Explicit READ or WRITE grants. Implicit owner/admin access and inherited grants are excluded.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OUTPUT_ONLY" ] @@ -834,7 +834,7 @@ "permission": { "description": "The permission level. WRITE includes READ; PERMISSION_LEVEL_UNSPECIFIED means neither is available.", "ref": "agentkit.PermissionLevel", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OUTPUT_ONLY" ] @@ -842,7 +842,7 @@ "principal": { "description": "The principal whose permission is reported.", "ref": "agentkit.StorePrincipal", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OUTPUT_ONLY" ] @@ -856,8 +856,8 @@ "WRITE" ], "enum_launch_stages": { - "READ": "PRIVATE_PREVIEW", - "WRITE": "PRIVATE_PREVIEW" + "READ": "PUBLIC_BETA", + "WRITE": "PUBLIC_BETA" } }, "agentkit.PopSessionItemRequest": { @@ -880,8 +880,8 @@ "SERVICE_PRINCIPAL" ], "enum_launch_stages": { - "SERVICE_PRINCIPAL": "PRIVATE_PREVIEW", - "USER": "PRIVATE_PREVIEW" + "SERVICE_PRINCIPAL": "PUBLIC_BETA", + "USER": "PUBLIC_BETA" } }, "agentkit.RevokeMemoryStorePermissionRequest": { @@ -890,7 +890,7 @@ "principal": { "description": "Principal whose READ and WRITE grants will be removed.", "ref": "agentkit.StorePrincipal", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -903,7 +903,7 @@ "principal": { "description": "Principal whose READ and WRITE grants will be removed.", "ref": "agentkit.StorePrincipal", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -1139,7 +1139,7 @@ "permission": { "description": "The permission level. WRITE includes READ; PERMISSION_LEVEL_UNSPECIFIED means neither is available.", "ref": "agentkit.PermissionLevel", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OUTPUT_ONLY" ] @@ -1147,7 +1147,7 @@ "principal": { "description": "The principal whose permission is reported.", "ref": "agentkit.StorePrincipal", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OUTPUT_ONLY" ] @@ -1187,12 +1187,12 @@ "description": "A principal a store permission is granted to. `name` is the principal's Lakebase\nidentifier: a user's email or a service principal's application (client) id.", "fields": { "name": { - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "principal_type": { "description": "The kind of principal. Required unless the deprecated type alias is supplied.", "ref": "agentkit.PrincipalType", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL" ] @@ -4853,7 +4853,7 @@ "description": "The calling user's spend against a single blocking threshold. Values may be omitted if live\nspend or threshold data is temporarily unavailable.", "fields": { "percent_consumed": { - "description": "Percentage of the threshold consumed, as a decimal string rounded down to one decimal place (for\nexample, \"68.4\" means 68.4%). May exceed 100 when spend is over the threshold. Returns \"0.0\" if\nthere's no spend, and is omitted if the threshold is $0. For shared thresholds, this is the\nonly value returned; the absolute `spend` and `threshold` dollar amounts are withheld.", + "description": "Percentage of the threshold consumed, as a decimal string rounded down to one decimal place (for\nexample, \"68.4\" means 68.4%). May exceed 100 when spend is over the threshold. Returns \"0.0\" if\nthere's no spend, except that a $0 threshold always returns \"100.0\". For shared thresholds, this\nis the only value returned; the absolute `spend` and `threshold` dollar amounts are withheld.", "launch_stage": "PUBLIC_BETA" }, "scope_type": { @@ -10876,7 +10876,7 @@ "catalog.ListMcpServicesRequest": { "fields": { "page_size": { - "description": "Maximum number of MCP services to return. Defaults to 200 when unset or 0;\nthe maximum is 200. Use `page_token` to retrieve additional pages.", + "description": "Maximum number of MCP services to return. Defaults to 200 when unset or 0;\nthe maximum is 1000 for `view = BASIC` and 200 for `view = FULL`. Use\n`page_token` to retrieve additional pages.", "launch_stage": "GA", "behaviors": [ "OPTIONAL" @@ -10957,7 +10957,7 @@ "catalog.ListModelProviderServicesRequest": { "fields": { "page_size": { - "description": "Maximum number of provider services to return. Defaults to 200 when unset or\n0; the maximum is 200. Use `page_token` to retrieve additional pages.", + "description": "Maximum number of provider services to return. Defaults to 200 when unset or\n0; the maximum is 1000 for `view = BASIC` and 200 for `view = FULL`. Use\n`page_token` to retrieve additional pages.", "launch_stage": "GA", "behaviors": [ "OPTIONAL" @@ -11014,7 +11014,7 @@ "catalog.ListModelServicesRequest": { "fields": { "page_size": { - "description": "Maximum number of model services to return. Defaults to 200 when unset or 0;\nthe maximum is 200. Use `page_token` to retrieve additional pages.", + "description": "Maximum number of model services to return. Defaults to 200 when unset or 0;\nthe maximum is 1000 for `view = BASIC` and 200 for `view = FULL`. Use\n`page_token` to retrieve additional pages.", "launch_stage": "GA", "behaviors": [ "OPTIONAL" @@ -13718,6 +13718,8 @@ "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION" ], "enum_launch_stages": { @@ -13732,6 +13734,7 @@ "CREATE_EXTERNAL_LOCATION": "GA", "CREATE_EXTERNAL_TABLE": "GA", "CREATE_EXTERNAL_VOLUME": "GA", + "CREATE_FEATURE": "GA", "CREATE_FOREIGN_CATALOG": "GA", "CREATE_FOREIGN_SECURABLE": "GA", "CREATE_FUNCTION": "GA", @@ -13755,6 +13758,7 @@ "MANAGE_ALLOWLIST": "GA", "MODIFY": "GA", "MODIFY_CLEAN_ROOM": "GA", + "READ_FEATURE": "GA", "READ_FILES": "GA", "READ_METADATA": "GA", "READ_PRIVATE_FILES": "GA", @@ -14493,7 +14497,8 @@ "MCP_SERVICE", "MODEL_PROVIDER_SERVICE", "AGENT_SERVICE", - "SKILL" + "SKILL", + "FEATURE" ], "enum_launch_stages": { "AGENT_SERVICE": "PUBLIC_BETA", @@ -14503,6 +14508,7 @@ "CREDENTIAL": "GA", "EXTERNAL_LOCATION": "GA", "EXTERNAL_METADATA": "GA", + "FEATURE": "GA", "FUNCTION": "GA", "MCP_SERVICE": "GA", "METASTORE": "GA", @@ -16094,11 +16100,15 @@ "catalog.ValidateCredentialRequest": { "fields": { "aws_iam_role": { + "description": "Deprecated: create a credential and pass its credential_name instead.", "ref": "catalog.AwsIamRole", + "deprecated": true, "launch_stage": "GA" }, "azure_managed_identity": { + "description": "Deprecated: create a credential and pass its credential_name instead.", "ref": "catalog.AzureManagedIdentity", + "deprecated": true, "launch_stage": "GA" }, "credential_name": { @@ -16106,7 +16116,9 @@ "launch_stage": "GA" }, "databricks_gcp_service_account": { + "description": "Deprecated: create a credential and pass its credential_name instead.", "ref": "catalog.DatabricksGcpServiceAccount", + "deprecated": true, "launch_stage": "GA" }, "external_location_name": { @@ -16156,28 +16168,33 @@ "catalog.ValidateStorageCredential": { "fields": { "aws_iam_role": { - "description": "The AWS IAM role configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe AWS IAM role configuration.", "ref": "catalog.AwsIamRoleRequest", + "deprecated": true, "launch_stage": "GA" }, "azure_managed_identity": { - "description": "The Azure managed identity configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe Azure managed identity configuration.", "ref": "catalog.AzureManagedIdentityRequest", + "deprecated": true, "launch_stage": "GA" }, "azure_service_principal": { - "description": "The Azure service principal configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe Azure service principal configuration.", "ref": "catalog.AzureServicePrincipal", + "deprecated": true, "launch_stage": "GA" }, "cloudflare_api_token": { - "description": "The Cloudflare API token configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe Cloudflare API token configuration.", "ref": "catalog.CloudflareApiToken", + "deprecated": true, "launch_stage": "PRIVATE_PREVIEW" }, "databricks_gcp_service_account": { - "description": "The Databricks created GCP service account configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe Databricks created GCP service account configuration.", "ref": "catalog.DatabricksGcpServiceAccountRequest", + "deprecated": true, "launch_stage": "GA" }, "external_location_name": { @@ -19789,7 +19806,7 @@ "description": "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.\nIn this minimal environment spec, only pip and java dependencies are supported.", "fields": { "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.\nFor more information about Databricks-provided base environments, see the\n[list workspace base environments](:method:Environments/ListWorkspaceBaseEnvironments) API.\nFor more information, see", + "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`).\n\nSupport 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.\n\nEither `environment_version` or `base_environment` can be provided.\n\nFor more information about Databricks-provided base environments, see the\n[list workspace base environments](:method:Environments/ListWorkspaceBaseEnvironments) API.", "launch_stage": "GA" }, "client": { @@ -19801,28 +19818,28 @@ ] }, "dependencies": { - "description": "List of pip dependencies, as supported by the version of pip in this environment.\nEach dependency is a valid pip requirements file line per https://pip.pypa.io/en/stable/reference/requirements-file-format/.\nAllowed dependencies include a requirement specifier, an archive URL, a local project path (such as WSFS or UC Volumes in Databricks), or a VCS project URL.", + "description": "List of pip dependencies, as supported by the version of pip in this environment.\nEach dependency is a valid [pip requirements file line](https://pip.pypa.io/en/stable/reference/requirements-file-format/).\nAllowed dependencies include a requirement specifier, an archive URL, a local project path (such as WSFS or UC Volumes in Databricks), or a VCS project URL.", "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "environment_version": { - "description": "Either `environment_version` or `base_environment` needs to be provided. Environment version used by the environment.\nEach version comes with a specific Python version and a set of Python packages.\nThe version is a string, consisting of an integer.", + "description": "The environment version used by this environment. Either `environment_version` or `base_environment` must be provided.\nEach version comes with a specific Python version and a set of Python packages.\nThe version is a string, consisting of an integer.", "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "java_dependencies": { - "description": "List of java dependencies. Each dependency is a string representing a java library path. For example: `/Volumes/path/to/test.jar`.", + "description": "List of Java dependencies. Each dependency is a string representing a Java library path. For example: `/Volumes/path/to/test.jar`.", "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "project_environment": { - "description": "Path to the `pyproject.toml` file that defines the project environment.\nThis field cannot be combined with `environment_version`, `base_environment`, dependency fields,\nor any other environment-source fields. Set the environment version and dependencies in `pyproject.toml` instead.\nFor more information, see the serverless dependencies documentation.", + "description": "Path to the `pyproject.toml` file that defines the project environment.\nThis field cannot be combined with `environment_version`, `base_environment`, dependency fields,\nor any other environment-source fields. Set the environment version and dependencies in `pyproject.toml` instead.", "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL" @@ -22497,6 +22514,529 @@ } } }, + "computemigrations.ApproveMigrationExecutionRequest": { + "description": "A request to approve migration execution at the MIGRATION_REVIEW gate.", + "fields": { + "additional_feedback": { + "description": "Optional free-text feedback or instructions the user provides along with the approval, carried\ninto the next stage of the migration.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "etag": { + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "computemigrations.ApproveMigrationTranslationRequest": { + "description": "A request to approve the working copy at the TRANSLATION_READY gate.", + "fields": { + "additional_feedback": { + "description": "Optional free-text feedback or instructions the user provides along with the approval, carried\ninto the next stage of the migration.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "etag": { + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "computemigrations.BakingConfig": { + "description": "Configuration for the baking window (post-execution production monitoring).", + "fields": { + "run_count": { + "description": "Number of successful production runs required before the migration reaches MIGRATION_COMPLETE. Default applied by the server (configurable).", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "time_window_hours": { + "description": "Maximum baking window duration in hours. If the required run_count has not been reached\nwithin this window, the migration transitions to FAILED. Default applied by the server (configurable).", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "computemigrations.BakingReport": { + "description": "Summary of baking metrics after the baking window completes.", + "fields": { + "successful_runs": { + "description": "Number of successful runs.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "total_runs": { + "description": "Number of runs observed during the baking window.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, + "computemigrations.CancelMigrationRequest": { + "description": "A request to cancel a migration from any non-terminal state.", + "fields": { + "cancellation_reason": { + "description": "Optional free-text reason for the cancellation.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "etag": { + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "computemigrations.CreateMigrationRequest": { + "fields": { + "migration": { + "description": "The migration to create. The server generates `migration_id` and sets `state`\nto PLANNING_PENDING. Required fields: `asset_type`, `asset_uri`.", + "ref": "computemigrations.Migration", + "launch_stage": "PRIVATE_PREVIEW" + }, + "request_id": { + "description": "Client-generated request ID for idempotent request deduplication. The server\nde-duplicates requests with the same request_id for at least 24 hours, returning\nthe existing migration instead of creating a duplicate.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "computemigrations.DeleteMigrationRequest": { + "fields": { + "etag": { + "description": "If nonempty, must match the current resource etag or the request fails with ABORTED.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "computemigrations.GetMigrationRequest": {}, + "computemigrations.ListMigrationsRequest": { + "fields": { + "asset_type": { + "description": "Filter by asset type.", + "ref": "computemigrations.MigrationAssetType", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "page_size": { + "description": "Maximum number of migrations to return. Default: 50, maximum: 1000.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "page_token": { + "description": "Page token from a previous ListMigrations call. When paginating, all other\nparameters must match the call that provided the page token.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "states": { + "description": "Filter by migration state. Returns migrations in any of the specified states.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "computemigrations.ListMigrationsResponse": { + "description": "Response containing a paginated list of migrations matching the request filters.", + "fields": { + "migrations": { + "description": "The migrations matching the request filters.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "next_page_token": { + "description": "Token for the next page. Omitted if there are no more results.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "computemigrations.Migration": { + "description": "A persistent object tracking the full lifecycle of migrating one Classic compute asset\nto Serverless. Each Migration has a well-defined state machine and is the unit of\norchestration, approval, and rollback.", + "fields": { + "asset_type": { + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "ref": "computemigrations.MigrationAssetType", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "IMMUTABLE" + ] + }, + "asset_uri": { + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "IMMUTABLE" + ] + }, + "auto_approve": { + "description": "When true, the server skips the translation review (TRANSLATION_READY) instead of waiting for\nan explicit ApproveMigrationTranslation. MIGRATION_REVIEW is never skipped. Unset/false means the\ntranslation review requires explicit user action. Set at creation; cannot be changed\nafterward. Does not suppress cancellation or terminal failures.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "IMMUTABLE", + "OPTIONAL" + ] + }, + "baking_config": { + "description": "Baking window configuration. Mutable via UpdateMigration before baking starts.", + "ref": "computemigrations.BakingConfig", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "baking_report": { + "description": "Summary of baking metrics after the baking window completes.", + "ref": "computemigrations.BakingReport", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "create_time": { + "description": "Timestamp when the migration was created.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "etag": { + "description": "Resource version for optimistic concurrency control. Clients read this from GetMigration or ListMigrations\nand pass it back as the request `etag` on update, delete, approve, reject, and cancel methods.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "initiator": { + "description": "The user who initiated this migration and their role. Set at creation.", + "ref": "computemigrations.MigrationInitiator", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "migration_id": { + "description": "Server-generated unique identifier for this migration.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "IMMUTABLE" + ] + }, + "migration_report": { + "description": "Agent-produced planning report, presented to the user at the review gates.", + "ref": "computemigrations.MigrationReport", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "run_validation": { + "description": "When true, Databricks runs the working copy to validate it after the translation review.\nUnset/false skips the run, so the migration goes from the translation review straight to\nexecution review. Whether the translation review waits for the user is controlled by\n`auto_approve`, not this field. Set at creation; cannot be changed afterward.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "IMMUTABLE", + "OPTIONAL" + ] + }, + "state": { + "description": "Current state of the migration in the state machine. Managed by the server.", + "ref": "computemigrations.MigrationState", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "state_history": { + "description": "History of state transitions, ordered chronologically. Each entry records the state\nentered and the timestamp of the transition.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "validation_report": { + "description": "Agent-produced validation results from sandbox execution.", + "ref": "computemigrations.ValidationReport", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, + "computemigrations.MigrationAsset": { + "description": "A working copy (job or notebook) the migration agent created for the migration.", + "fields": { + "asset_type": { + "description": "Type of asset this working copy represents.", + "ref": "computemigrations.MigrationAssetType", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "id": { + "description": "Identifier of the asset.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "uri": { + "description": "Link to the asset, e.g. \"jobs/12345\".", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, + "computemigrations.MigrationAssetType": { + "description": "Type of a migration asset: the Classic asset being migrated, or an asset the migration agent\ncreated for it. Migrations can only be created for JOB assets.", + "enum": [ + "JOB", + "INTERACTIVE", + "FILE" + ], + "enum_launch_stages": { + "FILE": "PRIVATE_PREVIEW", + "INTERACTIVE": "PRIVATE_PREVIEW", + "JOB": "PRIVATE_PREVIEW" + } + }, + "computemigrations.MigrationInitiator": { + "description": "The initiator of a migration, including their role and user identity.", + "fields": { + "role": { + "description": "The role of the initiator, determining approval authority. Set by the server: the role is\nresolved from the caller's identity and permissions on the asset, never taken from the\nrequest, since a caller must not be able to assert its own approval authority.", + "ref": "computemigrations.MigrationInitiatorRole", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "user_id": { + "description": "The user ID of the initiator. Set by the server from the request context.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, + "computemigrations.MigrationInitiatorRole": { + "description": "Role of the migration initiator, determining approval authority.", + "enum": [ + "WORKSPACE_ADMIN", + "JOB_ADMIN", + "ACCOUNT_ADMIN", + "SYSTEM" + ], + "enum_launch_stages": { + "ACCOUNT_ADMIN": "PRIVATE_PREVIEW", + "JOB_ADMIN": "PRIVATE_PREVIEW", + "SYSTEM": "PRIVATE_PREVIEW", + "WORKSPACE_ADMIN": "PRIVATE_PREVIEW" + } + }, + "computemigrations.MigrationReport": { + "description": "Agent-produced planning report, presented to the user at the review gates.", + "fields": { + "primary_asset": { + "description": "The primary asset the agent created — the entry point / validation target.", + "ref": "computemigrations.MigrationAsset", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "secondary_assets": { + "description": "Additional assets the agent created (e.g. notebooks or jobs the primary asset invokes).", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, + "computemigrations.MigrationState": { + "description": "The state of a migration in its lifecycle.", + "enum": [ + "PLANNING_PENDING", + "PLANNING_RUNNING", + "PLANNING_REVIEW", + "REVISION_PENDING", + "TRANSLATION_PENDING", + "TRANSLATION_CREATING", + "TRANSLATION_READY", + "MIGRATION_REVIEW", + "MIGRATION_PENDING", + "MIGRATION_RUNNING", + "MIGRATION_OBSERVATION", + "MIGRATION_COMPLETE", + "NOT_SUPPORTED", + "FAILED", + "CANCELLED", + "VALIDATION_SCHEDULING", + "VALIDATION_RUNNING" + ], + "enum_launch_stages": { + "CANCELLED": "PRIVATE_PREVIEW", + "FAILED": "PRIVATE_PREVIEW", + "MIGRATION_COMPLETE": "PRIVATE_PREVIEW", + "MIGRATION_OBSERVATION": "PRIVATE_PREVIEW", + "MIGRATION_PENDING": "PRIVATE_PREVIEW", + "MIGRATION_REVIEW": "PRIVATE_PREVIEW", + "MIGRATION_RUNNING": "PRIVATE_PREVIEW", + "NOT_SUPPORTED": "PRIVATE_PREVIEW", + "PLANNING_PENDING": "PRIVATE_PREVIEW", + "PLANNING_REVIEW": "PRIVATE_PREVIEW", + "PLANNING_RUNNING": "PRIVATE_PREVIEW", + "REVISION_PENDING": "PRIVATE_PREVIEW", + "TRANSLATION_CREATING": "PRIVATE_PREVIEW", + "TRANSLATION_PENDING": "PRIVATE_PREVIEW", + "TRANSLATION_READY": "PRIVATE_PREVIEW", + "VALIDATION_RUNNING": "PRIVATE_PREVIEW", + "VALIDATION_SCHEDULING": "PRIVATE_PREVIEW" + } + }, + "computemigrations.MigrationStateTransition": { + "description": "A record of a state transition in the migration lifecycle.", + "fields": { + "internal_comment": { + "description": "Free-text the service recorded for this transition — e.g. an internally-determined\ncancellation or failure reason. Empty for user-driven transitions.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "state": { + "description": "The state that was entered.", + "ref": "computemigrations.MigrationState", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "transition_time": { + "description": "Timestamp when this state was entered.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "user_comment": { + "description": "Free-text the initiating user supplied at a user-driven transition — reviewer feedback on an\napproval, or the reason for a rejection or cancellation. Empty for transitions the service\ndrives internally.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, + "computemigrations.RejectMigrationExecutionRequest": { + "description": "A request to reject migration execution at the MIGRATION_REVIEW gate, looping back to\nREVISION_PENDING.", + "fields": { + "etag": { + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "rejection_reason": { + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "computemigrations.RejectMigrationTranslationRequest": { + "description": "A request to reject the working copy at the TRANSLATION_READY gate, looping back to\nREVISION_PENDING.", + "fields": { + "etag": { + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "rejection_reason": { + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "computemigrations.ValidationReport": { + "description": "Validation results from running the translated workload in the sandbox.", + "fields": { + "duration_ms": { + "description": "Duration of the sandbox validation run in milliseconds. Pair with start_time\nto derive the end time.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "passed": { + "description": "Databricks-internal recommendation on whether to proceed with the migration, based on the\nvalidation run. May differ from run_status: a run can succeed while the recommendation is\nnegative, or vice versa.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "run_status": { + "description": "Status of the validation run itself (the objective run outcome), as reported by the run\nsystem, e.g. \"SUCCESS\" / \"FAILED\" / \"TIMED_OUT\".", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "run_url": { + "description": "Link to the validation run (job or notebook).", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "start_time": { + "description": "Timestamp when validation started in the sandbox.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, "dashboards.AuthorizationDetails": { "fields": { "grant_rules": { @@ -25852,16 +26392,16 @@ "AGGREGATION_GRANULARITY_1_YEAR" ], "enum_launch_stages": { - "AGGREGATION_GRANULARITY_1_DAY": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_1_HOUR": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_1_MONTH": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_1_WEEK": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_1_YEAR": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_2_WEEKS": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_30_MINUTES": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_3_WEEKS": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_4_WEEKS": "PUBLIC_PREVIEW", - "AGGREGATION_GRANULARITY_5_MINUTES": "PUBLIC_PREVIEW" + "AGGREGATION_GRANULARITY_1_DAY": "GA", + "AGGREGATION_GRANULARITY_1_HOUR": "GA", + "AGGREGATION_GRANULARITY_1_MONTH": "GA", + "AGGREGATION_GRANULARITY_1_WEEK": "GA", + "AGGREGATION_GRANULARITY_1_YEAR": "GA", + "AGGREGATION_GRANULARITY_2_WEEKS": "GA", + "AGGREGATION_GRANULARITY_30_MINUTES": "GA", + "AGGREGATION_GRANULARITY_3_WEEKS": "GA", + "AGGREGATION_GRANULARITY_4_WEEKS": "GA", + "AGGREGATION_GRANULARITY_5_MINUTES": "GA" } }, "dataquality.AnomalyDetectionConfig": { @@ -25877,7 +26417,7 @@ "notification_settings": { "description": "Who to alert when anomaly detection finds unhealthy tables in this schema. Applicable to\n`schema` monitors only. This is the same schema alert you manage from **Manage alerts** in the\nData Quality Monitoring UI, so a change made in either place shows in both.\n\nSet the recipients in `on_unhealthy_table`; `on_failure` is not supported here. Only\n`destination_ids` and `destination_user_ids` are supported.\n\nOn update, an update mask of `*`, `anomaly_detection_config`, or\n`anomaly_detection_config.notification_settings` replaces the alert's recipients with the ones\nin the request; omitting the field, or leaving both recipient lists empty, removes the alert.\nOther masks leave the alert unchanged.", "ref": "dataquality.NotificationSettings", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -25893,7 +26433,7 @@ "refresh": { "description": "The refresh to cancel.", "ref": "dataquality.Refresh", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] @@ -25905,7 +26445,7 @@ "monitor": { "description": "The monitor to create.", "ref": "dataquality.Monitor", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -25914,7 +26454,7 @@ "refresh": { "description": "The refresh to create", "ref": "dataquality.Refresh", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -25924,18 +26464,18 @@ "pause_status": { "description": "Read only field that indicates whether the schedule is paused or not.", "ref": "dataquality.CronSchedulePauseStatus", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] }, "quartz_cron_expression": { "description": "The expression that determines when to run the monitor. See [examples](https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html).", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "timezone_id": { "description": "A Java timezone id. The schedule for a job will be resolved with respect to this timezone.\nSee `Java TimeZone \u003chttp://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html\u003e`_ for details.\nThe timezone id (e.g., ``America/Los_Angeles``) in which to evaluate the quartz expression.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -25946,8 +26486,8 @@ "CRON_SCHEDULE_PAUSE_STATUS_PAUSED" ], "enum_launch_stages": { - "CRON_SCHEDULE_PAUSE_STATUS_PAUSED": "PUBLIC_PREVIEW", - "CRON_SCHEDULE_PAUSE_STATUS_UNPAUSED": "PUBLIC_PREVIEW" + "CRON_SCHEDULE_PAUSE_STATUS_PAUSED": "GA", + "CRON_SCHEDULE_PAUSE_STATUS_UNPAUSED": "GA" } }, "dataquality.DataProfilingConfig": { @@ -25955,42 +26495,42 @@ "fields": { "assets_dir": { "description": "Field for specifying the absolute path to a custom directory to store data-monitoring\nassets. Normally prepopulated to a default user location via UI and Python APIs.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "baseline_table_name": { "description": "Baseline table name.\nBaseline data is used to compute drift from the data in the monitored `table_name`.\nThe baseline table and the monitored table shall have the same schema.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "custom_metrics": { "description": "Custom metrics.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "dashboard_id": { "description": "Id of dashboard that visualizes the computed metrics.\nThis can be empty if the monitor is in PENDING state.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] }, "drift_metrics_table_name": { "description": "Table that stores drift metrics data. Format: `catalog.schema.table_name`.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] }, "effective_warehouse_id": { "description": "The warehouse for dashboard creation", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] @@ -25998,28 +26538,28 @@ "inference_log": { "description": "`Analysis Configuration` for monitoring inference log tables.", "ref": "dataquality.InferenceLogConfig", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "latest_monitor_failure_message": { "description": "The latest error message for a monitor failure.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] }, "monitor_version": { "description": "Represents the current monitor configuration version in use. The version will be represented in a\nnumeric fashion (1,2,3...). The field has flexibility to take on negative values, which can indicate corrupted\nmonitor_version numbers.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] }, "monitored_table_name": { "description": "Unity Catalog table to monitor. Format: `catalog.schema.table_name`", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] @@ -26027,18 +26567,18 @@ "notification_settings": { "description": "Field for specifying notification settings.", "ref": "dataquality.NotificationSettings", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "output_schema_id": { "description": "ID of the schema where output tables are created.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "profile_metrics_table_name": { "description": "Table that stores profile metrics data. Format: `catalog.schema.table_name`.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] @@ -26046,14 +26586,14 @@ "schedule": { "description": "The cron schedule.", "ref": "dataquality.CronSchedule", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "skip_builtin_dashboard": { "description": "Whether to skip creating a default dashboard summarizing data quality metrics.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "INPUT_ONLY", "OPTIONAL" @@ -26061,7 +26601,7 @@ }, "slicing_exprs": { "description": "List of column expressions to slice data with for targeted analysis. The data is grouped by\neach expression independently, resulting in a separate slice for each predicate and its\ncomplements. For example `slicing_exprs=[“col_1”, “col_2 \u003e 10”]` will generate the following\nslices: two slices for `col_2 \u003e 10` (True and False), and one slice per unique value in\n`col1`. For high-cardinality columns, only the top 100 unique values by frequency will\ngenerate slices.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -26069,7 +26609,7 @@ "snapshot": { "description": "`Analysis Configuration` for monitoring snapshot tables.", "ref": "dataquality.SnapshotConfig", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -26077,7 +26617,7 @@ "status": { "description": "The data profiling monitor status.", "ref": "dataquality.DataProfilingStatus", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] @@ -26085,14 +26625,14 @@ "time_series": { "description": "`Analysis Configuration` for monitoring time series tables.", "ref": "dataquality.TimeSeriesConfig", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "warehouse_id": { "description": "Optional argument to specify the warehouse for dashboard creation. If not specified, the first running\nwarehouse will be used.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "INPUT_ONLY", "OPTIONAL" @@ -26105,24 +26645,24 @@ "fields": { "definition": { "description": "Jinja template for a SQL expression that specifies how to compute the metric. See [create metric definition](https://docs.databricks.com/en/lakehouse-monitoring/custom-metrics.html#create-definition).", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "input_columns": { "description": "A list of column names in the input table the metric should be computed for.\nCan use ``\":table\"`` to indicate that the metric needs information from multiple columns.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "name": { "description": "Name of the metric in the output tables.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "output_data_type": { "description": "The output type of the custom metric.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "type": { "description": "The type of the custom metric.", "ref": "dataquality.DataProfilingCustomMetricType", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -26134,9 +26674,9 @@ "DATA_PROFILING_CUSTOM_METRIC_TYPE_DRIFT" ], "enum_launch_stages": { - "DATA_PROFILING_CUSTOM_METRIC_TYPE_AGGREGATE": "PUBLIC_PREVIEW", - "DATA_PROFILING_CUSTOM_METRIC_TYPE_DERIVED": "PUBLIC_PREVIEW", - "DATA_PROFILING_CUSTOM_METRIC_TYPE_DRIFT": "PUBLIC_PREVIEW" + "DATA_PROFILING_CUSTOM_METRIC_TYPE_AGGREGATE": "GA", + "DATA_PROFILING_CUSTOM_METRIC_TYPE_DERIVED": "GA", + "DATA_PROFILING_CUSTOM_METRIC_TYPE_DRIFT": "GA" } }, "dataquality.DataProfilingStatus": { @@ -26149,11 +26689,11 @@ "DATA_PROFILING_STATUS_FAILED" ], "enum_launch_stages": { - "DATA_PROFILING_STATUS_ACTIVE": "PUBLIC_PREVIEW", - "DATA_PROFILING_STATUS_DELETE_PENDING": "PUBLIC_PREVIEW", - "DATA_PROFILING_STATUS_ERROR": "PUBLIC_PREVIEW", - "DATA_PROFILING_STATUS_FAILED": "PUBLIC_PREVIEW", - "DATA_PROFILING_STATUS_PENDING": "PUBLIC_PREVIEW" + "DATA_PROFILING_STATUS_ACTIVE": "GA", + "DATA_PROFILING_STATUS_DELETE_PENDING": "GA", + "DATA_PROFILING_STATUS_ERROR": "GA", + "DATA_PROFILING_STATUS_FAILED": "GA", + "DATA_PROFILING_STATUS_PENDING": "GA" } }, "dataquality.DeleteMonitorRequest": {}, @@ -26165,31 +26705,31 @@ "fields": { "granularities": { "description": "List of granularities to use when aggregating data into time windows based on their timestamp.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "label_column": { "description": "Column for the label.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "model_id_column": { "description": "Column for the model identifier.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "prediction_column": { "description": "Column for the prediction.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "problem_type": { "description": "Problem type the model aims to solve.", "ref": "dataquality.InferenceProblemType", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "timestamp_column": { "description": "Column for the timestamp.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -26200,20 +26740,20 @@ "INFERENCE_PROBLEM_TYPE_REGRESSION" ], "enum_launch_stages": { - "INFERENCE_PROBLEM_TYPE_CLASSIFICATION": "PUBLIC_PREVIEW", - "INFERENCE_PROBLEM_TYPE_REGRESSION": "PUBLIC_PREVIEW" + "INFERENCE_PROBLEM_TYPE_CLASSIFICATION": "GA", + "INFERENCE_PROBLEM_TYPE_REGRESSION": "GA" } }, "dataquality.ListMonitorRequest": { "fields": { "page_size": { - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "page_token": { - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -26224,23 +26764,23 @@ "description": "Response for listing Monitors.", "fields": { "monitors": { - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "next_page_token": { - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, "dataquality.ListRefreshRequest": { "fields": { "page_size": { - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "page_token": { - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -26251,10 +26791,10 @@ "description": "Response for listing refreshes.", "fields": { "next_page_token": { - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "refreshes": { - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -26264,7 +26804,7 @@ "anomaly_detection_config": { "description": "Anomaly Detection Configuration, applicable to `schema` object types.", "ref": "dataquality.AnomalyDetectionConfig", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -26272,18 +26812,18 @@ "data_profiling_config": { "description": "Data Profiling Configuration, applicable to `table` object types. Exactly one `Analysis Configuration`\nmust be present.", "ref": "dataquality.DataProfilingConfig", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "object_id": { "description": "The UUID of the request object. It is `schema_id` for `schema`, and `table_id` for `table`.\n\nFind the `schema_id` from either:\n1. The [schema_id](https://docs.databricks.com/api/workspace/schemas/get#schema_id) of the `Schemas` resource.\n2. In [Catalog Explorer](https://docs.databricks.com/aws/en/catalog-explorer/) \u003e select the `schema` \u003e go to the `Details` tab \u003e the `Schema ID` field.\n\nFind the `table_id` from either:\n1. The [table_id](https://docs.databricks.com/api/workspace/tables/get#table_id) of the `Tables` resource.\n2. In [Catalog Explorer](https://docs.databricks.com/aws/en/catalog-explorer/) \u003e select the `table` \u003e go to the `Details` tab \u003e the `Table ID` field.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "object_type": { "description": "The type of the monitored object. Can be one of the following: `schema` or `table`.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -26292,21 +26832,21 @@ "fields": { "destination_ids": { "description": "The notification-destination IDs (Slack / Teams / webhook) to send the notification to. The\ndestinations must already exist in the workspace; a workspace admin creates them. A maximum of\n25 destination IDs is supported.\nOnly supported on schema monitors, via `anomaly_detection_config`; rejected on table monitors.", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "destination_user_ids": { "description": "The IDs of the workspace users to notify by email. A maximum of 25 user IDs is supported.\nOnly supported on schema monitors, via `anomaly_detection_config`; rejected on table monitors.", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] }, "email_addresses": { "description": "The list of email addresses to send the notification to. A maximum of 5 email addresses is supported.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -26319,7 +26859,7 @@ "on_failure": { "description": "Destinations to send notifications on failure/timeout.", "ref": "dataquality.NotificationDestination", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -26327,7 +26867,7 @@ "on_unhealthy_table": { "description": "Recipients to notify when anomaly detection finds unhealthy tables in the schema. Each\nrecipient gets one notification per important unhealthy table. Only supported on schema\nmonitors, via `anomaly_detection_config`.", "ref": "dataquality.NotificationDestination", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -26339,36 +26879,36 @@ "fields": { "end_time_ms": { "description": "Time when the refresh ended (milliseconds since 1/1/1970 UTC).", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] }, "message": { "description": "An optional message to give insight into the current state of the refresh (e.g. FAILURE messages).", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] }, "object_id": { "description": "The UUID of the request object. It is `schema_id` for `schema`, and `table_id` for `table`.\n\nFind the `schema_id` from either:\n1. The [schema_id](https://docs.databricks.com/api/workspace/schemas/get#schema_id) of the `Schemas` resource.\n2. In [Catalog Explorer](https://docs.databricks.com/aws/en/catalog-explorer/) \u003e select the `schema` \u003e go to the `Details` tab \u003e the `Schema ID` field.\n\nFind the `table_id` from either:\n1. The [table_id](https://docs.databricks.com/api/workspace/tables/get#table_id) of the `Tables` resource.\n2. In [Catalog Explorer](https://docs.databricks.com/aws/en/catalog-explorer/) \u003e select the `table` \u003e go to the `Details` tab \u003e the `Table ID` field.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "object_type": { "description": "The type of the monitored object. Can be one of the following: `schema` or `table`.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "refresh_id": { "description": "Unique id of the refresh operation.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] }, "start_time_ms": { "description": "Time when the refresh started (milliseconds since 1/1/1970 UTC).", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] @@ -26376,7 +26916,7 @@ "state": { "description": "The current state of the refresh.", "ref": "dataquality.RefreshState", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] @@ -26384,7 +26924,7 @@ "trigger": { "description": "What triggered the refresh.", "ref": "dataquality.RefreshTrigger", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OUTPUT_ONLY" ] @@ -26402,12 +26942,12 @@ "MONITOR_REFRESH_STATE_CANCELED" ], "enum_launch_stages": { - "MONITOR_REFRESH_STATE_CANCELED": "PUBLIC_PREVIEW", - "MONITOR_REFRESH_STATE_FAILED": "PUBLIC_PREVIEW", - "MONITOR_REFRESH_STATE_PENDING": "PUBLIC_PREVIEW", - "MONITOR_REFRESH_STATE_RUNNING": "PUBLIC_PREVIEW", - "MONITOR_REFRESH_STATE_SUCCESS": "PUBLIC_PREVIEW", - "MONITOR_REFRESH_STATE_UNKNOWN": "PUBLIC_PREVIEW" + "MONITOR_REFRESH_STATE_CANCELED": "GA", + "MONITOR_REFRESH_STATE_FAILED": "GA", + "MONITOR_REFRESH_STATE_PENDING": "GA", + "MONITOR_REFRESH_STATE_RUNNING": "GA", + "MONITOR_REFRESH_STATE_SUCCESS": "GA", + "MONITOR_REFRESH_STATE_UNKNOWN": "GA" } }, "dataquality.RefreshTrigger": { @@ -26419,10 +26959,10 @@ "MONITOR_REFRESH_TRIGGER_DATA_CHANGE" ], "enum_launch_stages": { - "MONITOR_REFRESH_TRIGGER_DATA_CHANGE": "PUBLIC_PREVIEW", - "MONITOR_REFRESH_TRIGGER_MANUAL": "PUBLIC_PREVIEW", - "MONITOR_REFRESH_TRIGGER_SCHEDULE": "PUBLIC_PREVIEW", - "MONITOR_REFRESH_TRIGGER_UNKNOWN": "PUBLIC_PREVIEW" + "MONITOR_REFRESH_TRIGGER_DATA_CHANGE": "GA", + "MONITOR_REFRESH_TRIGGER_MANUAL": "GA", + "MONITOR_REFRESH_TRIGGER_SCHEDULE": "GA", + "MONITOR_REFRESH_TRIGGER_UNKNOWN": "GA" } }, "dataquality.SnapshotConfig": { @@ -26433,11 +26973,11 @@ "fields": { "granularities": { "description": "List of granularities to use when aggregating data into time windows based on their timestamp.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "timestamp_column": { "description": "Column for the timestamp.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -26446,11 +26986,11 @@ "monitor": { "description": "The monitor to update.", "ref": "dataquality.Monitor", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "update_mask": { "description": "The field mask to specify which fields to update as a comma-separated list.\nExample value: `data_profiling_config.custom_metrics,data_profiling_config.schedule.quartz_cron_expression`", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -26459,11 +26999,11 @@ "refresh": { "description": "The refresh to update.", "ref": "dataquality.Refresh", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" }, "update_mask": { "description": "The field mask to specify which fields to update.", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "GA" } } }, @@ -27937,6 +28477,810 @@ } } }, + "genieagents.CreateGenieAgentRequest": { + "fields": { + "genie_agent": { + "description": "The Genie Agent to create.", + "ref": "genieagents.GenieAgent", + "launch_stage": "PRIVATE_PREVIEW" + }, + "genie_agent_id": { + "description": "The ID for the new Genie Agent: 32 lowercase hexadecimal characters (a UUID without dashes), not\nall zeros. Assigned by the server if omitted. Fails with ALREADY_EXISTS if the ID is in use in\nthe workspace, including by a Genie Agent in the trash, or PERMISSION_DENIED if the caller\ncannot view the Genie Agent using it.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.DeleteGenieAgentRequest": { + "fields": { + "etag": { + "description": "Etag from a previous read. On mismatch the delete fails with ABORTED and nothing is deleted.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgent": { + "description": "A Genie Agent resource.", + "fields": { + "create_time": { + "description": "Time when the Genie Agent was created.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "definition": { + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "ref": "genieagents.GenieAgentDefinition", + "launch_stage": "PRIVATE_PREVIEW" + }, + "description": { + "description": "Description of the Genie Agent.\n\nThe maximum length is 4,096 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "display_name": { + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "effective_parent_path": { + "description": "The workspace folder that contains the Genie Agent.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "etag": { + "description": "Weak etag of `definition` only; metadata changes do not affect it. Send it on update or\ndelete to detect concurrent definition changes.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "name": { + "description": "The resource name of the Genie Agent, in the form `agents/{genie_agent_id}`. Ignored on create.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "parent_path": { + "description": "The workspace folder to create the Genie Agent in. If omitted, the caller's home folder is\nused. Returned exactly as submitted; see `effective_parent_path` for the current folder. On\nupdate, setting it moves the Genie Agent and clearing it does not. At most 4,096 characters.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "update_time": { + "description": "Time when the Genie Agent was last modified.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "warehouse_id": { + "description": "Warehouse associated with the Genie Agent.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentBenchmarkAnswer": { + "description": "The expected answer to a benchmark question.", + "fields": { + "content": { + "description": "The answer.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "format": { + "description": "The format of the answer.", + "ref": "genieagents.GenieAgentBenchmarkAnswerFormat", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentBenchmarkAnswerFormat": { + "description": "The format of a benchmark answer.", + "enum": [ + "GENIE_AGENT_BENCHMARK_ANSWER_FORMAT_SQL" + ], + "enum_launch_stages": { + "GENIE_AGENT_BENCHMARK_ANSWER_FORMAT_SQL": "PRIVATE_PREVIEW" + } + }, + "genieagents.GenieAgentBenchmarkQuestion": { + "description": "A benchmark question with its expected answer.", + "fields": { + "answer": { + "description": "The expected answer. At most one answer is supported; omit it when the question has no\nexpected answer.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "evaluation_note": { + "description": "Notes on how to evaluate answers to the question.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "id": { + "description": "Identifier of the question: 32 lowercase hexadecimal characters, unique within the Genie\nAgent.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "question": { + "description": "The question.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentBenchmarks": { + "description": "Benchmarks for evaluating a Genie Agent.", + "fields": { + "questions": { + "description": "The benchmark questions, sorted by `id` in descending order.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentColumnConfig": { + "description": "Settings for one column of a table or metric view.", + "fields": { + "column": { + "description": "The name of the column. Must exist in the table or metric view.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "description": { + "description": "Description of the column, overriding its Unity Catalog comment.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "display_name": { + "description": "Display name of the column in the Genie Agent. Accepted only where column display names are\nenabled for the workspace.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "enable_entity_matching": { + "description": "Whether the Genie Agent indexes the column's values to match them in questions.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "enable_format_assistance": { + "description": "Whether the Genie Agent samples example values from the column to learn its format.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "exclude": { + "description": "Whether the column is hidden from the Genie Agent.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "synonyms": { + "description": "Synonyms for the column name.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentConfig": { + "description": "General settings of a Genie Agent. The warehouse, display name, and description are separate\nfields of the Genie Agent.", + "fields": { + "sample_questions": { + "description": "Sample questions shown to users of the Genie Agent, sorted by `id`.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentDataSources": { + "description": "The data a Genie Agent can access.", + "fields": { + "mcp_connections": { + "description": "Unity Catalog MCP connections, sorted by `mcp_connection`.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "tables": { + "description": "Unity Catalog tables, views, and metric views, in the order they were added.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "volumes": { + "description": "Unity Catalog volumes, in the order they were added.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentDefinition": { + "description": "The definition of a Genie Agent.", + "fields": { + "benchmarks": { + "description": "Benchmarks for evaluating the quality of the Genie Agent's answers.", + "ref": "genieagents.GenieAgentBenchmarks", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "config": { + "description": "General settings of the Genie Agent.", + "ref": "genieagents.GenieAgentConfig", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "data_sources": { + "description": "The data the Genie Agent can access.", + "ref": "genieagents.GenieAgentDataSources", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "instructions": { + "description": "Instructions and SQL that guide how the Genie Agent answers questions.", + "ref": "genieagents.GenieAgentInstructions", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentExampleQuestionSql": { + "description": "An example question paired with the SQL that answers it.", + "fields": { + "id": { + "description": "Identifier of the example: 32 lowercase hexadecimal characters, unique within the Genie Agent.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "parameters": { + "description": "Parameters used in the SQL, in the order given.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "question": { + "description": "The question.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "sql": { + "description": "The SQL that answers the question.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "usage_guidance": { + "description": "Guidance on when to use this example.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentInstructions": { + "description": "Instructions and SQL that guide how a Genie Agent answers questions.", + "fields": { + "example_question_sqls": { + "description": "Example questions paired with the SQL that answers them.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "join_specs": { + "description": "Predefined joins between tables or metric views.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "sql_functions": { + "description": "Unity Catalog SQL functions the generated SQL may call.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "sql_snippets": { + "description": "Reusable SQL filters, expressions, and measures.", + "ref": "genieagents.GenieAgentSqlSnippets", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "text_instructions": { + "description": "General text instructions. At most one text instruction is supported.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentJoinRelationshipType": { + "description": "How the rows of the two sides of a join relate.", + "enum": [ + "GENIE_AGENT_JOIN_RELATIONSHIP_TYPE_MANY_TO_ONE", + "GENIE_AGENT_JOIN_RELATIONSHIP_TYPE_ONE_TO_MANY", + "GENIE_AGENT_JOIN_RELATIONSHIP_TYPE_ONE_TO_ONE", + "GENIE_AGENT_JOIN_RELATIONSHIP_TYPE_MANY_TO_MANY" + ], + "enum_launch_stages": { + "GENIE_AGENT_JOIN_RELATIONSHIP_TYPE_MANY_TO_MANY": "PRIVATE_PREVIEW", + "GENIE_AGENT_JOIN_RELATIONSHIP_TYPE_MANY_TO_ONE": "PRIVATE_PREVIEW", + "GENIE_AGENT_JOIN_RELATIONSHIP_TYPE_ONE_TO_MANY": "PRIVATE_PREVIEW", + "GENIE_AGENT_JOIN_RELATIONSHIP_TYPE_ONE_TO_ONE": "PRIVATE_PREVIEW" + } + }, + "genieagents.GenieAgentJoinSource": { + "description": "One side of a join.", + "fields": { + "alias": { + "description": "The alias the join condition uses for this side.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "identifier": { + "description": "The full three-level name of the table or metric view.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentJoinSpec": { + "description": "A predefined join between two tables or metric views.", + "fields": { + "comment": { + "description": "Description of the join's purpose.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "id": { + "description": "Identifier of the join: 32 lowercase hexadecimal characters, unique within the Genie Agent.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "instruction": { + "description": "Guidance on when to use the join.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "left": { + "description": "The left side of the join.", + "ref": "genieagents.GenieAgentJoinSource", + "launch_stage": "PRIVATE_PREVIEW" + }, + "relationship_type": { + "description": "How the rows of the two sides relate.", + "ref": "genieagents.GenieAgentJoinRelationshipType", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "right": { + "description": "The right side of the join.", + "ref": "genieagents.GenieAgentJoinSource", + "launch_stage": "PRIVATE_PREVIEW" + }, + "sql": { + "description": "The join condition, for example `orders.customer_id = customers.id`.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentMcpConnection": { + "description": "A Unity Catalog MCP connection the Genie Agent can use.", + "fields": { + "mcp_connection": { + "description": "The name of the Unity Catalog connection, for example `system.ai.google_calendar`.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentSampleQuestion": { + "description": "A sample question shown to users of the Genie Agent.", + "fields": { + "id": { + "description": "Identifier of the sample question: 32 lowercase hexadecimal characters, unique within the\nGenie Agent.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "question": { + "description": "The text of the question.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentSqlExpression": { + "description": "A reusable non-aggregated SQL expression (dimension).", + "fields": { + "alias": { + "description": "The alias the Genie Agent uses for the expression in generated SQL.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "display_name": { + "description": "Display name of the expression.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "id": { + "description": "Identifier of the expression: 32 lowercase hexadecimal characters, unique within the Genie\nAgent.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "instruction": { + "description": "Guidance on when to use the expression.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "sql": { + "description": "The SQL of the expression.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "synonyms": { + "description": "Synonyms for the expression.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentSqlFilter": { + "description": "A reusable SQL filter.", + "fields": { + "display_name": { + "description": "Display name of the filter.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "id": { + "description": "Identifier of the filter: 32 lowercase hexadecimal characters, unique within the Genie Agent.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "instruction": { + "description": "Guidance on when to use the filter.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "sql": { + "description": "The SQL of the filter.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "synonyms": { + "description": "Synonyms for the filter.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentSqlFunction": { + "description": "A Unity Catalog SQL function the generated SQL may call.", + "fields": { + "id": { + "description": "Identifier of the entry: 32 lowercase hexadecimal characters, unique within the Genie Agent.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "identifier": { + "description": "The full three-level name of the function, for example `catalog.schema.function`.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentSqlMeasure": { + "description": "A reusable aggregated SQL measure.", + "fields": { + "alias": { + "description": "The alias the Genie Agent uses for the measure in generated SQL.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "display_name": { + "description": "Display name of the measure.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "id": { + "description": "Identifier of the measure: 32 lowercase hexadecimal characters, unique within the Genie Agent.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "instruction": { + "description": "Guidance on when to use the measure.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "sql": { + "description": "The SQL of the measure.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "synonyms": { + "description": "Synonyms for the measure.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentSqlParameter": { + "description": "A parameter of a parameterized SQL example.", + "fields": { + "default_value": { + "description": "The parameter's default value.", + "ref": "genieagents.GenieAgentSqlParameterDefaultValue", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "description": { + "description": "Description of the parameter.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "name": { + "description": "The name of the parameter in the SQL.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "type_hint": { + "description": "The parameter's data type, for example `STRING` or `INTEGER`.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentSqlParameterDefaultRange": { + "description": "A range of default values for a SQL parameter.", + "fields": { + "max": { + "description": "The upper end of the range.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "min": { + "description": "The lower end of the range.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentSqlParameterDefaultValue": { + "description": "The default value of a SQL parameter: a list of values or a range.", + "fields": { + "value_range": { + "description": "The default range.", + "ref": "genieagents.GenieAgentSqlParameterDefaultRange", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "values": { + "description": "The default values. A single default is a one-element list.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentSqlSnippets": { + "description": "Reusable SQL snippets.", + "fields": { + "expressions": { + "description": "Non-aggregated expressions (dimensions), such as `price * units`.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "filters": { + "description": "Filters, such as `state = 'CA'`.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "measures": { + "description": "Aggregated measures, such as `SUM(price * units)`.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.GenieAgentTable": { + "description": "A Unity Catalog table, view, or metric view the Genie Agent can access.", + "fields": { + "column_configs": { + "description": "Column settings for the table, sorted by `column`.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "description": { + "description": "Description of the table.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "identifier": { + "description": "The full three-level name, for example `catalog.schema.table`.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentTextInstruction": { + "description": "A general text instruction for the Genie Agent.", + "fields": { + "content": { + "description": "The text of the instruction.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "id": { + "description": "Identifier of the instruction: 32 lowercase hexadecimal characters, unique within the Genie\nAgent.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GenieAgentView": { + "description": "The fields returned for each Genie Agent in a list response.", + "enum": [ + "GENIE_AGENT_VIEW_BASIC", + "GENIE_AGENT_VIEW_FULL" + ], + "enum_launch_stages": { + "GENIE_AGENT_VIEW_BASIC": "PRIVATE_PREVIEW", + "GENIE_AGENT_VIEW_FULL": "PRIVATE_PREVIEW" + } + }, + "genieagents.GenieAgentVolume": { + "description": "A Unity Catalog volume the Genie Agent can access.", + "fields": { + "description": { + "description": "Description of the volume.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "path": { + "description": "The volume path, for example `/Volumes/catalog/schema/volume`. May name a directory or file\nwithin the volume.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "genieagents.GetGenieAgentRequest": {}, + "genieagents.ListGenieAgentsRequest": { + "fields": { + "page_size": { + "description": "Maximum number of Genie Agents to return per page. Defaults to 20 when unset or 0; values above\n100 are coerced to 100. Negative values are rejected with INVALID_PARAMETER_VALUE. With\n`GENIE_AGENT_VIEW_FULL`, a smaller per-page maximum applies.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "page_token": { + "description": "Pagination token from a previous response's `next_page_token`. A token that was not returned\nby this method is rejected with INVALID_PARAMETER_VALUE.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "view": { + "description": "The fields to return for each Genie Agent. Defaults to `GENIE_AGENT_VIEW_BASIC`. Use\n`GENIE_AGENT_VIEW_FULL` only when the agent bodies are needed, since it returns smaller pages.", + "ref": "genieagents.GenieAgentView", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "genieagents.ListGenieAgentsResponse": { + "description": "Response for a list request: a page of Genie Agents plus the token for the next page.", + "fields": { + "genie_agents": { + "description": "The Genie Agents, with the fields selected by the request's `view`.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "next_page_token": { + "description": "Token to get the next page of results.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "unreachable": { + "description": "Resource names, in the form `agents/{genie_agent_id}`, of Genie Agents in this page that could\nnot be read and are omitted from `genie_agents`. Populated only for `GENIE_AGENT_VIEW_FULL`. To\nsee why, get the Genie Agent by name; to retry, repeat the request. Other kinds of resource\nnames may be added to this field in the future.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "UNORDERED_LIST" + ] + } + } + }, + "genieagents.UpdateGenieAgentRequest": { + "fields": { + "etag": { + "description": "Etag from a previous read. On mismatch the update fails with ABORTED (metadata changes may\nalready be applied); get the agent and retry. May return TEMPORARILY_UNAVAILABLE.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "genie_agent": { + "description": "The Genie Agent to update. Its `name` identifies the resource; fields named\nin update_mask are applied.", + "ref": "genieagents.GenieAgent", + "launch_stage": "PRIVATE_PREVIEW" + }, + "update_mask": { + "description": "The set of fields to update. The mask is required and must name at least one\nfield; an empty or absent mask is rejected with INVALID_PARAMETER_VALUE, as is a path that is\nnot an updatable field.\n\nA field named in the mask takes the value from `genie_agent`, even when it is unset there:\nan unset `description` is cleared; an unset `display_name`, `warehouse_id`, or\n`definition` is rejected with INVALID_PARAMETER_VALUE; an unset `parent_path` is cleared\nwithout moving the Genie Agent. `definition` is replaced as a whole; paths within it are\nnot supported.\n\nThe special value `*` replaces the whole Genie Agent, as if every updatable field were named.\nIt must be the only path in the mask. Prefer naming fields explicitly: with `*`, any field\nadded to Genie Agent later is also replaced, so a client unaware of it may clear it.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, "iam.AccessControlRequest": { "fields": { "group_name": { @@ -29788,6 +31132,13 @@ "description": "Required. Group to be created in Databricks", "ref": "iamv2.Group", "launch_stage": "PUBLIC_BETA" + }, + "parent": { + "description": "The resource name of the account to create the group in, `accounts/{account_id}`.\nOptional: defaults to the account of the calling workspace, and any other account is\nrejected.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] } } }, @@ -29818,6 +31169,13 @@ }, "iamv2.CreateServicePrincipalProxyRequest": { "fields": { + "parent": { + "description": "The resource name of the account to create the service principal in, `accounts/{account_id}`.\nOptional: defaults to the account of the calling workspace, and any other account is\nrejected.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, "service_principal": { "description": "Required. Service principal to be created in Databricks", "ref": "iamv2.ServicePrincipal", @@ -29836,6 +31194,13 @@ }, "iamv2.CreateUserProxyRequest": { "fields": { + "parent": { + "description": "The resource name of the account to create the user in, `accounts/{account_id}`.\nOptional: defaults to the account of the calling workspace, and any other account is\nrejected.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, "user": { "description": "Required. User to be created in Databricks", "ref": "iamv2.User", @@ -29872,6 +31237,13 @@ }, "iamv2.CreateWorkspaceAssignmentProxyRequest": { "fields": { + "parent": { + "description": "The resource name of the workspace to assign the principal to,\n`accounts/{account_id}/workspaces/{workspace_id}`. Optional: defaults to the calling workspace,\nand any other workspace is rejected.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, "workspace_assignment": { "description": "Required. Workspace assignment to be created in Databricks.", "ref": "iamv2.WorkspaceAssignment", @@ -29934,6 +31306,18 @@ "OUTPUT_ONLY" ] }, + "name": { + "description": "The resource name of the group membership. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}\n- Workspace-scoped: groups/{group_id}/direct-members/{principal_id}", + "launch_stage": "PUBLIC_BETA" + }, + "parent": { + "description": "The resource name of the group that contains the membership. The format depends on the API\nthat returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "IMMUTABLE", + "OUTPUT_ONLY" + ] + }, "principal_id": { "description": "Internal ID of the principal in Databricks.", "launch_stage": "PUBLIC_BETA", @@ -30209,6 +31593,7 @@ "description": "The parent account ID for group in Databricks.", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OUTPUT_ONLY" ] }, @@ -30223,6 +31608,7 @@ "description": "Internal group ID of the group in Databricks.", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OUTPUT_ONLY" ] }, @@ -30232,6 +31618,18 @@ "behaviors": [ "OPTIONAL" ] + }, + "name": { + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", + "launch_stage": "PUBLIC_BETA" + }, + "parent": { + "description": "The resource name of the account that contains the group, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "IMMUTABLE", + "OUTPUT_ONLY" + ] } } }, @@ -30363,6 +31761,13 @@ "behaviors": [ "OPTIONAL" ] + }, + "parent": { + "description": "The resource name of the account to list groups in, `accounts/{account_id}`. Optional:\ndefaults to the account of the calling workspace, and any other account is rejected.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] } } }, @@ -30456,6 +31861,13 @@ "behaviors": [ "OPTIONAL" ] + }, + "parent": { + "description": "The resource name of the account to list service principals in, `accounts/{account_id}`. Optional:\ndefaults to the account of the calling workspace, and any other account is rejected.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] } } }, @@ -30567,6 +31979,13 @@ "behaviors": [ "OPTIONAL" ] + }, + "parent": { + "description": "The resource name of the account to list users in, `accounts/{account_id}`. Optional:\ndefaults to the account of the calling workspace, and any other account is rejected.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] } } }, @@ -30669,6 +32088,13 @@ "behaviors": [ "OPTIONAL" ] + }, + "parent": { + "description": "The resource name of the workspace to list assignments of,\n`accounts/{account_id}/workspaces/{workspace_id}`. Optional: defaults to the calling workspace,\nand any other workspace is rejected.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] } } }, @@ -30824,6 +32250,7 @@ "description": "The parent account ID for the service principal in Databricks.", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OUTPUT_ONLY" ] }, @@ -30851,10 +32278,23 @@ "OPTIONAL" ] }, + "name": { + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", + "launch_stage": "PUBLIC_BETA" + }, + "parent": { + "description": "The resource name of the account that contains the service principal,\n`accounts/{account_id}`. Both the account-scoped and workspace-scoped APIs return it.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "IMMUTABLE", + "OUTPUT_ONLY" + ] + }, "service_principal_id": { "description": "Internal service principal ID of the service principal in Databricks.", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OUTPUT_ONLY" ] } @@ -30894,6 +32334,10 @@ "behaviors": [ "OUTPUT_ONLY" ] + }, + "name": { + "description": "The resource name of the transitive parent group. The format depends on the API that\nreturned it:\n- Account-scoped: accounts/{account_id}/principals/{principal_id}/transitive-parent-groups/{group_id}\n- Workspace-scoped: principals/{principal_id}/transitive-parent-groups/{group_id}", + "launch_stage": "PUBLIC_BETA" } } }, @@ -31047,6 +32491,7 @@ "description": "The accountId parent of the user in Databricks.", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OUTPUT_ONLY" ] }, @@ -31066,10 +32511,23 @@ "ref": "iamv2.UserFullName", "launch_stage": "PUBLIC_BETA" }, + "name": { + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", + "launch_stage": "PUBLIC_BETA" + }, + "parent": { + "description": "The resource name of the account that contains the user, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "IMMUTABLE", + "OUTPUT_ONLY" + ] + }, "user_id": { "description": "Internal userId of the user in Databricks.", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OUTPUT_ONLY" ] }, @@ -31115,6 +32573,10 @@ "OUTPUT_ONLY" ] }, + "name": { + "description": "The resource name of the workspace access detail. The format depends on the API that\nreturned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-access-details/{principal_id}\n- Workspace-scoped: workspace-access-details/{principal_id}", + "launch_stage": "PUBLIC_BETA" + }, "permissions": { "description": "The permissions granted to the principal in the workspace.", "launch_stage": "PUBLIC_BETA", @@ -31182,6 +32644,7 @@ "description": "The account ID parent of the workspace where the principal is assigned", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OUTPUT_ONLY" ] }, @@ -31201,10 +32664,25 @@ "UNORDERED_LIST" ] }, - "principal_id": { - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "name": { + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "launch_stage": "PUBLIC_BETA" }, + "parent": { + "description": "The resource name of the workspace that contains the assignment,\n`accounts/{account_id}/workspaces/{workspace_id}`. Both the account-scoped and workspace-scoped\nAPIs return it.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "IMMUTABLE", + "OUTPUT_ONLY" + ] + }, + "principal_id": { + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "IMMUTABLE" + ] + }, "principal_type": { "description": "The type of the principal (user/service principal/group) that is assigned.", "ref": "iamv2.PrincipalType", @@ -31217,6 +32695,7 @@ "description": "The workspace ID where the principal is assigned.", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OPTIONAL", "OUTPUT_ONLY" ] @@ -31281,6 +32760,10 @@ "OUTPUT_ONLY" ] }, + "name": { + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", + "launch_stage": "PUBLIC_BETA" + }, "principal_id": { "description": "The internal ID of the principal (user/sp/group) in Databricks.", "launch_stage": "PUBLIC_BETA", @@ -31328,6 +32811,229 @@ "USER_PERMISSION": "PUBLIC_BETA" } }, + "jobs.AiClassifyFunction": { + "description": "Configuration for a task that runs the `ai_classify` function.\n\nThe label set comes from exactly one of two places: `inline_labels`, which\nholds up to 10 labels, or a Unity Catalog table named by `label_table`. Use\n`label_table` for a larger label set.", + "fields": { + "enable_confidence_scores": { + "description": "When true, includes a per-label confidence score in the response.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "enable_rationales": { + "description": "When true, includes a rationale explaining each classification in the response.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "inline_labels": { + "description": "Labels listed inline, for a small label set.", + "ref": "jobs.AiClassifyFunctionInlineLabels", + "launch_stage": "PRIVATE_PREVIEW" + }, + "instructions": { + "description": "Global description of the task and domain, passed to the model to improve\nclassification quality.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "multilabel": { + "description": "When true, more than one label can be returned for each input.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "version": { + "description": "The ai_classify function version to invoke (for example, `2.1`).", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "jobs.AiClassifyFunctionInlineLabels": { + "description": "A label set listed inline.", + "fields": { + "labels": { + "description": "The labels an input can be classified as. At least two labels are required\nunless `multilabel` is true, which also accepts a single label.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "jobs.AiClassifyFunctionLabel": { + "description": "One label the input can be classified as.", + "fields": { + "description": { + "description": "Guidance describing what belongs under this label.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "name": { + "description": "The name returned when an input is classified as this label.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "jobs.AiExtractFunction": { + "description": "Configuration for a task that runs the `ai_extract` function.\n\nThe fields to extract come from exactly one of two places: an existing AI\nExtract agent, named by `agent_id`, or the inline `schema` and `instructions`.\nSet `agent_id` or the inline fields, not both.", + "fields": { + "enable_citations": { + "description": "When true, includes citation metadata locating each extracted value in the\nsource.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "enable_confidence_scores": { + "description": "When true, includes a per-field confidence score in the response.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "instructions": { + "description": "Global description of the task and domain, passed to the model to improve\nextraction quality.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "mode": { + "description": "The extraction mode. Defaults to standard extraction when unspecified.", + "ref": "jobs.AiExtractFunctionMode", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "schema": { + "description": "The extraction schema defining the fields to extract, as a JSON string.\nEither an array of field names (e.g. [\"company\", \"valuation\"]) or an object\nmapping each field name to a type and an optional description. Supported\ntypes are string, integer, number, boolean, enum, object, and array; all\nfields are optional.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "version": { + "description": "The ai_extract function version to invoke (for example, `2.1`).", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "jobs.AiExtractFunctionMode": { + "description": "The extraction mode.", + "enum": [ + "MODE_PRECISION" + ], + "enum_launch_stages": { + "MODE_PRECISION": "PRIVATE_PREVIEW" + } + }, + "jobs.AiFunctionTask": { + "description": "A task that applies an AI function to a set of input documents or rows.", + "fields": { + "ai_classify": { + "description": "Classifies each input document or row into one or more labels.", + "ref": "jobs.AiClassifyFunction", + "launch_stage": "PRIVATE_PREVIEW" + }, + "ai_extract": { + "description": "Extracts structured fields from the input documents or rows.", + "ref": "jobs.AiExtractFunction", + "launch_stage": "PRIVATE_PREVIEW" + }, + "ai_parse_document": { + "description": "Parses the input documents into structured text.", + "ref": "jobs.AiParseDocumentFunction", + "launch_stage": "PRIVATE_PREVIEW" + }, + "delta_table": { + "description": "A Unity Catalog Delta table. The function is applied to each row.", + "ref": "jobs.DeltaTableSource", + "launch_stage": "PRIVATE_PREVIEW" + }, + "output": { + "description": "Output destination table. When `table` is unset the task generates a stable name from the\nfunction and task identity so a downstream task can reference it.", + "ref": "jobs.QualifiedName", + "launch_stage": "PRIVATE_PREVIEW" + }, + "volume": { + "description": "A Unity Catalog volume. The function is applied to each file.", + "ref": "jobs.VolumeSource", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "jobs.AiFunctionTaskOutput": { + "description": "The result of an AI function task run. Also reported mid-run, so the counts can be partial.", + "fields": { + "estimated_time_remaining": { + "description": "Coarse estimate of the time left to run the function over the inputs, from the throughput so\nfar. Covers that work only, not the merge into the output table that follows it.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "failed_row_count": { + "description": "Inputs permanently failed so far. Each lands in the output table as an error row, and does not\non its own fail the run.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "output_table": { + "description": "The table the run writes its results to. Reported even when `output.table` is unset and the\nname is generated, so a client can read the table.", + "ref": "jobs.QualifiedName", + "launch_stage": "PRIVATE_PREVIEW" + }, + "succeeded_row_count": { + "description": "Inputs with a result so far. Reported per batch, so it can lag mid-run.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "total_row_count": { + "description": "Inputs to process: rows for a Delta table source, files for a volume source. Stays well inside\n2^53, so a JavaScript client can hold it exactly.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "jobs.AiParseDocumentFunction": { + "description": "Configuration for a task that runs the `ai_parse_document` function.", + "fields": { + "description_element_types": { + "description": "Element types to generate AI descriptions for. Leave empty to generate no\ndescriptions; use ALL for every supported type, or list specific types to\nrestrict generation to only those.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "image_output_path": { + "description": "Unity Catalog volume path where rendered page and element images are written.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "page_range": { + "description": "Pages to parse (1-indexed), as a comma-separated list of page numbers or\nranges (e.g. \"1,3,5-10\").", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "version": { + "description": "The ai_parse_document output schema version to invoke (for example, `2.0`).", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "jobs.AiParseDocumentFunctionDescriptionElementType": { + "description": "An element type that AI descriptions can be generated for.", + "enum": [ + "DESCRIPTION_ELEMENT_TYPE_ALL", + "DESCRIPTION_ELEMENT_TYPE_FIGURE" + ], + "enum_launch_stages": { + "DESCRIPTION_ELEMENT_TYPE_ALL": "PRIVATE_PREVIEW", + "DESCRIPTION_ELEMENT_TYPE_FIGURE": "PRIVATE_PREVIEW" + } + }, "jobs.AiRuntimeTask": { "description": "AiRuntimeTask: multi-node GPU compute task definition for Databricks AI\nRuntime workloads.\n\nJobs-framework-level concepts (retries, per-task timeout, idempotency\ntoken, usage/budget policy, permissions) live on the surrounding\nTaskSettings / run-submit request and are intentionally NOT duplicated\nhere. Users compose `ai_runtime_task` with the standard Jobs/DABs task\nwrapper to get those.", "fields": { @@ -31892,6 +33598,32 @@ } } }, + "jobs.CompletedJob": { + "description": "A single upstream completion that contributed to triggering the run, captured at trigger time", + "fields": { + "completion_time": { + "description": "The completion time of the upstream run", + "launch_stage": "PUBLIC_BETA" + }, + "job_id": { + "description": "The ID of the upstream job", + "launch_stage": "PUBLIC_BETA" + }, + "run_id": { + "description": "The ID of the upstream run whose completion contributed to the trigger", + "launch_stage": "PUBLIC_BETA" + }, + "termination_code": { + "description": "The termination code of the upstream run", + "ref": "jobs.TerminationCodeCode", + "launch_stage": "PUBLIC_BETA" + }, + "workspace_id": { + "description": "The ID of the workspace containing the upstream job", + "launch_stage": "PUBLIC_BETA" + } + } + }, "jobs.Compute": { "fields": { "hardware_accelerator": { @@ -32092,7 +33824,7 @@ ] }, "environments": { - "description": "A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode.\n\nFor notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the environment_key is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment.\nFor other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using environment_key in the task settings.", + "description": "A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode.\n\nFor notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the `environment_key` is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment.\n\nFor other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using `environment_key` in the task settings.", "launch_stage": "GA" }, "format": { @@ -32489,6 +34221,26 @@ } } }, + "jobs.DeltaTableSource": { + "description": "A Unity Catalog Delta table input source. The function is applied to each row.", + "fields": { + "input_column": { + "description": "Name of the column holding the content the function is applied to.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "merge_key_columns": { + "description": "Columns that together identify a row across incremental runs, so results can\nbe matched back to their source rows. When unset, the task derives an\nimplicit key from Delta row tracking. If row tracking is also disabled there\nis no stable key, so each run reprocesses the entire source (a full refresh)\nrather than only the changed rows; set a key column or enable row tracking to\nkeep runs incremental.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "table_name": { + "description": "Fully qualified three-part name of the source table (catalog.schema.table).", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, "jobs.DeploymentSpec": { "description": "DeploymentSpec: configuration for one deployment within an AiRuntimeTask.\nEach entry in `AiRuntimeTask.deployments` describes a group of nodes that\nshare the same command and compute. Many single-program training\nalgorithms use a single entry where every node runs the same command;\nrole-split workloads (driver + worker, parameter server, separate eval\nnode, etc.) use multiple entries.", "fields": { @@ -32987,12 +34739,151 @@ "ref": "compute.ClusterSpec", "launch_stage": "GA" }, + "serverless_compute": { + "description": "Serverless compute settings for this cluster. At most one job cluster per job\nmay set this field; the rate limit defined on the referenced policy applies\nacross all tasks bound to this cluster.", + "ref": "jobs.JobClusterServerlessCompute", + "launch_stage": "PUBLIC_BETA" + }, "serverless_compute_id": { "description": "The ID of the serverless compute object to bind this cluster to. At most one\nJobCluster per job may set this field; the rate limit defined on the referenced\nserverless compute applies across all tasks bound to this cluster.", "launch_stage": "PRIVATE_PREVIEW" } } }, + "jobs.JobClusterServerlessCompute": { + "description": "Serverless compute settings for a job cluster.", + "fields": { + "policy_id": { + "description": "The ID of the serverless compute policy to apply to this cluster.", + "launch_stage": "PUBLIC_BETA" + } + } + }, + "jobs.JobCompletionTriggerConfiguration": { + "description": "A trigger that starts a run after every upstream job completes with a configured status.", + "fields": { + "if_status": { + "description": "The status that all upstream jobs must have before this trigger fires. Defaults to SUCCESS.", + "ref": "jobs.JobCompletionTriggerConfigurationIfStatus", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, + "jobs": { + "description": "The upstream jobs to monitor. Each job must be in a workspace attached to the same Unity Catalog metastore as\nthe downstream job. A maximum of 10 jobs can be monitored.", + "launch_stage": "PUBLIC_BETA" + } + } + }, + "jobs.JobCompletionTriggerConfigurationIfStatus": { + "description": "The status that all upstream jobs must have before a job completion trigger fires.", + "enum": [ + "SUCCESS", + "FAILED", + "DONE" + ], + "enum_launch_stages": { + "DONE": "PUBLIC_BETA", + "FAILED": "PUBLIC_BETA", + "SUCCESS": "PUBLIC_BETA" + } + }, + "jobs.JobCompletionTriggerConfigurationMonitoredJob": { + "description": "An upstream job to monitor.", + "fields": { + "job_id": { + "description": "The ID of the upstream job.", + "launch_stage": "PUBLIC_BETA" + }, + "workspace_id": { + "description": "The ID of the workspace containing the upstream job.\nThis can differ from the caller's workspace and downstream services enforce\ncorrect entitlements and CAN_VIEW permissions for the user + job combination.\nSDR: https://databricks.atlassian.net/browse/SDR-5267", + "launch_stage": "PUBLIC_BETA" + } + } + }, + "jobs.JobCompletionTriggerRunInfoDetails": { + "description": "Contains the immutable set of upstream completions that triggered the run, in configured jobs order", + "fields": { + "completed_jobs": { + "launch_stage": "PUBLIC_BETA" + } + } + }, + "jobs.JobCompletionTriggerState": { + "description": "Runtime state for a job completion trigger.", + "fields": { + "monitored_job_states": { + "description": "State for each configured upstream job, in the same order as `jobs`.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, + "jobs.JobCompletionTriggerStateMonitoredJobState": { + "fields": { + "has_seen_completion": { + "description": "Whether this job has contributed a matching completion toward the next trigger fire.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "is_deleted": { + "description": "Whether the upstream job was missing or deleted when last observed by this trigger.\nOmitted when deletion status is unknown. This observation may become stale while\nthe trigger is paused or evaluation cannot access the upstream job.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "job_id": { + "description": "The ID of the upstream job.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "last_seen_completion_time": { + "description": "The completion time of the latest matching upstream run observed by the trigger.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "last_seen_result": { + "description": "The termination code of the latest matching upstream run observed by the trigger.", + "ref": "jobs.TerminationCodeCode", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "last_seen_run_id": { + "description": "The ID of the latest matching upstream run observed by the trigger.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "latest_non_matching_result": { + "description": "The termination code of the latest upstream run if it does not satisfy `if_status`.\nUnset when the latest run matches or no run has been observed.", + "ref": "jobs.TerminationCodeCode", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "workspace_id": { + "description": "The ID of the workspace containing the upstream job.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, "jobs.JobCompliance": { "fields": { "is_compliant": { @@ -33298,7 +35189,7 @@ ] }, "environments": { - "description": "A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode.\n\nFor notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the environment_key is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment.\nFor other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using environment_key in the task settings.", + "description": "A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode.\n\nFor notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the `environment_key` is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment.\n\nFor other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using `environment_key` in the task settings.", "launch_stage": "GA" }, "format": { @@ -33760,6 +35651,13 @@ "ref": "jobs.FileArrivalTriggerState", "launch_stage": "PUBLIC_BETA" }, + "job_completion": { + "ref": "jobs.JobCompletionTriggerState", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, "model": { "ref": "jobs.ModelTriggerState", "launch_stage": "PUBLIC_BETA" @@ -34006,6 +35904,23 @@ } } }, + "jobs.QualifiedName": { + "description": "A three-level Unity Catalog name (catalog.schema.table); any level may be unset.", + "fields": { + "catalog": { + "description": "Unity Catalog catalog.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "schema": { + "description": "Unity Catalog schema, within the catalog.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "table": { + "description": "Table, within the catalog and schema.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, "jobs.QueueDetails": { "fields": { "code": { @@ -34264,6 +36179,11 @@ }, "jobs.ResolvedValues": { "fields": { + "ai_function_task": { + "description": "Resolved values for an AI Function task: the Delta table input with\nupstream-task references replaced by concrete values before the run.", + "ref": "jobs.ResolvedValuesAiFunctionTaskResolvedValues", + "launch_stage": "PRIVATE_PREVIEW" + }, "ai_runtime_task": { "description": "Resolved values for an AI Runtime task — env_vars with\n`{{tasks.\u003ckey\u003e.values.\u003cname\u003e}}` references substituted to concrete\nvalues before submission to the training service.", "ref": "jobs.ResolvedValuesAiRuntimeTaskResolvedValues", @@ -34315,6 +36235,9 @@ } } }, + "jobs.ResolvedValuesAiFunctionTaskResolvedValues": { + "description": "Resolved values for an AI Function task's Delta table input." + }, "jobs.ResolvedValuesAiRuntimeTaskResolvedValues": { "description": "Resolved values for an AiRuntimeTask after dynamic-value substitution, so\nJobs can expand `{{tasks.\u003ckey\u003e.values.\u003cname\u003e}}` references before\nsubmission." }, @@ -34774,6 +36697,11 @@ "jobs.RunOutput": { "description": "Run output was retrieved successfully.", "fields": { + "ai_function_task_output": { + "description": "The output of an AI function task, if available", + "ref": "jobs.AiFunctionTaskOutput", + "launch_stage": "PRIVATE_PREVIEW" + }, "ai_runtime_task_output": { "description": "The output of an AiRuntimeTask, if available — MLflow identifiers,\nartifact paths, and per-replica allocated compute. Run lifecycle /\ntermination status lives on the surrounding framework `RunTask.status`\n(`runs.proto:RunTask.status` of type `RunStatus`), not on this output.\nSee `tasks/genai/ai_runtime_task.proto:AiRuntimeTaskOutput`.", "ref": "jobs.AiRuntimeTaskOutput", @@ -34981,6 +36909,11 @@ "jobs.RunTask": { "description": "Used when outputting a child run, in GetRun or ListRuns.", "fields": { + "ai_function_task": { + "description": "Applies an AI function to a set of input documents or rows.", + "ref": "jobs.AiFunctionTask", + "launch_stage": "PRIVATE_PREVIEW" + }, "ai_runtime_task": { "description": "The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify\nthe accelerator type and count, the command to run, and where the workload's\ncode and MLflow output are stored.", "ref": "jobs.AiRuntimeTask", @@ -35845,6 +37778,11 @@ }, "jobs.SubmitTask": { "fields": { + "ai_function_task": { + "description": "Applies an AI function to a set of input documents or rows.", + "ref": "jobs.AiFunctionTask", + "launch_stage": "PRIVATE_PREVIEW" + }, "ai_runtime_task": { "description": "The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify\nthe accelerator type and count, the command to run, and where the workload's\ncode and MLflow output are stored.", "ref": "jobs.AiRuntimeTask", @@ -36047,7 +37985,7 @@ "attachment": { "description": "Optional: The configuration for the files attached to the dashboard snapshot notification. It\ncontrols the underlying data of dashboard widgets that is attached as data files and which\npages are included in the attached PDF. If not specified, the notification is sent with only\nthe default snapshot.", "ref": "jobs.SubscriptionAttachment", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] @@ -36072,7 +38010,7 @@ "data_attachment": { "description": "Optional: The configuration for the underlying data of dashboard widgets attached as tabular\ndata files. If not specified, no tabular data is attached.", "ref": "jobs.SubscriptionAttachmentDataAttachment", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] @@ -36080,7 +38018,7 @@ "page_attachment": { "description": "Optional: The selection of dashboard pages included in the attached PDF. If not specified,\nonly the first page is included.", "ref": "jobs.SubscriptionAttachmentPageAttachment", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] @@ -36093,18 +38031,18 @@ "file_format": { "description": "The file format of the exported tabular data files.", "ref": "jobs.SubscriptionAttachmentDataAttachmentFileFormat", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" }, "include_applied_filters": { "description": "When true, the dashboard's applied filter values are included alongside the tabular data as\nan additional attached file.", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] }, "widgets": { "description": "The widgets whose underlying data is exported. At least one widget must be referenced.", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" } } }, @@ -36116,9 +38054,9 @@ "FILE_FORMAT_EXCEL" ], "enum_launch_stages": { - "FILE_FORMAT_CSV": "PUBLIC_BETA", - "FILE_FORMAT_EXCEL": "PUBLIC_BETA", - "FILE_FORMAT_TSV": "PUBLIC_BETA" + "FILE_FORMAT_CSV": "PUBLIC_PREVIEW", + "FILE_FORMAT_EXCEL": "PUBLIC_PREVIEW", + "FILE_FORMAT_TSV": "PUBLIC_PREVIEW" } }, "jobs.SubscriptionAttachmentDataAttachmentWidget": { @@ -36126,11 +38064,11 @@ "fields": { "page_id": { "description": "The URL identifier of the page containing the widget. This is the value of the `name`\nfield of the corresponding entry under `pages` in the serialized dashboard definition.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" }, "widget_id": { "description": "The URL identifier of the widget. This is the value of the `name` field of the\ncorresponding widget under that page's `layout` in the serialized dashboard definition.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" } } }, @@ -36139,7 +38077,7 @@ "fields": { "page_ids": { "description": "The identifiers of the pages to include in the PDF. Only specified when `page_selection` is\n`PAGE_SELECTION_SUBSET`. Each value is the identifier of a page in the dashboard's\nserialized definition returned by the Get dashboard API (`serialized_dashboard`): the value\nof the `name` field of an entry under `pages`.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] @@ -36147,7 +38085,7 @@ "page_selection": { "description": "How the attached pages are selected. When set to `PAGE_SELECTION_SUBSET`, the pages to\ninclude are listed in `page_ids`.", "ref": "jobs.SubscriptionAttachmentPageAttachmentPageSelection", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] @@ -36161,8 +38099,8 @@ "PAGE_SELECTION_SUBSET" ], "enum_launch_stages": { - "PAGE_SELECTION_ALL": "PUBLIC_BETA", - "PAGE_SELECTION_SUBSET": "PUBLIC_BETA" + "PAGE_SELECTION_ALL": "PUBLIC_PREVIEW", + "PAGE_SELECTION_SUBSET": "PUBLIC_PREVIEW" } }, "jobs.SubscriptionSubscriber": { @@ -36223,6 +38161,11 @@ }, "jobs.Task": { "fields": { + "ai_function_task": { + "description": "Applies an AI function to a set of input documents or rows.", + "ref": "jobs.AiFunctionTask", + "launch_stage": "PRIVATE_PREVIEW" + }, "ai_runtime_task": { "description": "The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify\nthe accelerator type and count, the command to run, and where the workload's\ncode and MLflow output are stored.", "ref": "jobs.AiRuntimeTask", @@ -36636,6 +38579,14 @@ "OPTIONAL" ] }, + "job_completion": { + "description": "Job completion trigger configuration.", + "ref": "jobs.JobCompletionTriggerConfiguration", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, "model": { "description": "Model trigger configuration.", "ref": "jobs.ModelTriggerConfiguration", @@ -36745,6 +38696,11 @@ "jobs.TriggerInfo": { "description": "Additional details about what triggered the run", "fields": { + "job_completion": { + "description": "Additional details for job runs triggered by a job completion trigger (trigger: \"JOB_COMPLETION\")", + "ref": "jobs.JobCompletionTriggerRunInfoDetails", + "launch_stage": "PUBLIC_BETA" + }, "run_id": { "description": "The run id of the Run Job task run", "launch_stage": "GA" @@ -36763,6 +38719,14 @@ "ref": "jobs.FileArrivalTriggerConfiguration", "launch_stage": "GA" }, + "job_completion": { + "description": "Job completion trigger settings.", + "ref": "jobs.JobCompletionTriggerConfiguration", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, "model": { "ref": "jobs.ModelTriggerConfiguration", "launch_stage": "PRIVATE_PREVIEW" @@ -36794,6 +38758,13 @@ "ref": "jobs.FileArrivalTriggerState", "launch_stage": "GA" }, + "job_completion": { + "ref": "jobs.JobCompletionTriggerState", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, "pause_status": { "description": "Whether this trigger is paused or not. For continuous schedules, it can differ from the\nconfigured pause_status whenever a paused continuous job is kickstarted by an operation\nother than an update, such as a run-now.", "ref": "jobs.PauseStatus", @@ -36820,12 +38791,14 @@ "FILE_ARRIVAL", "CONTINUOUS", "TABLE", - "CONTINUOUS_RESTART" + "CONTINUOUS_RESTART", + "JOB_COMPLETION" ], "enum_launch_stages": { "CONTINUOUS": "GA", "CONTINUOUS_RESTART": "GA", "FILE_ARRIVAL": "GA", + "JOB_COMPLETION": "PUBLIC_BETA", "ONE_TIME": "GA", "PERIODIC": "GA", "RETRY": "GA", @@ -36836,6 +38809,7 @@ "CONTINUOUS": "Indicates a run that is triggered by a continuous job.", "CONTINUOUS_RESTART": "Indicates a run created by user to manually restart a continuous job run.", "FILE_ARRIVAL": "Indicates a run that is triggered by a file arrival.", + "JOB_COMPLETION": "Indicates a run that is triggered by an upstream job completion.", "ONE_TIME": "One time triggers that fire a single run. This occurs you triggered a single run on demand through the UI or the API.", "PERIODIC": "Schedules that periodically trigger runs, such as a cron scheduler.", "RETRY": "Indicates a run that is triggered as a retry of a previously failed run. This occurs when you request to re-run the job in case of failures.", @@ -36910,6 +38884,15 @@ "DASHBOARDS": "All dashboard views of the notebook." } }, + "jobs.VolumeSource": { + "description": "A Unity Catalog volume input source. The function is applied to each file.", + "fields": { + "volume_path": { + "description": "Unity Catalog volume path to the input files\n(e.g. `/Volumes/\u003ccatalog\u003e/\u003cschema\u003e/\u003cvolume\u003e/...`).", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, "jobs.Webhook": { "fields": { "id": { @@ -39469,7 +41452,7 @@ "ml.BackfillFeaturesRequest": { "fields": { "backfill_ranges": { - "description": "Output ranges to backfill.", + "description": "Time ranges of source data to backfill. Ranges must not overlap.", "launch_stage": "PRIVATE_PREVIEW" }, "budget_policy_id": { @@ -39480,7 +41463,7 @@ ] }, "feature_full_names": { - "description": "Full names of the features to backfill.", + "description": "Full names of the features to backfill. All features must share the same interval between\nvalues and the same offset. The interval is the slide_duration of a sliding window or the\nwindow_duration of a tumbling window.", "launch_stage": "PRIVATE_PREVIEW" }, "request_id": { @@ -39506,7 +41489,7 @@ "description": "Progress and configuration for a backfill.", "fields": { "backfill_ranges": { - "description": "Output ranges targeted by the backfill.", + "description": "The requested time ranges, each aligned outward to the boundaries at which the features emit\nvalues. Ranges that overlap after alignment are combined into one. The backfill stops at the\nmost recent materialized values, so a range may extend past the values that it recomputed.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OUTPUT_ONLY" @@ -39547,10 +41530,10 @@ } }, "ml.BackfillRange": { - "description": "A time range for a backfill.", + "description": "A time range of source data for a backfill. The range is aligned outward to the boundaries at\nwhich the feature emits values: every slide_duration for a sliding window or every\nwindow_duration for a tumbling window, shifted by offset. Feature values up to one\nwindow_duration after the aligned end may change. The backfill stops at the most recent\nmaterialized values and leaves later values to materialization.", "fields": { "end_time": { - "description": "End of the backfill range, exclusive. If unset, defaults to the current time.", + "description": "End of the backfill range, exclusive. If unset, defaults to the most recent materialized values.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OPTIONAL" @@ -41640,6 +43623,13 @@ "behaviors": [ "OPTIONAL" ] + }, + "view_name": { + "description": "The full three-part name (catalog, schema, name) of an existing view to use instead of\ncreating a Delta table. The view is dropped when the Stream is deleted.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] } } }, @@ -42744,7 +44734,7 @@ } }, "ml.MaterializationNotifications": { - "description": "Notifications for the jobs and pipelines that materialize a feature, one field per trigger.", + "description": "Notifications for the jobs and pipelines that materialize the features in a set, one field per\ntrigger.", "fields": { "on_failure": { "description": "Who to notify when a run fails, and on which attempts.", @@ -42780,6 +44770,14 @@ "behaviors": [ "OPTIONAL" ] + }, + "notifications": { + "description": "Notification configuration around the materialization job or pipeline lifecycle. They are\napplied to every job and pipeline that materializes a feature in this set. Features which are\nmaterialized in the same pipeline will share the same notification.", + "ref": "ml.MaterializationNotifications", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] } } }, @@ -42957,7 +44955,7 @@ ] }, "materialization_set_id": { - "description": "The materialization set this materialized feature was created for, through DABs or\ndirect-engine creation. Unset for a materialized feature that was not created as part of a set.", + "description": "The ID of the materialization set containing this materialized feature.\nUnset for a materialized feature that is not part of a set.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OUTPUT_ONLY" @@ -42971,11 +44969,11 @@ ] }, "notifications": { - "description": "Notification configuration around the materialization job or pipeline lifecycle. They are\napplied to every job and pipeline that materializes this feature. Features which are\nmaterialized in the same pipeline will share the same notification.", + "description": "Notification configuration for the jobs and pipelines that materialize this feature.", "ref": "ml.MaterializationNotifications", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ - "OPTIONAL" + "OUTPUT_ONLY" ] }, "offline_store_config": { @@ -43005,8 +45003,9 @@ ] }, "pipeline_schedule_state": { - "description": "The schedule state of the materialization pipeline.\nHidden from GraphQL: being deprecated, so not exposed to Catalog Explorer.", + "description": "Deprecated: This legacy pipeline setting does not control batch job scheduling.", "ref": "ml.MaterializedFeaturePipelineScheduleState", + "deprecated": true, "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OPTIONAL" @@ -45406,7 +47405,7 @@ ] }, "start_time": { - "description": "Earliest event-time boundary at which the Feature may emit an output. This gates outputs, not\nthe historical inputs read by a window. For example, a 365-day window with\nstart_time=2026-01-01 begins emitting partial-window values on that date instead of waiting\nfor 365 days of data; a lifetime window produces no output before start_time. If unset,\ntumbling and fixed-duration sliding windows first emit at an offset-aligned boundary after a\nfull window can be formed. If unset, lifetime sliding windows and rolling windows emit as soon as\neligible source data exists.\nNot currently supported for sawtooth windows or for Features with a stream source.", + "description": "Earliest event-time boundary at which the Feature may emit an output. This gates outputs, not\nthe historical inputs read by a window. For example, a 365-day window with\nstart_time=2026-01-01 begins emitting partial-window values on that date instead of waiting\nfor 365 days of data; a lifetime window produces no output before start_time. If unset,\ntumbling and fixed-duration sliding windows first emit at an offset-aligned boundary after a\nfull window can be formed. If unset, lifetime sliding windows and rolling windows emit as soon as\neligible source data exists.\nFor sawtooth windows, start_time must not be later than the time the Feature is created.\nNot supported for rolling windows on Features with a stream source.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OPTIONAL" @@ -45647,7 +47646,7 @@ ] }, "update_mask": { - "description": "The fields to update. Only 'materialized_features' is supported.", + "description": "The fields to update. Only 'materialized_features' or '*' is supported.", "launch_stage": "PRIVATE_PREVIEW" } } @@ -45660,7 +47659,7 @@ "launch_stage": "GA" }, "update_mask": { - "description": "Provide the materialization feature fields which should be updated.\nCurrently, only the pipeline_state field can be updated.", + "description": "The fields to update. Only `pipeline_schedule_state` is supported.", "launch_stage": "GA" } } @@ -51191,7 +53190,7 @@ "postgres.CreateRoleRequest": { "fields": { "replace_existing": { - "description": "If true, update the role if it already exists instead of returning an\nerror.\n\nWhen the role already exists, the provided `role` spec fully replaces the\nexisting one: `membership_roles` is overwritten, not merged. Leaving\n`membership_roles` empty clears all of the role's existing memberships,\nincluding `DATABRICKS_SUPERUSER`. Always send the complete desired list of\nmemberships when using this field.", + "description": "If true, update the role if it already exists instead of returning an\nerror. This requires `role_id` to be set. Without `role_id`, the request\nfollows the normal create path and fails if the role name already exists.\n\nWhen the role already exists, only mutable fields are updated.\nAttributes omitted from the request retain their current values.\nSet an attribute explicitly to false to disable it.\n`identity_type`, `auth_method`, and `postgres_role` retain their\nexisting values; supplied values for these fields are ignored.\n`membership_roles` is overwritten, not merged. Leaving\n`membership_roles` empty clears all of the role's existing memberships,\nincluding `DATABRICKS_SUPERUSER`. Always send the complete desired list\nof memberships when using this field.", "launch_stage": "GA", "behaviors": [ "INPUT_ONLY", @@ -53096,7 +55095,7 @@ ] }, "auth_method": { - "description": "Controls how the Postgres role authenticates when a client opens a database\nconnection. Supported values:\n\n* LAKEBASE_OAUTH_V1: the role authenticates by presenting a Databricks\nOAuth access token derived from the backing managed identity (the\nDatabricks user, service principal, or group named by the role's\n`postgres_role`). No static password exists for roles using this method.\n* PG_PASSWORD_SCRAM_SHA_256: the role authenticates with a Postgres\npassword verified server-side using the SCRAM-SHA-256 mechanism.\nLakebase generates a password for the role.\n* NO_LOGIN: the role cannot open a Postgres session at all. Useful for\nroles that exist only to own objects or to aggregate privileges that\nare then granted to other, loginable roles.\n\nIf auth_method is left unspecified, a meaningful authentication method is derived from the identity_type:\n* For the managed identities, OAUTH is used.\n* For the regular postgres roles, authentication based on postgres passwords is used.\n\nNOTE: for the Databricks identity type GROUP, LAKEBASE_OAUTH_V1\nis the default auth method (group can login as well).", + "description": "Controls how the Postgres role authenticates when a client opens a database\nconnection. Supported values:\n\n* LAKEBASE_OAUTH_V1: the role authenticates by presenting a Databricks\nOAuth access token derived from the backing managed identity (the\nDatabricks user, service principal, or group named by the role's\n`postgres_role`). No static password exists for roles using this method.\n* PG_PASSWORD_SCRAM_SHA_256: the role authenticates with a Postgres\npassword verified server-side using the SCRAM-SHA-256 mechanism.\nLakebase generates a password for the role.\n* NO_LOGIN: the role cannot open a Postgres session at all. Useful for\nroles that exist only to own objects or to aggregate privileges that\nare then granted to other, loginable roles.\n\nIf auth_method is left unspecified, a meaningful authentication method is derived from the identity_type:\n* For the managed identities, OAUTH is used.\n* For the regular postgres roles, authentication based on postgres passwords is used.\n\nNOTE: for the Databricks identity type GROUP, LAKEBASE_OAUTH_V1\nis the default auth method (group can login as well).\n\nThis field is set when the role is created and cannot be changed by\nUpdateRole. If provided in an UpdateRole request body, its value is\nignored and the existing value is retained. Do not include this field\nas an explicit path in update_mask.", "ref": "postgres.RoleAuthMethod", "launch_stage": "GA", "behaviors": [ @@ -53104,7 +55103,7 @@ ] }, "identity_type": { - "description": "The type of role.\nWhen specifying a managed-identity, the chosen role_id must be a valid:\n\n* application ID for SERVICE_PRINCIPAL\n* user email for USER\n* group name for GROUP", + "description": "The type of role.\nWhen specifying a managed-identity, the chosen role_id must be a valid:\n\n* application ID for SERVICE_PRINCIPAL\n* user email for USER\n* group name for GROUP\n\nThis field is set when the role is created and cannot be changed by\nUpdateRole. If provided in an UpdateRole request body, its value is\nignored and the existing value is retained. Do not include this field\nas an explicit path in update_mask.", "ref": "postgres.RoleIdentityType", "launch_stage": "GA", "behaviors": [ @@ -53119,7 +55118,7 @@ ] }, "postgres_role": { - "description": "The name of the Postgres role.\n\nThis expects a valid Postgres identifier as specified in the link below.\nhttps://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS\n\nRequired when creating the Role.\n\nIf you wish to create a Postgres Role backed by a managed Databricks identity, then postgres_role\nmust be one of the following:\n\n1. user email for IdentityType.USER\n2. app ID for IdentityType.SERVICE_PRINCIPAL\n2. group name for IdentityType.GROUP", + "description": "The name of the Postgres role.\n\nThis expects a valid Postgres identifier as specified in the link below.\nhttps://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS\n\nRequired when creating the Role.\n\nIf you wish to create a Postgres Role backed by a managed Databricks identity, then postgres_role\nmust be one of the following:\n\n1. user email for IdentityType.USER\n2. app ID for IdentityType.SERVICE_PRINCIPAL\n2. group name for IdentityType.GROUP\n\nThis field is set when the role is created and cannot be changed by\nUpdateRole. If provided in an UpdateRole request body, its value is\nignored and the existing value is retained. Do not include this field\nas an explicit path in update_mask.", "launch_stage": "GA", "behaviors": [ "OPTIONAL" @@ -53831,7 +55830,7 @@ "launch_stage": "GA" }, "update_mask": { - "description": "The list of fields to update.", + "description": "The list of fields to update. Supported fields are\n`spec.membership_roles`, `spec.attributes.createdb`,\n`spec.attributes.createrole`, and `spec.attributes.bypassrls`.\n\n`spec.identity_type`, `spec.auth_method`, and `spec.postgres_role`\ncannot be changed. Values supplied for these fields in the request\nbody are ignored. Including one of these fields as an explicit path\nin update_mask returns an INVALID_PARAMETER_VALUE error.\nWhen `spec` is the only path in the mask, only the supplied mutable\nattributes are updated.\n`*` by itself, or `spec` combined with other supported paths, selects all\nsupported mutable fields. For these masks, all three attributes\n(`createdb`, `createrole`, and `bypassrls`) must be supplied; omitting any\nreturns an INVALID_PARAMETER_VALUE error.\nEach of these mask forms replaces `membership_roles`.\nOmitting it or supplying an empty list clears all memberships, including\n`DATABRICKS_SUPERUSER`.", "launch_stage": "GA" } } @@ -55243,6 +57242,45 @@ "description": "Confirms that the requested path is absent." }, "sandbox.DeleteSandboxRequest": {}, + "sandbox.DownloadFileRequest": { + "fields": { + "byte_range": { + "description": "A single byte range, such as bytes=0-1023 or bytes=-1024. Equivalent to the Range header.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "if_match": { + "description": "Entity tags or *. A mismatch returns 412 Precondition Failed.\nEquivalent to the If-Match header.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "if_modified_since": { + "description": "An HTTP-date. Returns 304 if the file has not changed since this time.\nIgnored when If-None-Match is present. Equivalent to the If-Modified-Since header.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "if_none_match": { + "description": "Entity tags or *. A match returns 304 Not Modified.\nEquivalent to the If-None-Match header.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "if_range": { + "description": "A strong entity tag. A mismatch, weak entity tag, or HTTP-date causes a full download.\nEquivalent to the If-Range header.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "if_unmodified_since": { + "description": "An HTTP-date. Returns 412 if the file has changed since this time.\nIgnored when If-Match is present. Equivalent to the If-Unmodified-Since header.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "path": { + "description": "The absolute UTF-8 path of the file inside the sandbox.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "sandbox.DownloadFileResponse": { + "fields": { + "contents": { + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, "sandbox.EnvironmentSpec": { "fields": { "image_uri": { @@ -55648,6 +57686,18 @@ } } }, + "sandbox.UploadFileRequest": { + "fields": { + "contents": { + "description": "The complete file contents. An empty body creates an empty file.", + "launch_stage": "PRIVATE_PREVIEW" + }, + "path": { + "description": "The absolute UTF-8 destination path inside the sandbox.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, "serving.Ai21LabsConfig": { "fields": { "ai21labs_api_key": { @@ -56763,7 +58813,7 @@ "launch_stage": "PUBLIC_PREVIEW" }, "provisioned_model_units": { - "description": "The number of model units to be provisioned.", + "description": "The number of model units to be provisioned. Dedicated inference requires positive fixed\ncapacity and does not support scale-to-zero.", "launch_stage": "PUBLIC_PREVIEW" } } @@ -60624,6 +62674,10 @@ "description": "Your Databricks account ID. You can find your account ID in your Databricks accounts console.", "launch_stage": "GA" }, + "billing_workspace_id": { + "description": "The workspace to which charges for this network connectivity configuration are attributed.\nThe workspace must be active and attached to this network connectivity configuration when set.", + "launch_stage": "PUBLIC_PREVIEW" + }, "creation_time": { "description": "Time in epoch milliseconds when this object was created.", "launch_stage": "GA" @@ -61448,6 +63502,19 @@ } } }, + "settings.UpdateNetworkConnectivityConfigRequest": { + "fields": { + "network_connectivity_config": { + "description": "The network connectivity configuration fields to update.", + "ref": "settings.NetworkConnectivityConfiguration", + "launch_stage": "PUBLIC_PREVIEW" + }, + "update_mask": { + "description": "Must contain at least one of `name` or `billing_workspace_id`.", + "launch_stage": "PUBLIC_PREVIEW" + } + } + }, "settings.UpdateNetworkPolicyRequest": { "fields": { "network_policy": { @@ -64262,18 +66329,18 @@ "fields": { "name": { "description": "The name of the parameter. Reference it in the query text as `:name`. Required, must be\nnon-empty, and must be unique across the alert's parameters.", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "type": { "description": "The SQL data type of the parameter, for example `STRING`, `INT`, or `DECIMAL(10, 2)`. If no type is given\nthe type is assumed to be `STRING`. Complex types such as `ARRAY`, `MAP`, and `STRUCT` are not supported.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL" ] }, "value": { "description": "The value bound to the parameter, represented as a string. If omitted, the value is interpreted as NULL.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL" ] @@ -64351,7 +66418,7 @@ }, "parameters": { "description": "A list of parameters to pass into the alert SQL query statement containing parameter markers. Static values only.\n\nReference a parameter in the query text as `:name`. Each parameter must have a unique, non-empty name.\nEach parameter consists of a name, a value, and optionally a type. To represent a NULL\nvalue, the `value` field may be omitted or set to `null` explicitly. If the `type` field\nis omitted, the value is interpreted as a string.\n\nIf the type is given, parameters will be checked for type correctness according\nto the given type. A value is correct if the provided string can be converted to\nthe requested type using the `cast` function. The exact semantics are described in\nthe section [`cast` function](https://docs.databricks.com/sql/language-manual/functions/cast.html) of the SQL language reference.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_BETA", "behaviors": [ "OPTIONAL", "UNORDERED_LIST" @@ -65018,7 +67085,7 @@ "launch_stage": "GA" }, "max_dbu": { - "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be a multiple of 3 between 3 and 960. The effective maximum cannot be\nlower than the warehouse's minimum capacity.", + "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be at least the minimum DBU for the selected warehouse size and no greater\nthan the configured DBU limit. Actual capacity may be below this ceiling.", "launch_stage": "PRIVATE_PREVIEW" }, "max_num_clusters": { @@ -65505,7 +67572,7 @@ "launch_stage": "GA" }, "max_dbu": { - "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be a multiple of 3 between 3 and 960. The effective maximum cannot be\nlower than the warehouse's minimum capacity.", + "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be at least the minimum DBU for the selected warehouse size and no greater\nthan the configured DBU limit. Actual capacity may be below this ceiling.", "launch_stage": "PRIVATE_PREVIEW" }, "max_num_clusters": { @@ -65662,7 +67729,7 @@ "launch_stage": "GA" }, "max_dbu": { - "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be a multiple of 3 between 3 and 960. The effective maximum cannot be\nlower than the warehouse's minimum capacity.", + "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be at least the minimum DBU for the selected warehouse size and no greater\nthan the configured DBU limit. Actual capacity may be below this ceiling.", "launch_stage": "PRIVATE_PREVIEW" }, "max_num_clusters": { @@ -66032,7 +68099,7 @@ "launch_stage": "GA" }, "max_dbu": { - "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be a multiple of 3 between 3 and 960. The effective maximum cannot be\nlower than the warehouse's minimum capacity.", + "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be at least the minimum DBU for the selected warehouse size and no greater\nthan the configured DBU limit. Actual capacity may be below this ceiling.", "launch_stage": "PRIVATE_PREVIEW" }, "max_num_clusters": { @@ -75255,10 +77322,11 @@ "summary": "Get memory store permission.", "path": "/api/2.0/agents/{name=memory-stores/*}/permissions/self", "is_crud_read": true, - "is_hidden_cli": true, "has_required_positional_arguments": true, - "launch_stage": "PRIVATE_PREVIEW", - "cli_launch_stage_display": "Private Preview", + "launch_stage": "PUBLIC_BETA", + "cli_launch_stage_label": "*Beta*", + "cli_launch_stage_banner": "This command is in Beta and may change without notice.", + "cli_launch_stage_display": "Beta", "request": { "pascal_name": "GetMemoryStorePermissionRequest", "is_object": true, @@ -75469,10 +77537,11 @@ "summary": "Get session store permission.", "path": "/api/2.0/agents/{name=session-stores/*}/permissions/self", "is_crud_read": true, - "is_hidden_cli": true, "has_required_positional_arguments": true, - "launch_stage": "PRIVATE_PREVIEW", - "cli_launch_stage_display": "Private Preview", + "launch_stage": "PUBLIC_BETA", + "cli_launch_stage_label": "*Beta*", + "cli_launch_stage_banner": "This command is in Beta and may change without notice.", + "cli_launch_stage_display": "Beta", "request": { "pascal_name": "GetSessionStorePermissionRequest", "is_object": true, @@ -75533,10 +77602,11 @@ "path": "/api/2.0/agents/{name=memory-stores/*}/permissions:grant", "can_use_json": true, "must_use_json": true, - "is_hidden_cli": true, "has_required_positional_arguments": true, - "launch_stage": "PRIVATE_PREVIEW", - "cli_launch_stage_display": "Private Preview", + "launch_stage": "PUBLIC_BETA", + "cli_launch_stage_label": "*Beta*", + "cli_launch_stage_banner": "This command is in Beta and may change without notice.", + "cli_launch_stage_display": "Beta", "request": { "pascal_name": "GrantMemoryStorePermissionRequest", "is_object": true, @@ -75681,10 +77751,11 @@ "path": "/api/2.0/agents/{name=session-stores/*}/permissions:grant", "can_use_json": true, "must_use_json": true, - "is_hidden_cli": true, "has_required_positional_arguments": true, - "launch_stage": "PRIVATE_PREVIEW", - "cli_launch_stage_display": "Private Preview", + "launch_stage": "PUBLIC_BETA", + "cli_launch_stage_label": "*Beta*", + "cli_launch_stage_banner": "This command is in Beta and may change without notice.", + "cli_launch_stage_display": "Beta", "request": { "pascal_name": "GrantSessionStorePermissionRequest", "is_object": true, @@ -75986,10 +78057,11 @@ "description": "Lists explicit memory store grants. Only the owner or a workspace admin may list permissions.", "summary": "List memory store permissions.", "path": "/api/2.0/agents/{parent=memory-stores/*}/permissions", - "is_hidden_cli": true, "has_required_positional_arguments": true, - "launch_stage": "PRIVATE_PREVIEW", - "cli_launch_stage_display": "Private Preview", + "launch_stage": "PUBLIC_BETA", + "cli_launch_stage_label": "*Beta*", + "cli_launch_stage_banner": "This command is in Beta and may change without notice.", + "cli_launch_stage_display": "Beta", "request": { "pascal_name": "ListMemoryStorePermissionsRequest", "is_object": true, @@ -76224,10 +78296,11 @@ "description": "Lists explicit session store grants. Only the owner or a workspace admin may list permissions.", "summary": "List session store permissions.", "path": "/api/2.0/agents/{parent=session-stores/*}/permissions", - "is_hidden_cli": true, "has_required_positional_arguments": true, - "launch_stage": "PRIVATE_PREVIEW", - "cli_launch_stage_display": "Private Preview", + "launch_stage": "PUBLIC_BETA", + "cli_launch_stage_label": "*Beta*", + "cli_launch_stage_banner": "This command is in Beta and may change without notice.", + "cli_launch_stage_display": "Beta", "request": { "pascal_name": "ListSessionStorePermissionsRequest", "is_object": true, @@ -76535,10 +78608,11 @@ "path": "/api/2.0/agents/{name=memory-stores/*}/permissions:revoke", "can_use_json": true, "must_use_json": true, - "is_hidden_cli": true, "has_required_positional_arguments": true, - "launch_stage": "PRIVATE_PREVIEW", - "cli_launch_stage_display": "Private Preview", + "launch_stage": "PUBLIC_BETA", + "cli_launch_stage_label": "*Beta*", + "cli_launch_stage_banner": "This command is in Beta and may change without notice.", + "cli_launch_stage_display": "Beta", "request": { "pascal_name": "RevokeMemoryStorePermissionRequest", "is_object": true, @@ -76632,10 +78706,11 @@ "path": "/api/2.0/agents/{name=session-stores/*}/permissions:revoke", "can_use_json": true, "must_use_json": true, - "is_hidden_cli": true, "has_required_positional_arguments": true, - "launch_stage": "PRIVATE_PREVIEW", - "cli_launch_stage_display": "Private Preview", + "launch_stage": "PUBLIC_BETA", + "cli_launch_stage_label": "*Beta*", + "cli_launch_stage_banner": "This command is in Beta and may change without notice.", + "cli_launch_stage_display": "Beta", "request": { "pascal_name": "RevokeSessionStorePermissionRequest", "is_object": true, @@ -80193,7 +82268,7 @@ "all_fields": [ { "name": "page_size", - "description": "Maximum number of MCP services to return. Defaults to 200 when unset or 0;\nthe maximum is 200. Use `page_token` to retrieve additional pages.", + "description": "Maximum number of MCP services to return. Defaults to 200 when unset or 0;\nthe maximum is 1000 for `view = BASIC` and 200 for `view = FULL`. Use\n`page_token` to retrieve additional pages.", "is_query": true, "entity": { "is_int": true @@ -80264,7 +82339,7 @@ "all_fields": [ { "name": "page_size", - "description": "Maximum number of provider services to return. Defaults to 200 when unset or\n0; the maximum is 200. Use `page_token` to retrieve additional pages.", + "description": "Maximum number of provider services to return. Defaults to 200 when unset or\n0; the maximum is 1000 for `view = BASIC` and 200 for `view = FULL`. Use\n`page_token` to retrieve additional pages.", "is_query": true, "entity": { "is_int": true @@ -80335,7 +82410,7 @@ "all_fields": [ { "name": "page_size", - "description": "Maximum number of model services to return. Defaults to 200 when unset or 0;\nthe maximum is 200. Use `page_token` to retrieve additional pages.", + "description": "Maximum number of model services to return. Defaults to 200 when unset or 0;\nthe maximum is 1000 for `view = BASIC` and 200 for `view = FULL`. Use\n`page_token` to retrieve additional pages.", "is_query": true, "entity": { "is_int": true @@ -104218,6 +106293,1683 @@ } ] }, + { + "id": "computemigrations.ComputeMigrations", + "name": "ComputeMigrations", + "description": "Manage migrations of Classic compute workloads to Serverless.", + "package": { + "name": "computemigrations" + }, + "is_hidden_cli": true, + "docs_group": "compute", + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "list": { + "request": { + "pascal_name": "ListMigrationsRequest" + } + }, + "methods": [ + { + "name": "ApproveMigrationExecution", + "description": "Approves migration execution at the MIGRATION_REVIEW gate, advancing to execution.\n\nValid only when the migration is in MIGRATION_REVIEW. If supplied, the `etag` must match\nthe current server value.\n\nReturns NOT_FOUND if the migration does not exist.\nReturns FAILED_PRECONDITION if the migration is not in MIGRATION_REVIEW.\nReturns ABORTED if the etag does not match the current resource version.", + "summary": "Approve a migration for execution.", + "path": "/api/compute-migrations/v1/migrations/{migration_id}/approveExecution", + "can_use_json": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "ApproveMigrationExecutionRequest", + "is_object": true, + "required_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to approve for execution.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to approve for execution.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "additional_feedback", + "description": "Optional free-text feedback or instructions the user provides along with the approval, carried\ninto the next stage of the migration.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "etag", + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "migration_id", + "description": "The ID of the migration to approve for execution.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "migration_id", + "description": "The ID of the migration to approve for execution.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "ApproveMigrationTranslation", + "description": "Approves the working copy at the TRANSLATION_READY gate. If the migration was created with\n`run_validation`, the working copy is then run to verify it executes successfully before the\nmigration is presented for execution review; otherwise it advances straight to\nMIGRATION_REVIEW.\n\nValid only when the migration is in TRANSLATION_READY. If supplied, the `etag` must match\nthe current server value.\n\nReturns NOT_FOUND if the migration does not exist.\nReturns FAILED_PRECONDITION if the migration is not in TRANSLATION_READY.\nReturns ABORTED if the etag does not match the current resource version.", + "summary": "Approve a migration working copy.", + "path": "/api/compute-migrations/v1/migrations/{migration_id}/approveTranslation", + "can_use_json": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "ApproveMigrationTranslationRequest", + "is_object": true, + "required_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to approve.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to approve.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "additional_feedback", + "description": "Optional free-text feedback or instructions the user provides along with the approval, carried\ninto the next stage of the migration.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "etag", + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "migration_id", + "description": "The ID of the migration to approve.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "migration_id", + "description": "The ID of the migration to approve.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "CancelMigration", + "description": "Cancels the migration, transitioning it to CANCELLED.\n\nValid from any non-terminal state, unlike the review-gate transitions, which each require a\nspecific state. Any in-flight agent work is abandoned and the migration stops advancing. The\nresource is retained for auditability.\n\nReturns NOT_FOUND if the migration does not exist.\nReturns FAILED_PRECONDITION if the migration is already in a terminal state.\nReturns ABORTED if the etag does not match the current resource version.", + "summary": "Cancel a migration.", + "path": "/api/compute-migrations/v1/migrations/{migration_id}/cancel", + "can_use_json": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "CancelMigrationRequest", + "is_object": true, + "required_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to cancel.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to cancel.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "cancellation_reason", + "description": "Optional free-text reason for the cancellation.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "etag", + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "migration_id", + "description": "The ID of the migration to cancel.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "migration_id", + "description": "The ID of the migration to cancel.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "Create", + "description": "Creates a new migration for a Classic compute asset.\n\nThe migration is created in PLANNING_PENDING and advances through the state machine as\nplanning work is scheduled. The caller must have appropriate permissions: workspace admin for\ninfrastructure-scoped migrations, job owner/admin for individual workload migrations.\n\nAt most one migration may hold an asset. Returns ALREADY_EXISTS if the asset has a migration\nin flight, or one that already migrated it successfully; a migration that ended without\nsucceeding, or was deleted, releases the asset so it can be migrated again.\nReturns INVALID_PARAMETER_VALUE if the asset is not eligible for migration.", + "summary": "Create a migration.", + "path": "/api/compute-migrations/v1/migrations", + "can_use_json": true, + "is_crud_create": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "CreateMigrationRequest", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "migration", + "description": "The migration to create. The server generates `migration_id` and sets `state`\nto PLANNING_PENDING. Required fields: `asset_type`, `asset_uri`.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "Migration", + "is_object": true + } + } + ], + "required_request_body_fields": [ + { + "name": "migration", + "description": "The migration to create. The server generates `migration_id` and sets `state`\nto PLANNING_PENDING. Required fields: `asset_type`, `asset_uri`.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "Migration", + "is_object": true + } + } + ] + }, + "request_body_field": { + "name": "migration", + "description": "The migration to create. The server generates `migration_id` and sets `state`\nto PLANNING_PENDING. Required fields: `asset_type`, `asset_uri`.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + } + }, + "response": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "migration", + "description": "The migration to create. The server generates `migration_id` and sets `state`\nto PLANNING_PENDING. Required fields: `asset_type`, `asset_uri`.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + } + }, + { + "name": "request_id", + "description": "Client-generated request ID for idempotent request deduplication. The server\nde-duplicates requests with the same request_id for at least 24 hours, returning\nthe existing migration instead of creating a duplicate.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "auto_approve", + "description": "When true, the server skips the translation review (TRANSLATION_READY) instead of waiting for\nan explicit ApproveMigrationTranslation. MIGRATION_REVIEW is never skipped. Unset/false means the\ntranslation review requires explicit user action. Set at creation; cannot be changed\nafterward. Does not suppress cancellation or terminal failures.", + "is_request_body_field": true, + "entity": { + "is_bool": true + } + }, + { + "name": "baking_config", + "description": "Baking window configuration. Mutable via UpdateMigration before baking starts.", + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "pascal_name": "BakingConfig", + "is_object": true + } + }, + { + "name": "baking_report", + "description": "Summary of baking metrics after the baking window completes.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "pascal_name": "BakingReport", + "is_object": true + } + }, + { + "name": "create_time", + "description": "Timestamp when the migration was created.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "is_timestamp": true + } + }, + { + "name": "etag", + "description": "Resource version for optimistic concurrency control. Clients read this from GetMigration or ListMigrations\nand pass it back as the request `etag` on update, delete, approve, reject, and cancel methods.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "initiator", + "description": "The user who initiated this migration and their role. Set at creation.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "pascal_name": "MigrationInitiator", + "is_object": true + } + }, + { + "name": "migration_id", + "description": "Server-generated unique identifier for this migration.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "migration_report", + "description": "Agent-produced planning report, presented to the user at the review gates.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "pascal_name": "MigrationReport", + "is_object": true + } + }, + { + "name": "run_validation", + "description": "When true, Databricks runs the working copy to validate it after the translation review.\nUnset/false skips the run, so the migration goes from the translation review straight to\nexecution review. Whether the translation review waits for the user is controlled by\n`auto_approve`, not this field. Set at creation; cannot be changed afterward.", + "is_request_body_field": true, + "entity": { + "is_bool": true + } + }, + { + "name": "state", + "description": "Current state of the migration in the state machine. Managed by the server.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationState", + "enum": [ + { + "content": "CANCELLED" + }, + { + "content": "FAILED" + }, + { + "content": "MIGRATION_COMPLETE" + }, + { + "content": "MIGRATION_OBSERVATION" + }, + { + "content": "MIGRATION_PENDING" + }, + { + "content": "MIGRATION_REVIEW" + }, + { + "content": "MIGRATION_RUNNING" + }, + { + "content": "NOT_SUPPORTED" + }, + { + "content": "PLANNING_PENDING" + }, + { + "content": "PLANNING_REVIEW" + }, + { + "content": "PLANNING_RUNNING" + }, + { + "content": "REVISION_PENDING" + }, + { + "content": "TRANSLATION_CREATING" + }, + { + "content": "TRANSLATION_PENDING" + }, + { + "content": "TRANSLATION_READY" + }, + { + "content": "VALIDATION_RUNNING" + }, + { + "content": "VALIDATION_SCHEDULING" + } + ] + } + }, + { + "name": "state_history", + "description": "History of state transitions, ordered chronologically. Each entry records the state\nentered and the timestamp of the transition.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationStateTransitionList", + "array_value": { + "pascal_name": "MigrationStateTransition", + "is_object": true + } + } + }, + { + "name": "validation_report", + "description": "Agent-produced validation results from sandbox execution.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "pascal_name": "ValidationReport", + "is_object": true + } + } + ], + "required_positional_arguments": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "Delete", + "description": "Deletes a migration (soft-delete).\n\nAllowed from any state. Deleting a migration marks the record deleted only — it does not roll\nback a migration that already ran, and resources created during the migration are not cleaned\nup. The migration resource is retained for auditability. To stop an in-flight migration (agent\nteardown, transition to CANCELLED), use CancelMigration instead.\n\nReturns NOT_FOUND if the migration does not exist, or was already deleted: a deleted migration\nis hidden from every method (Get, Update, List, and Delete), so it cannot be deleted again.\nReturns ABORTED if a supplied nonempty request etag does not match the resource version.", + "summary": "Delete a migration.", + "path": "/api/compute-migrations/v1/migrations/{migration_id}", + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "DeleteMigrationRequest", + "is_object": true, + "required_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to cancel.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to cancel.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "etag", + "description": "If nonempty, must match the current resource etag or the request fails with ABORTED.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "migration_id", + "description": "The ID of the migration to cancel.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "migration_id", + "description": "The ID of the migration to cancel.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "Get", + "description": "Retrieves a migration by its ID.\n\nReturns the current state, configuration, and output artifacts of the migration.\nUse this to poll migration progress or inspect artifacts after state transitions.\nReturns NOT_FOUND if the migration does not exist in the caller's workspace.", + "summary": "Get a migration.", + "path": "/api/compute-migrations/v1/migrations/{migration_id}", + "is_crud_read": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "GetMigrationRequest", + "is_object": true, + "required_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to retrieve.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to retrieve.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to retrieve.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "migration_id", + "description": "The ID of the migration to retrieve.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "List", + "description": "Lists migrations in the caller's workspace, ordered by migration ID, with cursor-based\npagination and filtering by asset type and state.\n\nEventually consistent: results are read from a cache, and pagination is not a point-in-time\nsnapshot, so a migration created during a List may not appear until a subsequent one.", + "summary": "List migrations.", + "path": "/api/compute-migrations/v1/migrations", + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "ListMigrationsRequest", + "is_object": true + }, + "response": { + "pascal_name": "ListMigrationsResponse", + "is_object": true + }, + "all_fields": [ + { + "name": "asset_type", + "description": "Filter by asset type.", + "is_query": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "page_size", + "description": "Maximum number of migrations to return. Default: 50, maximum: 1000.", + "is_query": true, + "entity": { + "is_int": true + } + }, + { + "name": "page_token", + "description": "Page token from a previous ListMigrations call. When paginating, all other\nparameters must match the call that provided the page token.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "states", + "description": "Filter by migration state. Returns migrations in any of the specified states.", + "is_query": true, + "entity": { + "pascal_name": "MigrationStateList", + "array_value": { + "pascal_name": "MigrationState", + "enum": [ + { + "content": "CANCELLED" + }, + { + "content": "FAILED" + }, + { + "content": "MIGRATION_COMPLETE" + }, + { + "content": "MIGRATION_OBSERVATION" + }, + { + "content": "MIGRATION_PENDING" + }, + { + "content": "MIGRATION_REVIEW" + }, + { + "content": "MIGRATION_RUNNING" + }, + { + "content": "NOT_SUPPORTED" + }, + { + "content": "PLANNING_PENDING" + }, + { + "content": "PLANNING_REVIEW" + }, + { + "content": "PLANNING_RUNNING" + }, + { + "content": "REVISION_PENDING" + }, + { + "content": "TRANSLATION_CREATING" + }, + { + "content": "TRANSLATION_PENDING" + }, + { + "content": "TRANSLATION_READY" + }, + { + "content": "VALIDATION_RUNNING" + }, + { + "content": "VALIDATION_SCHEDULING" + } + ] + } + } + } + ], + "pagination": { + "token": { + "poll_field": { + "name": "page_token", + "description": "Page token from a previous ListMigrations call. When paginating, all other\nparameters must match the call that provided the page token.", + "is_query": true, + "entity": { + "is_string": true + } + } + } + } + }, + { + "name": "RejectMigrationExecution", + "description": "Rejects migration execution at the MIGRATION_REVIEW gate, sending the migration to\nREVISION_PENDING to loop back for re-planning.\n\nValid only when the migration is in MIGRATION_REVIEW. If supplied, the `etag` must match\nthe current server value.\n\nReturns NOT_FOUND if the migration does not exist.\nReturns FAILED_PRECONDITION if the migration is not in MIGRATION_REVIEW.\nReturns ABORTED if the etag does not match the current resource version.", + "summary": "Reject a migration execution.", + "path": "/api/compute-migrations/v1/migrations/{migration_id}/rejectExecution", + "can_use_json": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "RejectMigrationExecutionRequest", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to reject.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "rejection_reason", + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to reject.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "rejection_reason", + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "etag", + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "migration_id", + "description": "The ID of the migration to reject.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "rejection_reason", + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "migration_id", + "description": "The ID of the migration to reject.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "rejection_reason", + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "RejectMigrationTranslation", + "description": "Rejects the working copy at the TRANSLATION_READY gate, sending the migration to\nREVISION_PENDING to loop back for re-planning.\n\nValid only when the migration is in TRANSLATION_READY. If supplied, the `etag` must match\nthe current server value.\n\nReturns NOT_FOUND if the migration does not exist.\nReturns FAILED_PRECONDITION if the migration is not in TRANSLATION_READY.\nReturns ABORTED if the etag does not match the current resource version.", + "summary": "Reject a migration working copy.", + "path": "/api/compute-migrations/v1/migrations/{migration_id}/rejectTranslation", + "can_use_json": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "RejectMigrationTranslationRequest", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to reject.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "rejection_reason", + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "migration_id", + "description": "The ID of the migration to reject.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "rejection_reason", + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "Migration", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "asset_type", + "description": "Type of Classic compute asset being migrated. Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "MigrationAssetType", + "enum": [ + { + "content": "FILE" + }, + { + "content": "INTERACTIVE" + }, + { + "content": "JOB" + } + ] + } + }, + { + "name": "asset_uri", + "description": "URI of the source asset (e.g., \"jobs/12345\"). Cannot be changed after creation.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "etag", + "description": "Optional resource version for optimistic concurrency control.\nIf supplied, it must match the current server value.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "migration_id", + "description": "The ID of the migration to reject.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "rejection_reason", + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "migration_id", + "description": "The ID of the migration to reject.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "rejection_reason", + "description": "Required free-text reason for the rejection, fed back into re-planning so the next plan can\naddress the user's concerns.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + } + ] + }, { "id": "catalog.Connections", "name": "Connections", @@ -107279,7 +111031,7 @@ }, { "name": "ValidateCredential", - "description": "Validates a credential.\n\nFor service credentials (purpose is **SERVICE**), either the __credential_name__ or the cloud-specific credential\nmust be provided.\n\nFor storage credentials (purpose is **STORAGE**), at least one of __external_location_name__ and __url__ need to be\nprovided. If only one of them is provided, it will be used for validation. And if both are provided, the __url__\nwill be used for validation, and __external_location_name__ will be ignored when checking overlapping urls. Either\nthe __credential_name__ or the cloud-specific credential must be provided.\n\nThe caller must be a metastore admin or the credential owner or have the required permission on the metastore and\nthe credential (e.g., **CREATE_EXTERNAL_LOCATION** when purpose is **STORAGE**).", + "description": "Validates a credential.\n\nFor storage credentials (purpose is **STORAGE**), at least one of __external_location_name__ and __url__ need to be\nprovided. If only one of them is provided, it will be used for validation. And if both are provided, the __url__\nwill be used for validation, and __external_location_name__ will be ignored when checking overlapping urls.\n\nThe caller must be a metastore admin or the credential owner or have the required permission on the metastore and\nthe credential (e.g., **CREATE_EXTERNAL_LOCATION** when purpose is **STORAGE**).", "summary": "Validate a credential.", "path": "/api/2.1/unity-catalog/validate-credentials", "can_use_json": true, @@ -107297,6 +111049,7 @@ "all_fields": [ { "name": "aws_iam_role", + "description": "Deprecated: create a credential and pass its credential_name instead.", "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -107306,6 +111059,7 @@ }, { "name": "azure_managed_identity", + "description": "Deprecated: create a credential and pass its credential_name instead.", "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -107323,6 +111077,7 @@ }, { "name": "databricks_gcp_service_account", + "description": "Deprecated: create a credential and pass its credential_name instead.", "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -109874,10 +113629,8 @@ "name": "dataquality" }, "docs_group": "dataquality", - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "list": { "request": { "pascal_name": "ListMonitorRequest" @@ -109890,10 +113643,8 @@ "summary": "Cancel a refresh.", "path": "/api/data-quality/v1/monitors/{object_type}/{object_id}/refreshes/{refresh_id}/cancel", "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "CancelRefreshRequest", "is_object": true, @@ -110027,10 +113778,8 @@ "can_use_json": true, "is_crud_create": true, "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "CreateMonitorRequest", "is_object": true, @@ -110276,10 +114025,8 @@ "can_use_json": true, "is_crud_create": true, "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "CreateRefreshRequest", "is_object": true, @@ -110647,10 +114394,8 @@ "summary": "Delete a monitor.", "path": "/api/data-quality/v1/monitors/{object_type}/{object_id}", "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "DeleteMonitorRequest", "is_object": true, @@ -110745,10 +114490,8 @@ "summary": "Delete a refresh.", "path": "/api/data-quality/v1/monitors/{object_type}/{object_id}/refreshes/{refresh_id}", "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "DeleteRefreshRequest", "is_object": true, @@ -110880,10 +114623,8 @@ "path": "/api/data-quality/v1/monitors/{object_type}/{object_id}", "is_crud_read": true, "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "GetMonitorRequest", "is_object": true, @@ -111021,10 +114762,8 @@ "path": "/api/data-quality/v1/monitors/{object_type}/{object_id}/refreshes/{refresh_id}", "is_crud_read": true, "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "GetRefreshRequest", "is_object": true, @@ -111197,10 +114936,8 @@ "summary": "List monitors.", "path": "/api/data-quality/v1/monitors", "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "ListMonitorRequest", "is_object": true @@ -111243,10 +114980,8 @@ "summary": "List refreshes.", "path": "/api/data-quality/v1/monitors/{object_type}/{object_id}/refreshes", "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "ListRefreshRequest", "is_object": true, @@ -111368,10 +115103,8 @@ "path": "/api/data-quality/v1/monitors/{object_type}/{object_id}", "can_use_json": true, "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "UpdateMonitorRequest", "is_object": true, @@ -111726,10 +115459,8 @@ "path": "/api/data-quality/v1/monitors/{object_type}/{object_id}/refreshes/{refresh_id}", "can_use_json": true, "has_required_positional_arguments": true, - "launch_stage": "PUBLIC_PREVIEW", - "cli_launch_stage_label": "*Public Preview*", - "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", - "cli_launch_stage_display": "Public Preview", + "launch_stage": "GA", + "cli_launch_stage_display": "GA", "request": { "pascal_name": "UpdateRefreshRequest", "is_object": true, @@ -134523,7 +138254,7 @@ "required_fields": [ { "name": "feature_full_names", - "description": "Full names of the features to backfill.", + "description": "Full names of the features to backfill. All features must share the same interval between\nvalues and the same offset. The interval is the slide_duration of a sliding window or the\nwindow_duration of a tumbling window.", "required": true, "is_request_body_field": true, "entity": { @@ -134535,7 +138266,7 @@ }, { "name": "backfill_ranges", - "description": "Output ranges to backfill.", + "description": "Time ranges of source data to backfill. Ranges must not overlap.", "required": true, "is_request_body_field": true, "entity": { @@ -134550,7 +138281,7 @@ "required_request_body_fields": [ { "name": "feature_full_names", - "description": "Full names of the features to backfill.", + "description": "Full names of the features to backfill. All features must share the same interval between\nvalues and the same offset. The interval is the slide_duration of a sliding window or the\nwindow_duration of a tumbling window.", "required": true, "is_request_body_field": true, "entity": { @@ -134562,7 +138293,7 @@ }, { "name": "backfill_ranges", - "description": "Output ranges to backfill.", + "description": "Time ranges of source data to backfill. Ranges must not overlap.", "required": true, "is_request_body_field": true, "entity": { @@ -134582,7 +138313,7 @@ "all_fields": [ { "name": "backfill_ranges", - "description": "Output ranges to backfill.", + "description": "Time ranges of source data to backfill. Ranges must not overlap.", "required": true, "is_request_body_field": true, "entity": { @@ -134603,7 +138334,7 @@ }, { "name": "feature_full_names", - "description": "Full names of the features to backfill.", + "description": "Full names of the features to backfill. All features must share the same interval between\nvalues and the same offset. The interval is the slide_duration of a sliding window or the\nwindow_duration of a tumbling window.", "required": true, "is_request_body_field": true, "entity": { @@ -135657,6 +139388,16 @@ "is_object": true } } + }, + { + "name": "notifications", + "description": "Notification configuration around the materialization job or pipeline lifecycle. They are\napplied to every job and pipeline that materializes a feature in this set. Features which are\nmaterialized in the same pipeline will share the same notification.", + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "pascal_name": "MaterializationNotifications", + "is_object": true + } } ], "long_running_operation": { @@ -135875,7 +139616,7 @@ }, { "name": "materialization_set_id", - "description": "The materialization set this materialized feature was created for, through DABs or\ndirect-engine creation. Unset for a materialized feature that was not created as part of a set.", + "description": "The ID of the materialization set containing this materialized feature.\nUnset for a materialized feature that is not part of a set.", "is_output_only": true, "is_request_body_field": true, "entity": { @@ -135892,7 +139633,8 @@ }, { "name": "notifications", - "description": "Notification configuration around the materialization job or pipeline lifecycle. They are\napplied to every job and pipeline that materializes this feature. Features which are\nmaterialized in the same pipeline will share the same notification.", + "description": "Notification configuration for the jobs and pipelines that materialize this feature.", + "is_output_only": true, "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -135931,7 +139673,7 @@ }, { "name": "pipeline_schedule_state", - "description": "The schedule state of the materialization pipeline.\nHidden from GraphQL: being deprecated, so not exposed to Catalog Explorer.", + "description": "Deprecated: This legacy pipeline setting does not control batch job scheduling.", "is_request_body_field": true, "entity": { "pascal_name": "MaterializedFeaturePipelineScheduleState", @@ -139003,7 +142745,7 @@ }, { "name": "update_mask", - "description": "The fields to update. Only 'materialized_features' is supported.", + "description": "The fields to update. Only 'materialized_features' or '*' is supported.", "required": true, "is_query": true, "entity": { @@ -139023,7 +142765,7 @@ }, { "name": "update_mask", - "description": "The fields to update. Only 'materialized_features' is supported.", + "description": "The fields to update. Only 'materialized_features' or '*' is supported.", "required": true, "is_query": true, "entity": { @@ -139088,7 +142830,7 @@ }, { "name": "update_mask", - "description": "The fields to update. Only 'materialized_features' is supported.", + "description": "The fields to update. Only 'materialized_features' or '*' is supported.", "required": true, "is_query": true, "entity": { @@ -139114,6 +142856,16 @@ "is_object": true } } + }, + { + "name": "notifications", + "description": "Notification configuration around the materialization job or pipeline lifecycle. They are\napplied to every job and pipeline that materializes a feature in this set. Features which are\nmaterialized in the same pipeline will share the same notification.", + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "pascal_name": "MaterializationNotifications", + "is_object": true + } } ], "required_positional_arguments": [ @@ -139128,7 +142880,7 @@ }, { "name": "update_mask", - "description": "The fields to update. Only 'materialized_features' is supported.", + "description": "The fields to update. Only 'materialized_features' or '*' is supported.", "required": true, "is_query": true, "entity": { @@ -139149,7 +142901,7 @@ }, { "name": "UpdateMaterializedFeature", - "description": "Update a materialized feature (pause/resume).", + "description": "Updates a materialized feature.", "summary": "Update a materialized feature.", "path": "/api/2.0/feature-engineering/materialized-features/{materialized_feature_id}", "can_use_json": true, @@ -139182,7 +142934,7 @@ }, { "name": "update_mask", - "description": "Provide the materialization feature fields which should be updated.\nCurrently, only the pipeline_state field can be updated.", + "description": "The fields to update. Only `pipeline_schedule_state` is supported.", "required": true, "is_query": true, "entity": { @@ -139202,7 +142954,7 @@ }, { "name": "update_mask", - "description": "Provide the materialization feature fields which should be updated.\nCurrently, only the pipeline_state field can be updated.", + "description": "The fields to update. Only `pipeline_schedule_state` is supported.", "required": true, "is_query": true, "entity": { @@ -139328,7 +143080,7 @@ }, { "name": "update_mask", - "description": "Provide the materialization feature fields which should be updated.\nCurrently, only the pipeline_state field can be updated.", + "description": "The fields to update. Only `pipeline_schedule_state` is supported.", "required": true, "is_query": true, "entity": { @@ -139407,7 +143159,7 @@ }, { "name": "materialization_set_id", - "description": "The materialization set this materialized feature was created for, through DABs or\ndirect-engine creation. Unset for a materialized feature that was not created as part of a set.", + "description": "The ID of the materialization set containing this materialized feature.\nUnset for a materialized feature that is not part of a set.", "is_output_only": true, "is_request_body_field": true, "entity": { @@ -139424,7 +143176,8 @@ }, { "name": "notifications", - "description": "Notification configuration around the materialization job or pipeline lifecycle. They are\napplied to every job and pipeline that materializes this feature. Features which are\nmaterialized in the same pipeline will share the same notification.", + "description": "Notification configuration for the jobs and pipelines that materialize this feature.", + "is_output_only": true, "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -139463,7 +143216,7 @@ }, { "name": "pipeline_schedule_state", - "description": "The schedule state of the materialization pipeline.\nHidden from GraphQL: being deprecated, so not exposed to Catalog Explorer.", + "description": "Deprecated: This legacy pipeline setting does not control batch job scheduling.", "is_request_body_field": true, "entity": { "pascal_name": "MaterializedFeaturePipelineScheduleState", @@ -139532,7 +143285,7 @@ }, { "name": "update_mask", - "description": "Provide the materialization feature fields which should be updated.\nCurrently, only the pipeline_state field can be updated.", + "description": "The fields to update. Only `pipeline_schedule_state` is supported.", "required": true, "is_query": true, "entity": { @@ -147545,6 +151298,1112 @@ } ] }, + { + "id": "genieagents.GenieAgents", + "name": "GenieAgents", + "description": "Genie provides a no-code experience for business users, powered by AI/BI. Analysts set up Genie Agents that business users can use to ask questions using natural language. Genie uses data registered to Unity Catalog and requires at least CAN USE permission on a Pro or Serverless SQL warehouse. Also, Databricks Assistant must be enabled.", + "package": { + "name": "genieagents" + }, + "is_hidden_cli": true, + "docs_group": "dashboards", + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "list": { + "request": { + "pascal_name": "ListGenieAgentsRequest" + } + }, + "methods": [ + { + "name": "CreateGenieAgent", + "description": "Creates a Genie Agent.", + "summary": "Create Genie Agent.", + "path": "/api/2.0/genie/agents", + "can_use_json": true, + "is_crud_create": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "CreateGenieAgentRequest", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "genie_agent", + "description": "The Genie Agent to create.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgent", + "is_object": true + } + } + ], + "required_request_body_fields": [ + { + "name": "genie_agent", + "description": "The Genie Agent to create.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgent", + "is_object": true + } + } + ] + }, + "request_body_field": { + "name": "genie_agent", + "description": "The Genie Agent to create.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgent", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + } + }, + "response": { + "pascal_name": "GenieAgent", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "genie_agent", + "description": "The Genie Agent to create.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgent", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + } + }, + { + "name": "genie_agent_id", + "description": "The ID for the new Genie Agent: 32 lowercase hexadecimal characters (a UUID without dashes), not\nall zeros. Assigned by the server if omitted. Fails with ALREADY_EXISTS if the ID is in use in\nthe workspace, including by a Genie Agent in the trash, or PERMISSION_DENIED if the caller\ncannot view the Genie Agent using it.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "create_time", + "description": "Time when the Genie Agent was created.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "is_timestamp": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "description", + "description": "Description of the Genie Agent.\n\nThe maximum length is 4,096 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "effective_parent_path", + "description": "The workspace folder that contains the Genie Agent.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "etag", + "description": "Weak etag of `definition` only; metadata changes do not affect it. Send it on update or\ndelete to detect concurrent definition changes.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "name", + "description": "The resource name of the Genie Agent, in the form `agents/{genie_agent_id}`. Ignored on create.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent_path", + "description": "The workspace folder to create the Genie Agent in. If omitted, the caller's home folder is\nused. Returned exactly as submitted; see `effective_parent_path` for the current folder. On\nupdate, setting it moves the Genie Agent and clearing it does not. At most 4,096 characters.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "update_time", + "description": "Time when the Genie Agent was last modified.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "is_timestamp": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "DeleteGenieAgent", + "description": "Deletes a Genie Agent, moving it to trash.", + "summary": "Delete Genie Agent.", + "path": "/api/2.0/genie/{name=agents/*}", + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "DeleteGenieAgentRequest", + "is_object": true, + "required_fields": [ + { + "name": "name", + "description": "The resource name of the Genie Agent to delete, in the form `agents/{genie_agent_id}`.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "name", + "description": "The resource name of the Genie Agent to delete, in the form `agents/{genie_agent_id}`.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "is_empty_response": true + }, + "all_fields": [ + { + "name": "etag", + "description": "Etag from a previous read. On mismatch the delete fails with ABORTED and nothing is deleted.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "name", + "description": "The resource name of the Genie Agent to delete, in the form `agents/{genie_agent_id}`.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "name", + "description": "The resource name of the Genie Agent to delete, in the form `agents/{genie_agent_id}`.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "GetGenieAgent", + "description": "Gets a Genie Agent.", + "summary": "Get Genie Agent.", + "path": "/api/2.0/genie/{name=agents/*}", + "is_crud_read": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "GetGenieAgentRequest", + "is_object": true, + "required_fields": [ + { + "name": "name", + "description": "The resource name of the Genie Agent to retrieve, in the form `agents/{genie_agent_id}`.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "name", + "description": "The resource name of the Genie Agent to retrieve, in the form `agents/{genie_agent_id}`.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "GenieAgent", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "name", + "description": "The resource name of the Genie Agent to retrieve, in the form `agents/{genie_agent_id}`.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "name", + "description": "The resource name of the Genie Agent to retrieve, in the form `agents/{genie_agent_id}`.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] + }, + { + "name": "ListGenieAgents", + "description": "Lists the Genie Agents in the workspace. Genie Agents created from an integration (for example,\nfrom a dashboard) are not listed.", + "summary": "List Genie Agents.", + "path": "/api/2.0/genie/agents", + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "ListGenieAgentsRequest", + "is_object": true + }, + "response": { + "pascal_name": "ListGenieAgentsResponse", + "is_object": true + }, + "all_fields": [ + { + "name": "page_size", + "description": "Maximum number of Genie Agents to return per page. Defaults to 20 when unset or 0; values above\n100 are coerced to 100. Negative values are rejected with INVALID_PARAMETER_VALUE. With\n`GENIE_AGENT_VIEW_FULL`, a smaller per-page maximum applies.", + "is_query": true, + "entity": { + "is_int": true + } + }, + { + "name": "page_token", + "description": "Pagination token from a previous response's `next_page_token`. A token that was not returned\nby this method is rejected with INVALID_PARAMETER_VALUE.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "view", + "description": "The fields to return for each Genie Agent. Defaults to `GENIE_AGENT_VIEW_BASIC`. Use\n`GENIE_AGENT_VIEW_FULL` only when the agent bodies are needed, since it returns smaller pages.", + "is_query": true, + "entity": { + "pascal_name": "GenieAgentView", + "enum": [ + { + "content": "GENIE_AGENT_VIEW_BASIC" + }, + { + "content": "GENIE_AGENT_VIEW_FULL" + } + ] + } + } + ], + "pagination": { + "token": { + "poll_field": { + "name": "page_token", + "description": "Pagination token from a previous response's `next_page_token`. A token that was not returned\nby this method is rejected with INVALID_PARAMETER_VALUE.", + "is_query": true, + "entity": { + "is_string": true + } + } + } + } + }, + { + "name": "UpdateGenieAgent", + "description": "Updates a Genie Agent. Only the fields named in update_mask are applied.", + "summary": "Update Genie Agent.", + "path": "/api/2.0/genie/{name=agents/*}", + "can_use_json": true, + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "UpdateGenieAgentRequest", + "is_object": true, + "has_field_mask": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "name", + "description": "The resource name of the Genie Agent, in the form `agents/{genie_agent_id}`. Ignored on create.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "genie_agent", + "description": "The Genie Agent to update. Its `name` identifies the resource; fields named\nin update_mask are applied.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgent", + "is_object": true + } + }, + { + "name": "update_mask", + "description": "The set of fields to update. The mask is required and must name at least one\nfield; an empty or absent mask is rejected with INVALID_PARAMETER_VALUE, as is a path that is\nnot an updatable field.\n\nA field named in the mask takes the value from `genie_agent`, even when it is unset there:\nan unset `description` is cleared; an unset `display_name`, `warehouse_id`, or\n`definition` is rejected with INVALID_PARAMETER_VALUE; an unset `parent_path` is cleared\nwithout moving the Genie Agent. `definition` is replaced as a whole; paths within it are\nnot supported.\n\nThe special value `*` replaces the whole Genie Agent, as if every updatable field were named.\nIt must be the only path in the mask. Prefer naming fields explicitly: with `*`, any field\nadded to Genie Agent later is also replaced, so a client unaware of it may clear it.", + "required": true, + "is_query": true, + "entity": { + "is_field_mask": true + } + } + ], + "required_in_url_fields": [ + { + "name": "name", + "description": "The resource name of the Genie Agent, in the form `agents/{genie_agent_id}`. Ignored on create.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "update_mask", + "description": "The set of fields to update. The mask is required and must name at least one\nfield; an empty or absent mask is rejected with INVALID_PARAMETER_VALUE, as is a path that is\nnot an updatable field.\n\nA field named in the mask takes the value from `genie_agent`, even when it is unset there:\nan unset `description` is cleared; an unset `display_name`, `warehouse_id`, or\n`definition` is rejected with INVALID_PARAMETER_VALUE; an unset `parent_path` is cleared\nwithout moving the Genie Agent. `definition` is replaced as a whole; paths within it are\nnot supported.\n\nThe special value `*` replaces the whole Genie Agent, as if every updatable field were named.\nIt must be the only path in the mask. Prefer naming fields explicitly: with `*`, any field\nadded to Genie Agent later is also replaced, so a client unaware of it may clear it.", + "required": true, + "is_query": true, + "entity": { + "is_field_mask": true + } + } + ], + "required_request_body_fields": [ + { + "name": "genie_agent", + "description": "The Genie Agent to update. Its `name` identifies the resource; fields named\nin update_mask are applied.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgent", + "is_object": true + } + } + ] + }, + "request_body_field": { + "name": "genie_agent", + "description": "The Genie Agent to update. Its `name` identifies the resource; fields named\nin update_mask are applied.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgent", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + } + }, + "response": { + "pascal_name": "GenieAgent", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + }, + "all_fields": [ + { + "name": "etag", + "description": "Etag from a previous read. On mismatch the update fails with ABORTED (metadata changes may\nalready be applied); get the agent and retry. May return TEMPORARILY_UNAVAILABLE.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "genie_agent", + "description": "The Genie Agent to update. Its `name` identifies the resource; fields named\nin update_mask are applied.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgent", + "is_object": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_request_body_fields": [ + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + } + }, + { + "name": "name", + "description": "The resource name of the Genie Agent, in the form `agents/{genie_agent_id}`. Ignored on create.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "update_mask", + "description": "The set of fields to update. The mask is required and must name at least one\nfield; an empty or absent mask is rejected with INVALID_PARAMETER_VALUE, as is a path that is\nnot an updatable field.\n\nA field named in the mask takes the value from `genie_agent`, even when it is unset there:\nan unset `description` is cleared; an unset `display_name`, `warehouse_id`, or\n`definition` is rejected with INVALID_PARAMETER_VALUE; an unset `parent_path` is cleared\nwithout moving the Genie Agent. `definition` is replaced as a whole; paths within it are\nnot supported.\n\nThe special value `*` replaces the whole Genie Agent, as if every updatable field were named.\nIt must be the only path in the mask. Prefer naming fields explicitly: with `*`, any field\nadded to Genie Agent later is also replaced, so a client unaware of it may clear it.", + "required": true, + "is_query": true, + "entity": { + "is_field_mask": true + } + }, + { + "name": "create_time", + "description": "Time when the Genie Agent was created.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "is_timestamp": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "description", + "description": "Description of the Genie Agent.\n\nThe maximum length is 4,096 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "effective_parent_path", + "description": "The workspace folder that contains the Genie Agent.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "etag", + "description": "Weak etag of `definition` only; metadata changes do not affect it. Send it on update or\ndelete to detect concurrent definition changes.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "name", + "description": "The resource name of the Genie Agent, in the form `agents/{genie_agent_id}`. Ignored on create.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent_path", + "description": "The workspace folder to create the Genie Agent in. If omitted, the caller's home folder is\nused. Returned exactly as submitted; see `effective_parent_path` for the current folder. On\nupdate, setting it moves the Genie Agent and clearing it does not. At most 4,096 characters.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "update_time", + "description": "Time when the Genie Agent was last modified.", + "is_output_only": true, + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "is_timestamp": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "name", + "description": "The resource name of the Genie Agent, in the form `agents/{genie_agent_id}`. Ignored on create.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "update_mask", + "description": "The set of fields to update. The mask is required and must name at least one\nfield; an empty or absent mask is rejected with INVALID_PARAMETER_VALUE, as is a path that is\nnot an updatable field.\n\nA field named in the mask takes the value from `genie_agent`, even when it is unset there:\nan unset `description` is cleared; an unset `display_name`, `warehouse_id`, or\n`definition` is rejected with INVALID_PARAMETER_VALUE; an unset `parent_path` is cleared\nwithout moving the Genie Agent. `definition` is replaced as a whole; paths within it are\nnot supported.\n\nThe special value `*` replaces the whole Genie Agent, as if every updatable field were named.\nIt must be the only path in the mask. Prefer naming fields explicitly: with `*`, any field\nadded to Genie Agent later is also replaced, so a client unaware of it may clear it.", + "required": true, + "is_query": true, + "entity": { + "is_field_mask": true + } + }, + { + "name": "display_name", + "description": "Display name of the Genie Agent. Must be unique within its folder (effective_parent_path): a\ncreate, rename, or move that would collide with an existing Genie Agent's name in the target\nfolder is rejected with ALREADY_EXISTS.\n\nThe maximum length is 63 characters. Requests with a longer value are rejected with\nINVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "definition", + "description": "The definition of the Genie Agent: its sample questions, data sources, instructions, and\nbenchmarks. Must set at least one field. Returned on get and on list with\n`GENIE_AGENT_VIEW_FULL`. Create and update return a submitted definition unchanged; one the\nservice would store differently, or with a column config the workspace can't keep (unknown\ncolumn, or a display name while those are disabled), is rejected with INVALID_PARAMETER_VALUE.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "GenieAgentDefinition", + "is_object": true + } + }, + { + "name": "warehouse_id", + "description": "Warehouse associated with the Genie Agent.", + "required": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ] + } + ] + }, { "id": "workspace.GitCredentials", "name": "GitCredentials", @@ -150279,7 +155138,7 @@ "name": "CreateDirectGroupMember", "description": "Creates a group membership (assigns a principal to a group).\n\nAuthorization: the caller must be an account admin or a manager of the group (holds the\n`roles/group.manager` role on it).", "summary": "Create a direct group membership.", - "path": "/api/2.0/identity/accounts/{account_id}/groups/{group_id}/direct-members", + "path": "/api/2.0/identity/{parent=accounts/*/groups/*}/direct-members", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -150292,12 +155151,12 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "parent", + "description": "The parent resource name of the group to add the member to.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -150313,12 +155172,12 @@ ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "parent", + "description": "The parent resource name of the group to add the member to.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], @@ -150430,12 +155289,12 @@ } }, { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "parent", + "description": "The parent resource name of the group to add the member to.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -150482,6 +155341,23 @@ ] } }, + { + "name": "name", + "description": "The resource name of the group membership. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}\n- Workspace-scoped: groups/{group_id}/direct-members/{principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the group that contains the membership. The format depends on the API\nthat returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "principal_id", "description": "Internal ID of the principal in Databricks.", @@ -150514,12 +155390,12 @@ ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "parent", + "description": "The parent resource name of the group to add the member to.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -150537,7 +155413,7 @@ "name": "CreateGroup", "description": "Creates a local group in the Databricks account and returns the created group. A local group\nis one that is not synced from the customer's identity provider, and can be created whether or\nnot Account Identity Management (AIM) is enabled.\n\nWhen AIM is enabled, supplying an external ID returns an error. To provision the identity from\nyour identity provider, resolve it by its external ID with ResolveGroup; to read an existing\nexternal identity, use the ExternalGroup resource.", "summary": "Create a group in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/groups", + "path": "/api/2.0/identity/{parent=accounts/*}/groups", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -150549,6 +155425,15 @@ "is_object": true, "has_required_request_body_fields": true, "required_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the group.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "group", "description": "Required. Group to be created in Databricks", @@ -150560,6 +155445,17 @@ } } ], + "required_in_url_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the group.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], "required_request_body_fields": [ { "name": "group", @@ -150598,6 +155494,15 @@ "is_object": true } }, + { + "name": "parent", + "description": "The parent resource name of the account in which to create the group.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "account_id", "description": "The parent account ID for group in Databricks.", @@ -150631,6 +155536,34 @@ "entity": { "is_string": true } + }, + { + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the group, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the group.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } } ] }, @@ -150965,7 +155898,7 @@ "name": "CreateServicePrincipal", "description": "Creates a local service principal in the Databricks account and returns the created service\nprincipal. A local service principal is one that is not synced from the customer's identity\nprovider, and can be created whether or not Account Identity Management (AIM) is enabled.\n\nWhen AIM is enabled, supplying an external ID returns an error. To provision the identity from\nyour identity provider, resolve it by its external ID with ResolveServicePrincipal; to read an\nexisting external identity, use the ExternalServicePrincipal resource.", "summary": "Create a service principal in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/service-principals", + "path": "/api/2.0/identity/{parent=accounts/*}/service-principals", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -150977,6 +155910,15 @@ "is_object": true, "has_required_request_body_fields": true, "required_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the service principal.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal", "description": "Required. Service principal to be created in Databricks", @@ -150988,6 +155930,17 @@ } } ], + "required_in_url_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the service principal.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], "required_request_body_fields": [ { "name": "service_principal", @@ -151130,6 +156083,15 @@ ] }, "all_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the service principal.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal", "description": "Required. Service principal to be created in Databricks", @@ -151249,6 +156211,23 @@ "is_string": true } }, + { + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the service principal,\n`accounts/{account_id}`. Both the account-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal_id", "description": "Internal service principal ID of the service principal in Databricks.", @@ -151260,6 +156239,15 @@ } ], "required_positional_arguments": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the service principal.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "display_name", "description": "Display name of the service principal.", @@ -151292,7 +156280,7 @@ "name": "CreateUser", "description": "Creates a local user in the Databricks account and returns the created user. A local user is\none that is not synced from the customer's identity provider, and can be created whether or not\nAccount Identity Management (AIM) is enabled.\n\nWhen AIM is enabled, supplying an external ID returns an error. To provision the identity from\nyour identity provider, resolve it by its external ID with ResolveUser; to read an existing\nexternal identity, use the ExternalUser resource.", "summary": "Create a user in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/users", + "path": "/api/2.0/identity/{parent=accounts/*}/users", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -151304,6 +156292,15 @@ "is_object": true, "has_required_request_body_fields": true, "required_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the user.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "user", "description": "Required. User to be created in Databricks", @@ -151315,6 +156312,17 @@ } } ], + "required_in_url_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the user.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], "required_request_body_fields": [ { "name": "user", @@ -151493,6 +156501,15 @@ ] }, "all_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the user.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "user", "description": "Required. User to be created in Databricks", @@ -151621,6 +156638,23 @@ "is_object": true } }, + { + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the user, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "user_id", "description": "Internal userId of the user in Databricks.", @@ -151641,6 +156675,15 @@ } ], "required_positional_arguments": [ + { + "name": "parent", + "description": "The parent resource name of the account in which to create the user.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "username", "description": "Username/email of the user.", @@ -151682,7 +156725,7 @@ "name": "CreateWorkspaceAssignment", "description": "Creates a workspace assignment for a principal. Entitlements are granted one at a time\nrather than atomically. If the request fails partway through, the principal stays assigned to\nthe workspace with only some of the requested entitlements. Get the assignment\nafterwards to confirm which entitlements were granted.", "summary": "Create a workspace assignment.", - "path": "/api/2.0/identity/accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments", + "path": "/api/2.0/identity/{parent=accounts/*/workspaces/*}/workspace-assignments", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -151695,12 +156738,12 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignment is being created.", + "name": "parent", + "description": "The parent resource name of the workspace to assign the principal to.\nFormat: accounts/{account_id}/workspaces/{workspace_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -151716,12 +156759,12 @@ ], "required_in_url_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignment is being created.", + "name": "parent", + "description": "The parent resource name of the workspace to assign the principal to.\nFormat: accounts/{account_id}/workspaces/{workspace_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], @@ -151750,7 +156793,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -151761,7 +156804,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -151778,7 +156821,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -151789,7 +156832,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -151799,6 +156842,15 @@ ] }, "all_fields": [ + { + "name": "parent", + "description": "The parent resource name of the workspace to assign the principal to.\nFormat: accounts/{account_id}/workspaces/{workspace_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "workspace_assignment", "description": "Required. Workspace assignment to be created in Databricks.", @@ -151811,7 +156863,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -151822,7 +156874,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -151832,15 +156884,6 @@ ] } }, - { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignment is being created.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, { "name": "account_id", "description": "The account ID parent of the workspace where the principal is assigned", @@ -151913,9 +156956,26 @@ } } }, + { + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the workspace that contains the assignment,\n`accounts/{account_id}/workspaces/{workspace_id}`. Both the account-scoped and workspace-scoped\nAPIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -151954,17 +157014,17 @@ ], "required_positional_arguments": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignment is being created.", + "name": "parent", + "description": "The parent resource name of the workspace to assign the principal to.\nFormat: accounts/{account_id}/workspaces/{workspace_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -152270,7 +157330,7 @@ "name": "DeleteDirectGroupMember", "description": "Deletes a group membership (unassigns a principal from a group).\n\nAuthorization: the caller must be an account admin or a manager of the group (holds the\n`roles/group.manager` role on it).", "summary": "Delete a direct group membership.", - "path": "/api/2.0/identity/accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/groups/*/direct-members/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -152281,41 +157341,23 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal to be unassigned from the group.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal to be unassigned from the group.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -152325,41 +157367,23 @@ }, "all_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal to be unassigned from the group.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal to be unassigned from the group.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -152368,7 +157392,7 @@ "name": "DeleteGroup", "description": "Deletes a group from the Databricks account by its internal ID.\n\nAuthorization: the caller must be an account admin or a manager of the group (holds the\n`roles/group.manager` role on it).", "summary": "Delete a group in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/groups/{group_id}", + "path": "/api/2.0/identity/{name=accounts/*/groups/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -152379,8 +157403,8 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -152390,8 +157414,8 @@ ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -152405,8 +157429,8 @@ }, "all_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -152416,8 +157440,8 @@ ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -152490,7 +157514,7 @@ "name": "DeleteServicePrincipal", "description": "Deletes a service principal from the Databricks account by its internal ID.", "summary": "Delete a service principal in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/service-principals/{service_principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/service-principals/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -152501,8 +157525,8 @@ "is_object": true, "required_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: accounts/{account_id}/service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -152512,8 +157536,8 @@ ], "required_in_url_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: accounts/{account_id}/service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -152527,8 +157551,8 @@ }, "all_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: accounts/{account_id}/service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -152538,8 +157562,8 @@ ], "required_positional_arguments": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: accounts/{account_id}/service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -152552,7 +157576,7 @@ "name": "DeleteUser", "description": "Deletes a user from the Databricks account by its internal ID.", "summary": "Delete a user in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/users/{user_id}", + "path": "/api/2.0/identity/{name=accounts/*/users/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -152563,8 +157587,8 @@ "is_object": true, "required_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: accounts/{account_id}/users/{user_id}", "required": true, "is_path": true, "entity": { @@ -152574,8 +157598,8 @@ ], "required_in_url_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: accounts/{account_id}/users/{user_id}", "required": true, "is_path": true, "entity": { @@ -152589,8 +157613,8 @@ }, "all_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: accounts/{account_id}/users/{user_id}", "required": true, "is_path": true, "entity": { @@ -152600,8 +157624,8 @@ ], "required_positional_arguments": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: accounts/{account_id}/users/{user_id}", "required": true, "is_path": true, "entity": { @@ -152614,7 +157638,7 @@ "name": "DeleteWorkspaceAssignment", "description": "Deletes a workspace assignment for a principal, revoking all of its entitlements.\nEntitlements are revoked one at a time rather than atomically. If the request fails partway\nthrough, the principal stays assigned with some of its original entitlements. Retrying is safe.", "summary": "Delete a workspace assignment.", - "path": "/api/2.0/identity/accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/workspaces/*/workspace-assignments/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -152625,41 +157649,23 @@ "is_object": true, "required_fields": [ { - "name": "workspace_id", - "description": "The workspace ID where the principal has access.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks to delete workspace assignment for.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "workspace_id", - "description": "The workspace ID where the principal has access.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks to delete workspace assignment for.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -152669,41 +157675,23 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks to delete workspace assignment for.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "workspace_id", - "description": "The workspace ID where the principal has access.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "workspace_id", - "description": "The workspace ID where the principal has access.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks to delete workspace assignment for.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -152809,7 +157797,7 @@ "name": "GetDirectGroupMember", "description": "Gets a provisioned direct member of a group.", "summary": "Get a direct group member.", - "path": "/api/2.0/identity/accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/groups/*/direct-members/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -152820,41 +157808,23 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal belonging to the group in Databricks.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal belonging to the group in Databricks.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -152888,41 +157858,23 @@ }, "all_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal belonging to the group in Databricks.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal belonging to the group in Databricks.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -153120,7 +158072,7 @@ "name": "GetGroup", "description": "Fetches a group from the Databricks account by its internal ID.", "summary": "Get a group in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/groups/{group_id}", + "path": "/api/2.0/identity/{name=accounts/*/groups/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -153131,8 +158083,8 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -153142,8 +158094,8 @@ ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -153158,8 +158110,8 @@ }, "all_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -153169,8 +158121,8 @@ ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -153289,7 +158241,7 @@ "name": "GetServicePrincipal", "description": "Fetches a service principal from the Databricks account by its internal ID.", "summary": "Get a service principal in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/service-principals/{service_principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/service-principals/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -153300,8 +158252,8 @@ "is_object": true, "required_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: accounts/{account_id}/service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -153311,8 +158263,8 @@ ], "required_in_url_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: accounts/{account_id}/service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -153384,8 +158336,8 @@ }, "all_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: accounts/{account_id}/service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -153395,8 +158347,8 @@ ], "required_positional_arguments": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: accounts/{account_id}/service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -153409,7 +158361,7 @@ "name": "GetUser", "description": "Fetches a user from the Databricks account by its internal ID.", "summary": "Get a user in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/users/{user_id}", + "path": "/api/2.0/identity/{name=accounts/*/users/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -153420,8 +158372,8 @@ "is_object": true, "required_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: accounts/{account_id}/users/{user_id}", "required": true, "is_path": true, "entity": { @@ -153431,8 +158383,8 @@ ], "required_in_url_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: accounts/{account_id}/users/{user_id}", "required": true, "is_path": true, "entity": { @@ -153522,8 +158474,8 @@ }, "all_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: accounts/{account_id}/users/{user_id}", "required": true, "is_path": true, "entity": { @@ -153533,8 +158485,8 @@ ], "required_positional_arguments": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: accounts/{account_id}/users/{user_id}", "required": true, "is_path": true, "entity": { @@ -153547,7 +158499,7 @@ "name": "GetWorkspaceAccessDetail", "description": "Returns the access details for a principal in a workspace. Allows for checking access details for any\nprovisioned principal (user, service principal, or group) in a workspace.\n* Provisioned principal here refers to one that has been synced into Databricks from the customer's IdP or\nadded explicitly to Databricks via SCIM/UI.\nAllows for passing in a \"view\" parameter to control what fields are returned (BASIC by default or FULL).", "summary": "Get workspace access details for a principal.", - "path": "/api/2.0/identity/accounts/{account_id}/workspaces/{workspace_id}/workspace-access-details/{principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/workspaces/*/workspace-access-details/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -153558,41 +158510,23 @@ "is_object": true, "required_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the access details are being requested.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the access details are being requested.", + "name": "name", + "description": "The resource name of the workspace access detail.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-access-details/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the access details are being requested.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the access details are being requested.", + "name": "name", + "description": "The resource name of the workspace access detail.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-access-details/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -153603,12 +158537,12 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the access details are being requested.", + "name": "name", + "description": "The resource name of the workspace access detail.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-access-details/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -153626,34 +158560,16 @@ } ] } - }, - { - "name": "workspace_id", - "description": "Required. The workspace ID for which the access details are being requested.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } } ], "required_positional_arguments": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the access details are being requested.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the access details are being requested.", + "name": "name", + "description": "The resource name of the workspace access detail.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-access-details/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -153662,7 +158578,7 @@ "name": "GetWorkspaceAssignment", "description": "Returns the assignment for a principal in a workspace.", "summary": "Get a workspace assignment for a principal.", - "path": "/api/2.0/identity/accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/workspaces/*/workspace-assignments/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -153673,41 +158589,23 @@ "is_object": true, "required_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the assignment is being requested.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the assignment is being requested.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the assignment is being requested.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the assignment is being requested.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -153719,7 +158617,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -153730,7 +158628,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -153741,41 +158639,23 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the assignment is being requested.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "workspace_id", - "description": "Required. The workspace ID for which the assignment is being requested.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the assignment is being requested.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the assignment is being requested.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -153905,7 +158785,7 @@ "name": "ListDirectGroupMembers", "description": "Lists provisioned direct members of a group with their membership source (internal or from identity provider).", "summary": "List direct group members.", - "path": "/api/2.0/identity/accounts/{account_id}/groups/{group_id}/direct-members", + "path": "/api/2.0/identity/{parent=accounts/*/groups/*}/direct-members", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -153916,23 +158796,23 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks whose direct members are being listed.", + "name": "parent", + "description": "The parent resource name of the group whose direct members to list.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks whose direct members are being listed.", + "name": "parent", + "description": "The parent resource name of the group whose direct members to list.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -153942,15 +158822,6 @@ "is_object": true }, "all_fields": [ - { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks whose direct members are being listed.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, { "name": "page_size", "description": "The maximum number of members to return. The service may return fewer than this value.\nIf not provided, defaults to 1000, which is also the maximum allowed. Requests for more than the maximum are clamped to 1000.", @@ -153966,16 +158837,25 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The parent resource name of the group whose direct members to list.\nFormat: accounts/{account_id}/groups/{group_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } } ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks whose direct members are being listed.", + "name": "parent", + "description": "The parent resource name of the group whose direct members to list.\nFormat: accounts/{account_id}/groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], @@ -153996,7 +158876,7 @@ "name": "ListGroups", "description": "Lists the groups in the Databricks account, returning one page per call. Supports filtering by\ngroup name or external ID.", "summary": "List groups in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/groups", + "path": "/api/2.0/identity/{parent=accounts/*}/groups", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -154004,7 +158884,29 @@ "cli_launch_stage_display": "Beta", "request": { "pascal_name": "ListGroupsRequest", - "is_object": true + "is_object": true, + "required_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account whose groups to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account whose groups to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] }, "response": { "pascal_name": "ListGroupsResponse", @@ -154034,6 +158936,26 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The parent resource name of the account whose groups to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "parent", + "description": "The parent resource name of the account whose groups to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } } ], "pagination": { @@ -154142,7 +159064,7 @@ "name": "ListServicePrincipals", "description": "Lists the service principals in the Databricks account, returning one page per call. Supports\nfiltering by application ID or external ID.", "summary": "List service principals in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/service-principals", + "path": "/api/2.0/identity/{parent=accounts/*}/service-principals", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -154150,7 +159072,29 @@ "cli_launch_stage_display": "Beta", "request": { "pascal_name": "ListServicePrincipalsRequest", - "is_object": true + "is_object": true, + "required_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account whose service principals to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account whose service principals to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] }, "response": { "pascal_name": "ListServicePrincipalsResponse", @@ -154180,6 +159124,26 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The parent resource name of the account whose service principals to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "parent", + "description": "The parent resource name of the account whose service principals to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } } ], "pagination": { @@ -154199,7 +159163,7 @@ "name": "ListTransitiveParentGroups", "description": "Lists all transitive parent groups of a principal.", "summary": "List all transitive parent groups of a principal.", - "path": "/api/2.0/identity/accounts/{account_id}/principals/{principal_id}/transitive-parent-groups", + "path": "/api/2.0/identity/{parent=accounts/*/principals/*}/transitive-parent-groups", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -154210,23 +159174,23 @@ "is_object": true, "required_fields": [ { - "name": "principal_id", - "description": "Required. Internal ID of the principal in Databricks whose transitive parent groups are being listed.", + "name": "parent", + "description": "The parent resource name of the principal whose transitive parent groups to list.\nFormat: accounts/{account_id}/principals/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "principal_id", - "description": "Required. Internal ID of the principal in Databricks whose transitive parent groups are being listed.", + "name": "parent", + "description": "The parent resource name of the principal whose transitive parent groups to list.\nFormat: accounts/{account_id}/principals/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -154253,23 +159217,23 @@ } }, { - "name": "principal_id", - "description": "Required. Internal ID of the principal in Databricks whose transitive parent groups are being listed.", + "name": "parent", + "description": "The parent resource name of the principal whose transitive parent groups to list.\nFormat: accounts/{account_id}/principals/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "principal_id", - "description": "Required. Internal ID of the principal in Databricks whose transitive parent groups are being listed.", + "name": "parent", + "description": "The parent resource name of the principal whose transitive parent groups to list.\nFormat: accounts/{account_id}/principals/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -154278,7 +159242,7 @@ "name": "ListUsers", "description": "Lists the users in the Databricks account, returning one page per call. Supports filtering by\nusername or external ID.", "summary": "List users in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/users", + "path": "/api/2.0/identity/{parent=accounts/*}/users", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -154286,7 +159250,29 @@ "cli_launch_stage_display": "Beta", "request": { "pascal_name": "ListUsersRequest", - "is_object": true + "is_object": true, + "required_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account whose users to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "parent", + "description": "The parent resource name of the account whose users to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] }, "response": { "pascal_name": "ListUsersResponse", @@ -154316,6 +159302,26 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The parent resource name of the account whose users to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "parent", + "description": "The parent resource name of the account whose users to list.\nFormat: accounts/{account_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } } ], "pagination": { @@ -154425,7 +159431,7 @@ "name": "ListWorkspaceAssignments", "description": "Lists workspace assignments for a workspace. The response omits the per-principal\nentitlement fields (`entitlements` and `effective_entitlements`). To read the entitlements for\na single principal, get that principal's assignment.", "summary": "List workspace assignments for a workspace.", - "path": "/api/2.0/identity/accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments", + "path": "/api/2.0/identity/{parent=accounts/*/workspaces/*}/workspace-assignments", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -154436,23 +159442,23 @@ "is_object": true, "required_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignments are being fetched.", + "name": "parent", + "description": "The parent resource name of the workspace whose assignments to list.\nFormat: accounts/{account_id}/workspaces/{workspace_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignments are being fetched.", + "name": "parent", + "description": "The parent resource name of the workspace whose assignments to list.\nFormat: accounts/{account_id}/workspaces/{workspace_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -154479,23 +159485,23 @@ } }, { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignments are being fetched.", + "name": "parent", + "description": "The parent resource name of the workspace whose assignments to list.\nFormat: accounts/{account_id}/workspaces/{workspace_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignments are being fetched.", + "name": "parent", + "description": "The parent resource name of the workspace whose assignments to list.\nFormat: accounts/{account_id}/workspaces/{workspace_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], @@ -154711,7 +159717,7 @@ "name": "UpdateGroup", "description": "Updates an existing group in the Databricks account. Only the fields named in the update mask\nare modified. Returns the updated Group resource.\n\nWhen AIM is enabled and the group is an external identity (its external_id is set), only\nexternal_id can be updated; its other fields are sourced from your identity provider.\nWith AIM and group visibility filters, a new nonempty external_id must identify a visible group.\nClearing external_id is allowed.\n\nAuthorization: the caller must be an account admin or a manager of the group (holds the\n`roles/group.manager` role on it).", "summary": "Update a group in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/groups/{group_id}", + "path": "/api/2.0/identity/{name=accounts/*/groups/*}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -154724,8 +159730,8 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -154754,8 +159760,8 @@ ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -154811,8 +159817,8 @@ } }, { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -154861,12 +159867,29 @@ "entity": { "is_string": true } + }, + { + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the group, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } } ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -154886,9 +159909,9 @@ }, { "name": "UpdateServicePrincipal", - "description": "Updates an existing service principal in the Databricks account. Only the fields named in the\nupdate mask are modified. Returns the updated ServicePrincipal resource.\n\nFor locally managed service principals, is_agent must be set to true or false when updated.\n\nWhen AIM is enabled and the service principal is an external identity (its external_id is set),\nonly external_id can be updated; its other fields are sourced from your identity provider.", + "description": "Updates an existing service principal in the Databricks account. Only the fields named in the\nupdate mask are modified. Returns the updated ServicePrincipal resource.\n\nTo change is_agent on a locally managed service principal, set it to true or false. Naming\nis_agent in the update mask without a value leaves it unchanged.\n\nWhen AIM is enabled and the service principal is an external identity (its external_id is set),\nonly external_id can be updated; its other fields are sourced from your identity provider.", "summary": "Update a service principal in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/service-principals/{service_principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/service-principals/*}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -154901,8 +159924,8 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -154931,8 +159954,8 @@ ], "required_in_url_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -155091,6 +160114,15 @@ ] }, "all_fields": [ + { + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal", "description": "Required. Service Principal to be updated in Databricks", @@ -155158,15 +160190,6 @@ ] } }, - { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_string": true - } - }, { "name": "update_mask", "description": "Required. The list of fields to update.", @@ -155228,6 +160251,23 @@ "is_string": true } }, + { + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the service principal,\n`accounts/{account_id}`. Both the account-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal_id", "description": "Internal service principal ID of the service principal in Databricks.", @@ -155240,8 +160280,8 @@ ], "required_positional_arguments": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -155289,7 +160329,7 @@ "name": "UpdateUser", "description": "Updates an existing user in the Databricks account and returns the updated user. Only the\nfields named in the update mask are modified. The updatable fields are fullName.givenName,\nfullName.familyName, status, and externalId.\n\nWhen AIM is enabled and the user is an external identity (its external_id is set), only\nexternal_id can be updated; its other fields are sourced from your identity provider.", "summary": "Update a user in the account.", - "path": "/api/2.0/identity/accounts/{account_id}/users/{user_id}", + "path": "/api/2.0/identity/{name=accounts/*/users/*}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -155302,8 +160342,8 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -155332,8 +160372,8 @@ ], "required_in_url_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -155528,6 +160568,15 @@ ] }, "all_fields": [ + { + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "update_mask", "description": "Required. The list of fields to update.", @@ -155622,15 +160671,6 @@ ] } }, - { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_string": true - } - }, { "name": "account_id", "description": "The accountId parent of the user in Databricks.", @@ -155674,6 +160714,23 @@ "is_object": true } }, + { + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the user, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "user_id", "description": "Internal userId of the user in Databricks.", @@ -155695,8 +160752,8 @@ ], "required_positional_arguments": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -155753,7 +160810,7 @@ "name": "UpdateWorkspaceAssignment", "description": "Updates the entitlements of a directly assigned principal in a workspace. Changes are applied\none at a time rather than atomically. If the request fails partway through, only some of the\nrequested changes take effect. Get the assignment afterwards to confirm the final state.", "summary": "Update a workspace assignment.", - "path": "/api/2.0/identity/accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}", + "path": "/api/2.0/identity/{name=accounts/*/workspaces/*/workspace-assignments/*}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -155767,21 +160824,12 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignment is being updated.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -155806,21 +160854,12 @@ ], "required_in_url_fields": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignment is being updated.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -155858,7 +160897,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -155869,7 +160908,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -155886,7 +160925,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -155897,7 +160936,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -155908,12 +160947,12 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -155937,7 +160976,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -155948,7 +160987,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -155958,15 +160997,6 @@ ] } }, - { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignment is being updated.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, { "name": "account_id", "description": "The account ID parent of the workspace where the principal is assigned", @@ -156039,9 +161069,26 @@ } } }, + { + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the workspace that contains the assignment,\n`accounts/{account_id}/workspaces/{workspace_id}`. Both the account-scoped and workspace-scoped\nAPIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -156080,21 +161127,12 @@ ], "required_positional_arguments": [ { - "name": "workspace_id", - "description": "Required. The workspace ID for which the workspace assignment is being updated.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -156108,7 +161146,7 @@ }, { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -159122,7 +164160,7 @@ }, { "name": "environments", - "description": "A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode.\n\nFor notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the environment_key is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment.\nFor other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using environment_key in the task settings.", + "description": "A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode.\n\nFor notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the `environment_key` is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment.\n\nFor other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using `environment_key` in the task settings.", "is_request_body_field": true, "entity": { "pascal_name": "JobEnvironmentList", @@ -176174,6 +181212,216 @@ } } }, + { + "name": "UpdateNetworkConnectivityConfig", + "description": "Updates the name or billing workspace for a network connectivity configuration.", + "summary": "Update a network connectivity configuration.", + "path": "/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}", + "can_use_json": true, + "has_required_positional_arguments": true, + "launch_stage": "PUBLIC_PREVIEW", + "cli_launch_stage_label": "*Public Preview*", + "cli_launch_stage_banner": "This command is in Public Preview and may change without notice.", + "cli_launch_stage_display": "Public Preview", + "request": { + "pascal_name": "UpdateNetworkConnectivityConfigRequest", + "is_object": true, + "has_field_mask": true, + "has_required_request_body_fields": true, + "required_fields": [ + { + "name": "network_connectivity_config_id", + "description": "Your Network Connectivity Configuration ID.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "network_connectivity_config", + "description": "The network connectivity configuration fields to update.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "NetworkConnectivityConfiguration", + "is_object": true + } + }, + { + "name": "update_mask", + "description": "Must contain at least one of `name` or `billing_workspace_id`.", + "required": true, + "is_query": true, + "entity": { + "is_field_mask": true + } + } + ], + "required_in_url_fields": [ + { + "name": "network_connectivity_config_id", + "description": "Your Network Connectivity Configuration ID.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "update_mask", + "description": "Must contain at least one of `name` or `billing_workspace_id`.", + "required": true, + "is_query": true, + "entity": { + "is_field_mask": true + } + } + ], + "required_request_body_fields": [ + { + "name": "network_connectivity_config", + "description": "The network connectivity configuration fields to update.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "NetworkConnectivityConfiguration", + "is_object": true + } + } + ] + }, + "request_body_field": { + "name": "network_connectivity_config", + "description": "The network connectivity configuration fields to update.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "NetworkConnectivityConfiguration", + "is_object": true + } + }, + "response": { + "pascal_name": "NetworkConnectivityConfiguration", + "is_object": true + }, + "all_fields": [ + { + "name": "network_connectivity_config", + "description": "The network connectivity configuration fields to update.", + "required": true, + "is_request_body_field": true, + "entity": { + "pascal_name": "NetworkConnectivityConfiguration", + "is_object": true + } + }, + { + "name": "network_connectivity_config_id", + "description": "Your Network Connectivity Configuration ID.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "update_mask", + "description": "Must contain at least one of `name` or `billing_workspace_id`.", + "required": true, + "is_query": true, + "entity": { + "is_field_mask": true + } + }, + { + "name": "account_id", + "description": "Your Databricks account ID. You can find your account ID in your Databricks accounts console.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "billing_workspace_id", + "description": "The workspace to which charges for this network connectivity configuration are attributed.\nThe workspace must be active and attached to this network connectivity configuration when set.", + "is_request_body_field": true, + "entity": { + "is_int64": true + } + }, + { + "name": "creation_time", + "description": "Time in epoch milliseconds when this object was created.", + "is_request_body_field": true, + "entity": { + "is_int64": true + } + }, + { + "name": "egress_config", + "description": "The network connectivity rules that apply to network traffic from your serverless compute resources.", + "is_request_body_field": true, + "is_optional_object": true, + "entity": { + "pascal_name": "NccEgressConfig", + "is_object": true + } + }, + { + "name": "name", + "description": "The name of the network connectivity configuration. The name can contain alphanumeric characters, hyphens,\nand underscores. The length must be between 3 and 30 characters. The name must match the regular\nexpression ^[0-9a-zA-Z-_]{3,30}$", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "network_connectivity_config_id", + "description": "Databricks network connectivity configuration ID.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "region", + "description": "The region for the network connectivity configuration.\nOnly workspaces in the same region can be attached to the network connectivity configuration.", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "updated_time", + "description": "Time in epoch milliseconds when this object was updated.", + "is_request_body_field": true, + "entity": { + "is_int64": true + } + } + ], + "required_positional_arguments": [ + { + "name": "network_connectivity_config_id", + "description": "Your Network Connectivity Configuration ID.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "update_mask", + "description": "Must contain at least one of `name` or `billing_workspace_id`.", + "required": true, + "is_query": true, + "entity": { + "is_field_mask": true + } + } + ] + }, { "name": "UpdatePrivateEndpointRule", "description": "Updates a private endpoint rule. Currently only a private endpoint rule to customer-managed resources is allowed to be updated.", @@ -180848,6 +186096,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -180965,6 +186216,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -181088,6 +186342,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -181205,6 +186462,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -181333,6 +186593,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -181450,6 +186713,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -181615,6 +186881,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -181756,6 +187025,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -181923,6 +187195,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -182249,6 +187524,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -182366,6 +187644,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -182779,6 +188060,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -182896,6 +188180,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -183019,6 +188306,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -183136,6 +188426,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -183291,6 +188584,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -183408,6 +188704,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -183581,6 +188880,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -183722,6 +189024,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -183916,6 +189221,9 @@ { "content": "EXTERNAL_METADATA" }, + { + "content": "FEATURE" + }, { "content": "FUNCTION" }, @@ -186358,7 +191666,7 @@ }, { "name": "replace_existing", - "description": "If true, update the role if it already exists instead of returning an\nerror.\n\nWhen the role already exists, the provided `role` spec fully replaces the\nexisting one: `membership_roles` is overwritten, not merged. Leaving\n`membership_roles` empty clears all of the role's existing memberships,\nincluding `DATABRICKS_SUPERUSER`. Always send the complete desired list of\nmemberships when using this field.", + "description": "If true, update the role if it already exists instead of returning an\nerror. This requires `role_id` to be set. Without `role_id`, the request\nfollows the normal create path and fails if the role name already exists.\n\nWhen the role already exists, only mutable fields are updated.\nAttributes omitted from the request retain their current values.\nSet an attribute explicitly to false to disable it.\n`identity_type`, `auth_method`, and `postgres_role` retain their\nexisting values; supplied values for these fields are ignored.\n`membership_roles` is overwritten, not merged. Leaving\n`membership_roles` empty clears all of the role's existing memberships,\nincluding `DATABRICKS_SUPERUSER`. Always send the complete desired list\nof memberships when using this field.", "is_query": true, "entity": { "is_bool": true @@ -190624,7 +195932,7 @@ }, { "name": "UpdateRole", - "description": "Update a role for a branch.", + "description": "Updates the mutable fields of a Postgres role for a branch.\n\nThe fields `spec.identity_type`, `spec.auth_method`, and\n`spec.postgres_role` are fixed when the role is created. UpdateRole\nignores values supplied for these fields in the request body and\nretains their existing values. Explicitly naming one of these fields\nin `update_mask` returns an INVALID_PARAMETER_VALUE error.", "summary": "Update a Postgres Role for a Branch.", "path": "/api/2.0/postgres/{name=projects/*/branches/*/roles/*}", "can_use_json": true, @@ -190658,7 +195966,7 @@ }, { "name": "update_mask", - "description": "The list of fields to update.", + "description": "The list of fields to update. Supported fields are\n`spec.membership_roles`, `spec.attributes.createdb`,\n`spec.attributes.createrole`, and `spec.attributes.bypassrls`.\n\n`spec.identity_type`, `spec.auth_method`, and `spec.postgres_role`\ncannot be changed. Values supplied for these fields in the request\nbody are ignored. Including one of these fields as an explicit path\nin update_mask returns an INVALID_PARAMETER_VALUE error.\nWhen `spec` is the only path in the mask, only the supplied mutable\nattributes are updated.\n`*` by itself, or `spec` combined with other supported paths, selects all\nsupported mutable fields. For these masks, all three attributes\n(`createdb`, `createrole`, and `bypassrls`) must be supplied; omitting any\nreturns an INVALID_PARAMETER_VALUE error.\nEach of these mask forms replaces `membership_roles`.\nOmitting it or supplying an empty list clears all memberships, including\n`DATABRICKS_SUPERUSER`.", "required": true, "is_query": true, "entity": { @@ -190678,7 +195986,7 @@ }, { "name": "update_mask", - "description": "The list of fields to update.", + "description": "The list of fields to update. Supported fields are\n`spec.membership_roles`, `spec.attributes.createdb`,\n`spec.attributes.createrole`, and `spec.attributes.bypassrls`.\n\n`spec.identity_type`, `spec.auth_method`, and `spec.postgres_role`\ncannot be changed. Values supplied for these fields in the request\nbody are ignored. Including one of these fields as an explicit path\nin update_mask returns an INVALID_PARAMETER_VALUE error.\nWhen `spec` is the only path in the mask, only the supplied mutable\nattributes are updated.\n`*` by itself, or `spec` combined with other supported paths, selects all\nsupported mutable fields. For these masks, all three attributes\n(`createdb`, `createrole`, and `bypassrls`) must be supplied; omitting any\nreturns an INVALID_PARAMETER_VALUE error.\nEach of these mask forms replaces `membership_roles`.\nOmitting it or supplying an empty list clears all memberships, including\n`DATABRICKS_SUPERUSER`.", "required": true, "is_query": true, "entity": { @@ -190735,7 +196043,7 @@ }, { "name": "update_mask", - "description": "The list of fields to update.", + "description": "The list of fields to update. Supported fields are\n`spec.membership_roles`, `spec.attributes.createdb`,\n`spec.attributes.createrole`, and `spec.attributes.bypassrls`.\n\n`spec.identity_type`, `spec.auth_method`, and `spec.postgres_role`\ncannot be changed. Values supplied for these fields in the request\nbody are ignored. Including one of these fields as an explicit path\nin update_mask returns an INVALID_PARAMETER_VALUE error.\nWhen `spec` is the only path in the mask, only the supplied mutable\nattributes are updated.\n`*` by itself, or `spec` combined with other supported paths, selects all\nsupported mutable fields. For these masks, all three attributes\n(`createdb`, `createrole`, and `bypassrls`) must be supplied; omitting any\nreturns an INVALID_PARAMETER_VALUE error.\nEach of these mask forms replaces `membership_roles`.\nOmitting it or supplying an empty list clears all memberships, including\n`DATABRICKS_SUPERUSER`.", "required": true, "is_query": true, "entity": { @@ -190820,7 +196128,7 @@ }, { "name": "update_mask", - "description": "The list of fields to update.", + "description": "The list of fields to update. Supported fields are\n`spec.membership_roles`, `spec.attributes.createdb`,\n`spec.attributes.createrole`, and `spec.attributes.bypassrls`.\n\n`spec.identity_type`, `spec.auth_method`, and `spec.postgres_role`\ncannot be changed. Values supplied for these fields in the request\nbody are ignored. Including one of these fields as an explicit path\nin update_mask returns an INVALID_PARAMETER_VALUE error.\nWhen `spec` is the only path in the mask, only the supplied mutable\nattributes are updated.\n`*` by itself, or `spec` combined with other supported paths, selects all\nsupported mutable fields. For these masks, all three attributes\n(`createdb`, `createrole`, and `bypassrls`) must be supplied; omitting any\nreturns an INVALID_PARAMETER_VALUE error.\nEach of these mask forms replaces `membership_roles`.\nOmitting it or supplying an empty list clears all memberships, including\n`DATABRICKS_SUPERUSER`.", "required": true, "is_query": true, "entity": { @@ -204179,6 +209487,156 @@ } ] }, + { + "name": "DownloadFile", + "description": "Downloads a regular file from a sandbox as an application/octet-stream body.\nThe sandbox starts automatically if it is stopped. Filesystem access uses\nthe sandbox user's permissions and follows symbolic links.\n\nA full download returns 200 OK. A satisfiable single byte range returns\n206 Partial Content. Multiple byte ranges are unsupported and return 400.\nInvalid ranges are ignored; an unsatisfiable range returns 416 with\nContent-Range describing the file length. Range is ignored for empty files.\n\nConditional requests can return 304 Not Modified or 412 Precondition Failed.\nIf-Range selects a partial response only when its strong entity tag matches;\notherwise, the entire file is returned. HTTP-date validators in If-Range\ncause a full download. Reads are not snapshots: concurrent in-place writes\ncan affect the returned bytes. HEAD is unsupported.\n\nRange and conditional options may be supplied as query parameters or HTTP\nheaders. A parameter and one header may both be supplied when their values\nmatch exactly. Conflicting values or repeated parameters return 400.", + "summary": "Download a sandbox file.", + "path": "/api/2.0/sandbox-files/{parent=sandboxes/*}/content", + "is_hidden_cli": true, + "is_response_byte_stream": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "DownloadFileRequest", + "is_object": true, + "required_fields": [ + { + "name": "parent", + "description": "The sandbox resource name, in the form sandboxes/{sandbox_id}.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "path", + "description": "The absolute UTF-8 path of the file inside the sandbox.", + "required": true, + "is_query": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "parent", + "description": "The sandbox resource name, in the form sandboxes/{sandbox_id}.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "path", + "description": "The absolute UTF-8 path of the file inside the sandbox.", + "required": true, + "is_query": true, + "entity": { + "is_string": true + } + } + ] + }, + "response": { + "pascal_name": "DownloadFileResponse", + "is_object": true + }, + "response_body_field": { + "pascal_name": "Contents" + }, + "all_fields": [ + { + "name": "byte_range", + "description": "A single byte range, such as bytes=0-1023 or bytes=-1024. Equivalent to the Range header.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "if_match", + "description": "Entity tags or *. A mismatch returns 412 Precondition Failed.\nEquivalent to the If-Match header.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "if_modified_since", + "description": "An HTTP-date. Returns 304 if the file has not changed since this time.\nIgnored when If-None-Match is present. Equivalent to the If-Modified-Since header.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "if_none_match", + "description": "Entity tags or *. A match returns 304 Not Modified.\nEquivalent to the If-None-Match header.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "if_range", + "description": "A strong entity tag. A mismatch, weak entity tag, or HTTP-date causes a full download.\nEquivalent to the If-Range header.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "if_unmodified_since", + "description": "An HTTP-date. Returns 412 if the file has changed since this time.\nIgnored when If-Match is present. Equivalent to the If-Unmodified-Since header.", + "is_query": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The sandbox resource name, in the form sandboxes/{sandbox_id}.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "path", + "description": "The absolute UTF-8 path of the file inside the sandbox.", + "required": true, + "is_query": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "parent", + "description": "The sandbox resource name, in the form sandboxes/{sandbox_id}.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "path", + "description": "The absolute UTF-8 path of the file inside the sandbox.", + "required": true, + "is_query": true, + "entity": { + "is_string": true + } + } + ] + }, { "name": "ExecuteCommandSync", "description": "Runs a command in the sandbox and blocks until it exits, returning the\ncaptured stdout, stderr and exit code in a single response.", @@ -205187,6 +210645,112 @@ } } ] + }, + { + "name": "UploadFile", + "description": "Uploads an application/octet-stream body to a sandbox. The sandbox starts\nautomatically if it is stopped. Filesystem access uses the sandbox user's\npermissions and follows symbolic links.\n\nCreates the file or replaces its entire contents, creating parent directories if\nmissing. The completed upload becomes visible atomically. A failure before\ncommit leaves an existing destination unchanged; a lost response after commit\ndoes not undo the upload. Completion does not guarantee crash durability.\n\nReturns 201 Created for a new file or 204 No Content for a replacement.\nPartial and conditional uploads are unsupported:\nContent-Range, If-Match, If-None-Match, and If-Unmodified-Since return 400.", + "summary": "Upload a sandbox file.", + "path": "/api/2.0/sandbox-files/{parent=sandboxes/*}/content", + "is_hidden_cli": true, + "has_required_positional_arguments": true, + "launch_stage": "PRIVATE_PREVIEW", + "cli_launch_stage_display": "Private Preview", + "request": { + "pascal_name": "UploadFileRequest", + "is_object": true, + "required_fields": [ + { + "name": "parent", + "description": "The sandbox resource name, in the form sandboxes/{sandbox_id}.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "contents", + "description": "The complete file contents. An empty body creates an empty file.", + "required": true, + "entity": {} + }, + { + "name": "path", + "description": "The absolute UTF-8 destination path inside the sandbox.", + "required": true, + "is_query": true, + "entity": { + "is_string": true + } + } + ], + "required_in_url_fields": [ + { + "name": "parent", + "description": "The sandbox resource name, in the form sandboxes/{sandbox_id}.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "path", + "description": "The absolute UTF-8 destination path inside the sandbox.", + "required": true, + "is_query": true, + "entity": { + "is_string": true + } + } + ] + }, + "request_body_field": { + "name": "contents", + "description": "The complete file contents. An empty body creates an empty file.", + "required": true, + "entity": {} + }, + "response": { + "is_empty_response": true + }, + "all_fields": [ + { + "name": "contents", + "description": "The complete file contents. An empty body creates an empty file.", + "required": true, + "entity": {} + }, + { + "name": "parent", + "description": "The sandbox resource name, in the form sandboxes/{sandbox_id}.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, + { + "name": "path", + "description": "The absolute UTF-8 destination path inside the sandbox.", + "required": true, + "is_query": true, + "entity": { + "is_string": true + } + } + ], + "required_positional_arguments": [ + { + "name": "parent", + "description": "The sandbox resource name, in the form sandboxes/{sandbox_id}.", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + } + ] } ] }, @@ -215804,7 +221368,7 @@ }, { "name": "Validate", - "description": "Validates a storage credential.\nAt least one of __external_location_name__ and __url__ need to be provided. If only one of them is\nprovided, it will be used for validation. And if both are provided, the __url__ will be used for\nvalidation, and __external_location_name__ will be ignored when checking overlapping urls.\n\nEither the __storage_credential_name__ or the cloud-specific credential must be provided.\n\nThe caller must be a metastore admin or the storage credential owner or\nhave the **CREATE_EXTERNAL_LOCATION** privilege on the metastore and the storage credential.", + "description": "Validates a storage credential.\nAt least one of __external_location_name__ and __url__ need to be provided. If only one of them is\nprovided, it will be used for validation. And if both are provided, the __url__ will be used for\nvalidation, and __external_location_name__ will be ignored when checking overlapping urls.\n\nThe caller must be a metastore admin or the storage credential owner or\nhave the **CREATE_EXTERNAL_LOCATION** privilege on the metastore and the storage credential.", "summary": "Validate a storage credential.", "path": "/api/2.1/unity-catalog/validate-storage-credentials", "can_use_json": true, @@ -215823,7 +221387,7 @@ "all_fields": [ { "name": "aws_iam_role", - "description": "The AWS IAM role configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe AWS IAM role configuration.", "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -215833,7 +221397,7 @@ }, { "name": "azure_managed_identity", - "description": "The Azure managed identity configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe Azure managed identity configuration.", "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -215843,7 +221407,7 @@ }, { "name": "azure_service_principal", - "description": "The Azure service principal configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe Azure service principal configuration.", "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -215853,7 +221417,7 @@ }, { "name": "cloudflare_api_token", - "description": "The Cloudflare API token configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe Cloudflare API token configuration.", "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -215863,7 +221427,7 @@ }, { "name": "databricks_gcp_service_account", - "description": "The Databricks created GCP service account configuration.", + "description": "Deprecated: create a storage credential and pass its storage_credential_name instead.\nThe Databricks created GCP service account configuration.", "is_request_body_field": true, "is_optional_object": true, "entity": { @@ -227026,7 +232590,7 @@ "required_fields": [ { "name": "name", - "description": "The three-level (fully qualified) name of the volume", + "description": "The fully qualified name of the volume.", "required": true, "is_path": true, "entity": { @@ -227037,7 +232601,7 @@ "required_in_url_fields": [ { "name": "name", - "description": "The three-level (fully qualified) name of the volume", + "description": "The fully qualified name of the volume.", "required": true, "is_path": true, "entity": { @@ -227061,7 +232625,7 @@ }, { "name": "name", - "description": "The three-level (fully qualified) name of the volume", + "description": "The fully qualified name of the volume.", "required": true, "is_path": true, "entity": { @@ -227072,7 +232636,7 @@ "required_positional_arguments": [ { "name": "name", - "description": "The three-level (fully qualified) name of the volume", + "description": "The fully qualified name of the volume.", "required": true, "is_path": true, "entity": { @@ -227485,7 +233049,7 @@ }, { "name": "max_dbu", - "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be a multiple of 3 between 3 and 960. The effective maximum cannot be\nlower than the warehouse's minimum capacity.", + "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be at least the minimum DBU for the selected warehouse size and no greater\nthan the configured DBU limit. Actual capacity may be below this ceiling.", "is_request_body_field": true, "entity": { "is_int": true @@ -228141,7 +233705,7 @@ }, { "name": "max_dbu", - "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be a multiple of 3 between 3 and 960. The effective maximum cannot be\nlower than the warehouse's minimum capacity.", + "description": "Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be at least the minimum DBU for the selected warehouse size and no greater\nthan the configured DBU limit. Actual capacity may be below this ceiling.", "is_request_body_field": true, "entity": { "is_int": true @@ -232479,7 +238043,7 @@ "name": "CreateDirectGroupMemberProxy", "description": "Creates a group membership (assigns a principal to a group).", "summary": "Create a direct group membership.", - "path": "/api/2.0/identity/groups/{group_id}/direct-members", + "path": "/api/2.0/identity/{parent=groups/*}/direct-members", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -232492,12 +238056,12 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "parent", + "description": "The parent resource name of the group to add the member to.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -232513,12 +238077,12 @@ ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "parent", + "description": "The parent resource name of the group to add the member to.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], @@ -232630,12 +238194,12 @@ } }, { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "parent", + "description": "The parent resource name of the group to add the member to.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -232682,6 +238246,23 @@ ] } }, + { + "name": "name", + "description": "The resource name of the group membership. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}\n- Workspace-scoped: groups/{group_id}/direct-members/{principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the group that contains the membership. The format depends on the API\nthat returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "principal_id", "description": "Internal ID of the principal in Databricks.", @@ -232714,12 +238295,12 @@ ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "parent", + "description": "The parent resource name of the group to add the member to.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -232798,6 +238379,14 @@ "is_object": true } }, + { + "name": "parent", + "description": "The resource name of the account to create the group in, `accounts/{account_id}`.\nOptional: defaults to the account of the calling workspace, and any other account is\nrejected.", + "is_query": true, + "entity": { + "is_string": true + } + }, { "name": "account_id", "description": "The parent account ID for group in Databricks.", @@ -232831,6 +238420,23 @@ "entity": { "is_string": true } + }, + { + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the group, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } } ] }, @@ -233003,6 +238609,14 @@ ] }, "all_fields": [ + { + "name": "parent", + "description": "The resource name of the account to create the service principal in, `accounts/{account_id}`.\nOptional: defaults to the account of the calling workspace, and any other account is\nrejected.", + "is_query": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal", "description": "Required. Service principal to be created in Databricks", @@ -233122,6 +238736,23 @@ "is_string": true } }, + { + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the service principal,\n`accounts/{account_id}`. Both the account-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal_id", "description": "Internal service principal ID of the service principal in Databricks.", @@ -233366,6 +238997,14 @@ ] }, "all_fields": [ + { + "name": "parent", + "description": "The resource name of the account to create the user in, `accounts/{account_id}`.\nOptional: defaults to the account of the calling workspace, and any other account is\nrejected.", + "is_query": true, + "entity": { + "is_string": true + } + }, { "name": "user", "description": "Required. User to be created in Databricks", @@ -233494,6 +239133,23 @@ "is_object": true } }, + { + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the user, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "user_id", "description": "Internal userId of the user in Databricks.", @@ -233858,7 +239514,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -233869,7 +239525,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -233886,7 +239542,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -233897,7 +239553,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -233907,6 +239563,14 @@ ] }, "all_fields": [ + { + "name": "parent", + "description": "The resource name of the workspace to assign the principal to,\n`accounts/{account_id}/workspaces/{workspace_id}`. Optional: defaults to the calling workspace,\nand any other workspace is rejected.", + "is_query": true, + "entity": { + "is_string": true + } + }, { "name": "workspace_assignment", "description": "Required. Workspace assignment to be created in Databricks.", @@ -233919,7 +239583,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -233930,7 +239594,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -234012,9 +239676,26 @@ } } }, + { + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the workspace that contains the assignment,\n`accounts/{account_id}/workspaces/{workspace_id}`. Both the account-scoped and workspace-scoped\nAPIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -234054,7 +239735,7 @@ "required_positional_arguments": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -234067,7 +239748,7 @@ "name": "DeleteDirectGroupMemberProxy", "description": "Deletes a group membership (unassigns a principal from a group).", "summary": "Delete a direct group membership.", - "path": "/api/2.0/identity/groups/{group_id}/direct-members/{principal_id}", + "path": "/api/2.0/identity/{name=groups/*/direct-members/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234078,41 +239759,23 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal to be unassigned from the group.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal to be unassigned from the group.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -234122,41 +239785,23 @@ }, "all_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal to be unassigned from the group.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal to be unassigned from the group.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -234165,7 +239810,7 @@ "name": "DeleteGroupProxy", "description": "Deletes a group by its internal ID from the Databricks\naccount that parents the calling workspace.", "summary": "Delete a group in the account.", - "path": "/api/2.0/identity/groups/{group_id}", + "path": "/api/2.0/identity/{name=groups/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234176,8 +239821,8 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -234187,8 +239832,8 @@ ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -234202,8 +239847,8 @@ }, "all_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -234213,8 +239858,8 @@ ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -234227,7 +239872,7 @@ "name": "DeleteServicePrincipalProxy", "description": "Deletes a service principal by its internal ID\nfrom the Databricks account that parents the calling workspace.", "summary": "Delete a service principal in the account.", - "path": "/api/2.0/identity/service-principals/{service_principal_id}", + "path": "/api/2.0/identity/{name=service-principals/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234238,8 +239883,8 @@ "is_object": true, "required_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -234249,8 +239894,8 @@ ], "required_in_url_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -234264,8 +239909,8 @@ }, "all_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -234275,8 +239920,8 @@ ], "required_positional_arguments": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -234289,7 +239934,7 @@ "name": "DeleteUserProxy", "description": "Deletes a user by its internal ID from the Databricks\naccount that parents the calling workspace.", "summary": "Delete a user in the account.", - "path": "/api/2.0/identity/users/{user_id}", + "path": "/api/2.0/identity/{name=users/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234300,8 +239945,8 @@ "is_object": true, "required_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -234311,8 +239956,8 @@ ], "required_in_url_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -234326,8 +239971,8 @@ }, "all_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -234337,8 +239982,8 @@ ], "required_positional_arguments": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -234412,7 +240057,7 @@ "name": "DeleteWorkspaceAssignmentProxy", "description": "Deletes a workspace assignment for a principal in the calling workspace, revoking all of\nits entitlements. Entitlements are revoked one at a time rather than atomically. If the request\nfails partway through, the principal stays assigned with some of its original entitlements.\nRetrying is safe.", "summary": "Delete a workspace assignment for a workspace.", - "path": "/api/2.0/identity/workspace-assignments/{principal_id}", + "path": "/api/2.0/identity/{name=workspace-assignments/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234423,23 +240068,23 @@ "is_object": true, "required_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks to delete workspace assignment for.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks to delete workspace assignment for.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -234449,23 +240094,23 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks to delete workspace assignment for.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks to delete workspace assignment for.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -234474,7 +240119,7 @@ "name": "GetDirectGroupMemberProxy", "description": "Gets a provisioned direct member of a group.", "summary": "Get a direct group member.", - "path": "/api/2.0/identity/groups/{group_id}/direct-members/{principal_id}", + "path": "/api/2.0/identity/{name=groups/*/direct-members/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234485,41 +240130,23 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal belonging to the group in Databricks.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal belonging to the group in Databricks.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -234553,41 +240180,23 @@ }, "all_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal belonging to the group in Databricks.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, - { - "name": "principal_id", - "description": "Required. Internal ID of the principal belonging to the group in Databricks.", + "name": "name", + "description": "The resource name of the group membership.\nFormat: groups/{group_id}/direct-members/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -234785,7 +240394,7 @@ "name": "GetGroupProxy", "description": "Fetches a group by its internal ID from the Databricks\naccount that parents the calling workspace.", "summary": "Get a group in the account.", - "path": "/api/2.0/identity/groups/{group_id}", + "path": "/api/2.0/identity/{name=groups/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234796,8 +240405,8 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -234807,8 +240416,8 @@ ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -234823,8 +240432,8 @@ }, "all_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -234834,8 +240443,8 @@ ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -234848,7 +240457,7 @@ "name": "GetServicePrincipalProxy", "description": "Fetches a service principal by its internal ID\nfrom the Databricks account that parents the calling workspace.", "summary": "Get a service principal in the account.", - "path": "/api/2.0/identity/service-principals/{service_principal_id}", + "path": "/api/2.0/identity/{name=service-principals/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234859,8 +240468,8 @@ "is_object": true, "required_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -234870,8 +240479,8 @@ ], "required_in_url_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -234943,8 +240552,8 @@ }, "all_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -234954,8 +240563,8 @@ ], "required_positional_arguments": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal.\nFormat: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -234968,7 +240577,7 @@ "name": "GetUserProxy", "description": "Fetches a user by its internal ID from the Databricks account\nthat parents the calling workspace.", "summary": "Get a user in the account.", - "path": "/api/2.0/identity/users/{user_id}", + "path": "/api/2.0/identity/{name=users/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -234979,8 +240588,8 @@ "is_object": true, "required_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -234990,8 +240599,8 @@ ], "required_in_url_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -235081,8 +240690,8 @@ }, "all_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -235092,8 +240701,8 @@ ], "required_positional_arguments": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user.\nFormat: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -235106,7 +240715,7 @@ "name": "GetWorkspaceAccessDetailLocal", "description": "Returns the access details for a principal in the current workspace. Allows for checking access details for any\nprovisioned principal (user, service principal, or group) in the current workspace.\n* Provisioned principal here refers to one that has been synced into Databricks from the customer's IdP or\nadded explicitly to Databricks via SCIM/UI.\nAllows for passing in a \"view\" parameter to control what fields are returned (BASIC by default or FULL).", "summary": "Get workspace access details for a principal.", - "path": "/api/2.0/identity/workspace-access-details/{principal_id}", + "path": "/api/2.0/identity/{name=workspace-access-details/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -235117,23 +240726,23 @@ "is_object": true, "required_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the access details are being requested.", + "name": "name", + "description": "The resource name of the workspace access detail.\nFormat: workspace-access-details/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the access details are being requested.", + "name": "name", + "description": "The resource name of the workspace access detail.\nFormat: workspace-access-details/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235144,12 +240753,12 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the access details are being requested.", + "name": "name", + "description": "The resource name of the workspace access detail.\nFormat: workspace-access-details/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -235171,12 +240780,12 @@ ], "required_positional_arguments": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the access details are being requested.", + "name": "name", + "description": "The resource name of the workspace access detail.\nFormat: workspace-access-details/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235270,7 +240879,7 @@ "name": "GetWorkspaceAssignmentProxy", "description": "Returns the assignment for a principal in the calling workspace.", "summary": "Get a workspace assignment for a principal.", - "path": "/api/2.0/identity/workspace-assignments/{principal_id}", + "path": "/api/2.0/identity/{name=workspace-assignments/*}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -235281,23 +240890,23 @@ "is_object": true, "required_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the assignment is being requested.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the assignment is being requested.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235309,7 +240918,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -235320,7 +240929,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -235331,23 +240940,23 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the assignment is being requested.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the assignment is being requested.", + "name": "name", + "description": "The resource name of the workspace assignment.\nFormat: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235356,7 +240965,7 @@ "name": "GetWorkspaceIdentityDetail", "description": "Returns the identity details for a principal in a workspace.", "summary": "Get workspace identity details for a principal.", - "path": "/api/2.0/identity/workspace-identity-details/{principal_id}", + "path": "/api/2.0/identity/{name=principals/*/workspace-identity-detail}", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -235367,23 +240976,23 @@ "is_object": true, "required_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the identity details are being requested.", + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the identity details are being requested.", + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235394,23 +241003,23 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the identity details are being requested.", + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "principal_id", - "description": "Required. The internal ID of the principal (user/sp/group) for which the identity details are being requested.", + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235419,7 +241028,7 @@ "name": "ListDirectGroupMembersProxy", "description": "Lists provisioned direct members of a group with their membership source (internal or from identity provider).", "summary": "List direct group members.", - "path": "/api/2.0/identity/groups/{group_id}/direct-members", + "path": "/api/2.0/identity/{parent=groups/*}/direct-members", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -235430,23 +241039,23 @@ "is_object": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks whose direct members are being listed.", + "name": "parent", + "description": "The parent resource name of the group whose direct members to list.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks whose direct members are being listed.", + "name": "parent", + "description": "The parent resource name of the group whose direct members to list.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235456,15 +241065,6 @@ "is_object": true }, "all_fields": [ - { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks whose direct members are being listed.", - "required": true, - "is_path": true, - "entity": { - "is_int64": true - } - }, { "name": "page_size", "description": "The maximum number of members to return. The service may return fewer than this value.\nIf not provided, defaults to 1000, which is also the maximum allowed. Requests for more than the maximum are clamped to 1000.", @@ -235480,16 +241080,25 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The parent resource name of the group whose direct members to list.\nFormat: groups/{group_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } } ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks whose direct members are being listed.", + "name": "parent", + "description": "The parent resource name of the group whose direct members to list.\nFormat: groups/{group_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], @@ -235548,6 +241157,14 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The resource name of the account to list groups in, `accounts/{account_id}`. Optional:\ndefaults to the account of the calling workspace, and any other account is rejected.", + "is_query": true, + "entity": { + "is_string": true + } } ], "pagination": { @@ -235605,6 +241222,14 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The resource name of the account to list service principals in, `accounts/{account_id}`. Optional:\ndefaults to the account of the calling workspace, and any other account is rejected.", + "is_query": true, + "entity": { + "is_string": true + } } ], "pagination": { @@ -235624,7 +241249,7 @@ "name": "ListTransitiveParentGroupsProxy", "description": "Lists all transitive parent groups of a principal.", "summary": "List all transitive parent groups of a principal.", - "path": "/api/2.0/identity/principals/{principal_id}/transitive-parent-groups", + "path": "/api/2.0/identity/{parent=principals/*}/transitive-parent-groups", "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", "cli_launch_stage_label": "*Beta*", @@ -235635,23 +241260,23 @@ "is_object": true, "required_fields": [ { - "name": "principal_id", - "description": "Required. Internal ID of the principal in Databricks whose transitive parent groups are being listed.", + "name": "parent", + "description": "The parent resource name of the principal whose transitive parent groups to list.\nFormat: principals/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_in_url_fields": [ { - "name": "principal_id", - "description": "Required. Internal ID of the principal in Databricks whose transitive parent groups are being listed.", + "name": "parent", + "description": "The parent resource name of the principal whose transitive parent groups to list.\nFormat: principals/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235678,23 +241303,23 @@ } }, { - "name": "principal_id", - "description": "Required. Internal ID of the principal in Databricks whose transitive parent groups are being listed.", + "name": "parent", + "description": "The parent resource name of the principal whose transitive parent groups to list.\nFormat: principals/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ], "required_positional_arguments": [ { - "name": "principal_id", - "description": "Required. Internal ID of the principal in Databricks whose transitive parent groups are being listed.", + "name": "parent", + "description": "The parent resource name of the principal whose transitive parent groups to list.\nFormat: principals/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } } ] @@ -235741,6 +241366,14 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The resource name of the account to list users in, `accounts/{account_id}`. Optional:\ndefaults to the account of the calling workspace, and any other account is rejected.", + "is_query": true, + "entity": { + "is_string": true + } } ], "pagination": { @@ -235838,6 +241471,14 @@ "entity": { "is_string": true } + }, + { + "name": "parent", + "description": "The resource name of the workspace to list assignments of,\n`accounts/{account_id}/workspaces/{workspace_id}`. Optional: defaults to the calling workspace,\nand any other workspace is rejected.", + "is_query": true, + "entity": { + "is_string": true + } } ], "pagination": { @@ -236052,7 +241693,7 @@ "name": "UpdateGroupProxy", "description": "Updates an existing group in the Databricks account that\nparents the calling workspace. Only the fields named in the update mask are modified. Returns\nthe updated Group resource.\n\nWhen AIM is enabled and the group is an external identity (its external_id is set), only\nexternal_id can be updated; its other fields are sourced from your identity provider.\nWith AIM and group visibility filters, a new nonempty external_id must identify a visible group.\nClearing external_id is allowed.", "summary": "Update a group in the account.", - "path": "/api/2.0/identity/groups/{group_id}", + "path": "/api/2.0/identity/{name=groups/*}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -236065,8 +241706,8 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -236095,8 +241736,8 @@ ], "required_in_url_fields": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -236152,8 +241793,8 @@ } }, { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -236202,12 +241843,29 @@ "entity": { "is_string": true } + }, + { + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the group, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } } ], "required_positional_arguments": [ { - "name": "group_id", - "description": "Required. Internal ID of the group in Databricks.", + "name": "name", + "description": "The resource name of the group. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/groups/{group_id}\n- Workspace-scoped: groups/{group_id}", "required": true, "is_path": true, "entity": { @@ -236227,9 +241885,9 @@ }, { "name": "UpdateServicePrincipalProxy", - "description": "Updates an existing service principal in the\nDatabricks account that parents the calling workspace. Only the fields named in the update mask\nare modified. Returns the updated ServicePrincipal resource.\n\nFor locally managed service principals, is_agent must be set to true or false when updated.\n\nWhen AIM is enabled and the service principal is an external identity (its external_id is set),\nonly external_id can be updated; its other fields are sourced from your identity provider.", + "description": "Updates an existing service principal in the\nDatabricks account that parents the calling workspace. Only the fields named in the update mask\nare modified. Returns the updated ServicePrincipal resource.\n\nTo change is_agent on a locally managed service principal, set it to true or false. Naming\nis_agent in the update mask without a value leaves it unchanged.\n\nWhen AIM is enabled and the service principal is an external identity (its external_id is set),\nonly external_id can be updated; its other fields are sourced from your identity provider.", "summary": "Update a service principal in the account.", - "path": "/api/2.0/identity/service-principals/{service_principal_id}", + "path": "/api/2.0/identity/{name=service-principals/*}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -236242,8 +241900,8 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -236272,8 +241930,8 @@ ], "required_in_url_fields": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -236432,6 +242090,15 @@ ] }, "all_fields": [ + { + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal", "description": "Required. Service principal to be updated in Databricks", @@ -236499,15 +242166,6 @@ ] } }, - { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_string": true - } - }, { "name": "update_mask", "description": "Required. The list of fields to update.", @@ -236569,6 +242227,23 @@ "is_string": true } }, + { + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the service principal,\n`accounts/{account_id}`. Both the account-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "service_principal_id", "description": "Internal service principal ID of the service principal in Databricks.", @@ -236581,8 +242256,8 @@ ], "required_positional_arguments": [ { - "name": "service_principal_id", - "description": "Required. Internal ID of the service principal in Databricks.", + "name": "name", + "description": "The resource name of the service principal. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/service-principals/{service_principal_id}\n- Workspace-scoped: service-principals/{service_principal_id}", "required": true, "is_path": true, "entity": { @@ -236630,7 +242305,7 @@ "name": "UpdateUserProxy", "description": "Updates an existing user in the Databricks account that parents the calling workspace and\nreturns the updated user. Only the fields named in the update mask are modified. The updatable\nfields are fullName.givenName, fullName.familyName, status, and externalId.\n\nWhen AIM is enabled and the user is an external identity (its external_id is set), only\nexternal_id can be updated; its other fields are sourced from your identity provider.", "summary": "Update a user in the account.", - "path": "/api/2.0/identity/users/{user_id}", + "path": "/api/2.0/identity/{name=users/*}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -236643,8 +242318,8 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -236673,8 +242348,8 @@ ], "required_in_url_fields": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -236869,6 +242544,15 @@ ] }, "all_fields": [ + { + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", + "required": true, + "is_path": true, + "entity": { + "is_string": true + } + }, { "name": "update_mask", "description": "Required. The list of fields to update.", @@ -236963,15 +242647,6 @@ ] } }, - { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", - "required": true, - "is_path": true, - "entity": { - "is_string": true - } - }, { "name": "account_id", "description": "The accountId parent of the user in Databricks.", @@ -237015,6 +242690,23 @@ "is_object": true } }, + { + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the account that contains the user, `accounts/{account_id}`. Both the\naccount-scoped and workspace-scoped APIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "user_id", "description": "Internal userId of the user in Databricks.", @@ -237036,8 +242728,8 @@ ], "required_positional_arguments": [ { - "name": "user_id", - "description": "Required. Internal ID of the user in Databricks.", + "name": "name", + "description": "The resource name of the user. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/users/{user_id}\n- Workspace-scoped: users/{user_id}", "required": true, "is_path": true, "entity": { @@ -237424,7 +243116,7 @@ "name": "UpdateWorkspaceAssignmentProxy", "description": "Updates the entitlements of a directly assigned principal in the calling workspace. Changes are\napplied one at a time rather than atomically. If the request fails partway through, only some of\nthe requested changes take effect. Get the assignment afterwards to confirm the final\nstate.", "summary": "Update a workspace assignment for a workspace.", - "path": "/api/2.0/identity/workspace-assignments/{principal_id}", + "path": "/api/2.0/identity/{name=workspace-assignments/*}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -237438,12 +243130,12 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -237468,12 +243160,12 @@ ], "required_in_url_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -237511,7 +243203,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -237522,7 +243214,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -237539,7 +243231,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -237550,7 +243242,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -237561,12 +243253,12 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -237590,7 +243282,7 @@ "required_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -237601,7 +243293,7 @@ "required_request_body_fields": [ { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -237683,9 +243375,26 @@ } } }, + { + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, + { + "name": "parent", + "description": "The resource name of the workspace that contains the assignment,\n`accounts/{account_id}/workspaces/{workspace_id}`. Both the account-scoped and workspace-scoped\nAPIs return it.", + "is_output_only": true, + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -237724,12 +243433,12 @@ ], "required_positional_arguments": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace assignment. The format depends on the API that returned it:\n- Account-scoped: accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}\n- Workspace-scoped: workspace-assignments/{principal_id}", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -237743,7 +243452,7 @@ }, { "name": "principal_id", - "description": "The internal ID of the principal (user/sp/group) in Databricks.", + "description": "The internal ID of the principal (user/sp/group) in Databricks. Set when the assignment is\ncreated and cannot be changed afterwards; to assign a different principal, create a new\nassignment.", "required": true, "is_request_body_field": true, "entity": { @@ -237756,7 +243465,7 @@ "name": "UpdateWorkspaceIdentityDetail", "description": "Updates a workspace identity detail for a principal.", "summary": "Update workspace identity details for a principal.", - "path": "/api/2.0/identity/workspace-identity-details/{principal_id}", + "path": "/api/2.0/identity/{name=principals/*/workspace-identity-detail}", "can_use_json": true, "has_required_positional_arguments": true, "launch_stage": "PUBLIC_BETA", @@ -237770,12 +243479,12 @@ "has_required_request_body_fields": true, "required_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -237800,12 +243509,12 @@ ], "required_in_url_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -237847,12 +243556,12 @@ }, "all_fields": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { @@ -237891,6 +243600,14 @@ ] } }, + { + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", + "is_request_body_field": true, + "entity": { + "is_string": true + } + }, { "name": "principal_id", "description": "The internal ID of the principal (user/sp/group) in Databricks.", @@ -237939,12 +243656,12 @@ ], "required_positional_arguments": [ { - "name": "principal_id", - "description": "Required. ID of the principal in Databricks.", + "name": "name", + "description": "The resource name of the workspace identity detail.\nFormat: principals/{principal_id}/workspace-identity-detail", "required": true, "is_path": true, "entity": { - "is_int64": true + "is_string": true } }, { diff --git a/.nextchanges/dependency-updates/go-sdk-v0.193.0.md b/.nextchanges/dependency-updates/go-sdk-v0.193.0.md new file mode 100644 index 00000000000..3123b7969d1 --- /dev/null +++ b/.nextchanges/dependency-updates/go-sdk-v0.193.0.md @@ -0,0 +1 @@ +* Update the Go SDK to [v0.193.0](https://github.com/databricks/databricks-sdk-go/releases/tag/v0.193.0). diff --git a/cmd/account/iam-v2/iam-v2.go b/cmd/account/iam-v2/iam-v2.go index 3da7fdaab3e..576fcfa4345 100644 --- a/cmd/account/iam-v2/iam-v2.go +++ b/cmd/account/iam-v2/iam-v2.go @@ -103,7 +103,9 @@ func newCreateDirectGroupMember() *cobra.Command { cmd.Flags().Var(&createDirectGroupMemberJson, "json", `either inline JSON string or @path/to/file.json with request body`) - cmd.Use = "create-direct-group-member GROUP_ID PRINCIPAL_ID" + cmd.Flags().StringVar(&createDirectGroupMemberReq.DirectGroupMember.Name, "name", createDirectGroupMemberReq.DirectGroupMember.Name, `The resource name of the group membership.`) + + cmd.Use = "create-direct-group-member PARENT PRINCIPAL_ID" cmd.Short = `*Beta* Create a direct group membership.` cmd.Long = `This command is in Beta and may change without notice. @@ -115,7 +117,8 @@ Create a direct group membership. (holds the roles/group.manager role on it). Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks. + PARENT: The parent resource name of the group to add the member to. Format: + accounts/{account_id}/groups/{group_id} PRINCIPAL_ID: Internal ID of the principal in Databricks.` cmd.Annotations = make(map[string]string) @@ -126,7 +129,7 @@ Create a direct group membership. if cmd.Flags().Changed("json") { err := root.ExactArgs(1)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only GROUP_ID as positional arguments. Provide 'principal_id' in your JSON input") + return errors.New("when --json flag is specified, provide only PARENT as positional arguments. Provide 'principal_id' in your JSON input") } return nil } @@ -151,11 +154,7 @@ Create a direct group membership. } } } - _, err = fmt.Sscan(args[0], &createDirectGroupMemberReq.GroupId) - if err != nil { - return fmt.Errorf("invalid GROUP_ID: %s", args[0]) - } - + createDirectGroupMemberReq.Parent = args[0] if !cmd.Flags().Changed("json") { _, err = fmt.Sscan(args[1], &createDirectGroupMemberReq.DirectGroupMember.PrincipalId) if err != nil { @@ -204,8 +203,9 @@ func newCreateGroup() *cobra.Command { cmd.Flags().StringVar(&createGroupReq.Group.ExternalId, "external-id", createGroupReq.Group.ExternalId, `ExternalId of the group in the customer's IdP.`) cmd.Flags().StringVar(&createGroupReq.Group.GroupName, "group-name", createGroupReq.Group.GroupName, `Display name of the group.`) + cmd.Flags().StringVar(&createGroupReq.Group.Name, "name", createGroupReq.Group.Name, `The resource name of the group.`) - cmd.Use = "create-group" + cmd.Use = "create-group PARENT" cmd.Short = `*Beta* Create a group in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -219,14 +219,18 @@ Create a group in the account. When AIM is enabled, supplying an external ID returns an error. To provision the identity from your identity provider, resolve it by its external ID with ResolveGroup; to read an existing external identity, use the ExternalGroup - resource.` + resource. + + Arguments: + PARENT: The parent resource name of the account in which to create the group. + Format: accounts/{account_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(0) + check := root.ExactArgs(1) return check(cmd, args) } @@ -247,6 +251,7 @@ Create a group in the account. } } } + createGroupReq.Parent = args[0] response, err := a.IamV2.CreateGroup(ctx, createGroupReq) if err != nil { @@ -390,8 +395,9 @@ func newCreateServicePrincipal() *cobra.Command { cmd.Flags().Var(&createServicePrincipalJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Flags().StringVar(&createServicePrincipalReq.ServicePrincipal.ExternalId, "external-id", createServicePrincipalReq.ServicePrincipal.ExternalId, `ExternalId of the service principal in the customer's IdP.`) + cmd.Flags().StringVar(&createServicePrincipalReq.ServicePrincipal.Name, "name", createServicePrincipalReq.ServicePrincipal.Name, `The resource name of the service principal.`) - cmd.Use = "create-service-principal DISPLAY_NAME ACCOUNT_SP_STATUS" + cmd.Use = "create-service-principal PARENT DISPLAY_NAME ACCOUNT_SP_STATUS" cmd.Short = `*Beta* Create a service principal in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -408,6 +414,8 @@ Create a service principal in the account. ExternalServicePrincipal resource. Arguments: + PARENT: The parent resource name of the account in which to create the service + principal. Format: accounts/{account_id} DISPLAY_NAME: Display name of the service principal. ACCOUNT_SP_STATUS: The activity status of a service principal in a Databricks account. Supported values: [ACTIVE, INACTIVE]` @@ -418,13 +426,13 @@ Create a service principal in the account. cmd.Args = func(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("json") { - err := root.ExactArgs(0)(cmd, args) + err := root.ExactArgs(1)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, no positional arguments are allowed. Provide 'display_name', 'account_sp_status' in your JSON input") + return errors.New("when --json flag is specified, provide only PARENT as positional arguments. Provide 'display_name', 'account_sp_status' in your JSON input") } return nil } - check := root.ExactArgs(2) + check := root.ExactArgs(3) return check(cmd, args) } @@ -445,13 +453,14 @@ Create a service principal in the account. } } } + createServicePrincipalReq.Parent = args[0] if !cmd.Flags().Changed("json") { - createServicePrincipalReq.ServicePrincipal.DisplayName = args[0] + createServicePrincipalReq.ServicePrincipal.DisplayName = args[1] } if !cmd.Flags().Changed("json") { - _, err = fmt.Sscan(args[1], &createServicePrincipalReq.ServicePrincipal.AccountSpStatus) + _, err = fmt.Sscan(args[2], &createServicePrincipalReq.ServicePrincipal.AccountSpStatus) if err != nil { - return fmt.Errorf("invalid ACCOUNT_SP_STATUS: %s", args[1]) + return fmt.Errorf("invalid ACCOUNT_SP_STATUS: %s", args[2]) } } @@ -495,8 +504,9 @@ func newCreateUser() *cobra.Command { cmd.Flags().Var(&createUserJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Flags().StringVar(&createUserReq.User.ExternalId, "external-id", createUserReq.User.ExternalId, `ExternalId of the user in the customer's IdP.`) + cmd.Flags().StringVar(&createUserReq.User.Name, "name", createUserReq.User.Name, `The resource name of the user.`) - cmd.Use = "create-user USERNAME FULL_NAME ACCOUNT_USER_STATUS" + cmd.Use = "create-user PARENT USERNAME FULL_NAME ACCOUNT_USER_STATUS" cmd.Short = `*Beta* Create a user in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -513,6 +523,8 @@ Create a user in the account. resource. Arguments: + PARENT: The parent resource name of the account in which to create the user. + Format: accounts/{account_id} USERNAME: Username/email of the user. FULL_NAME: ACCOUNT_USER_STATUS: The activity status of a user in a Databricks account. @@ -524,13 +536,13 @@ Create a user in the account. cmd.Args = func(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("json") { - err := root.ExactArgs(0)(cmd, args) + err := root.ExactArgs(1)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, no positional arguments are allowed. Provide 'username', 'full_name', 'account_user_status' in your JSON input") + return errors.New("when --json flag is specified, provide only PARENT as positional arguments. Provide 'username', 'full_name', 'account_user_status' in your JSON input") } return nil } - check := root.ExactArgs(3) + check := root.ExactArgs(4) return check(cmd, args) } @@ -551,20 +563,21 @@ Create a user in the account. } } } + createUserReq.Parent = args[0] if !cmd.Flags().Changed("json") { - createUserReq.User.Username = args[0] + createUserReq.User.Username = args[1] } if !cmd.Flags().Changed("json") { - _, err = fmt.Sscan(args[1], &createUserReq.User.FullName) + _, err = fmt.Sscan(args[2], &createUserReq.User.FullName) if err != nil { - return fmt.Errorf("invalid FULL_NAME: %s", args[1]) + return fmt.Errorf("invalid FULL_NAME: %s", args[2]) } } if !cmd.Flags().Changed("json") { - _, err = fmt.Sscan(args[2], &createUserReq.User.AccountUserStatus) + _, err = fmt.Sscan(args[3], &createUserReq.User.AccountUserStatus) if err != nil { - return fmt.Errorf("invalid ACCOUNT_USER_STATUS: %s", args[2]) + return fmt.Errorf("invalid ACCOUNT_USER_STATUS: %s", args[3]) } } @@ -609,8 +622,9 @@ func newCreateWorkspaceAssignment() *cobra.Command { // TODO: array: effective_entitlements // TODO: array: entitlements + cmd.Flags().StringVar(&createWorkspaceAssignmentReq.WorkspaceAssignment.Name, "name", createWorkspaceAssignmentReq.WorkspaceAssignment.Name, `The resource name of the workspace assignment.`) - cmd.Use = "create-workspace-assignment WORKSPACE_ID PRINCIPAL_ID" + cmd.Use = "create-workspace-assignment PARENT PRINCIPAL_ID" cmd.Short = `*Beta* Create a workspace assignment.` cmd.Long = `This command is in Beta and may change without notice. @@ -623,9 +637,11 @@ Create a workspace assignment. granted. Arguments: - WORKSPACE_ID: Required. The workspace ID for which the workspace assignment is being - created. - PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks.` + PARENT: The parent resource name of the workspace to assign the principal to. + Format: accounts/{account_id}/workspaces/{workspace_id} + PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks. Set when + the assignment is created and cannot be changed afterwards; to assign a + different principal, create a new assignment.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -635,7 +651,7 @@ Create a workspace assignment. if cmd.Flags().Changed("json") { err := root.ExactArgs(1)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only WORKSPACE_ID as positional arguments. Provide 'principal_id' in your JSON input") + return errors.New("when --json flag is specified, provide only PARENT as positional arguments. Provide 'principal_id' in your JSON input") } return nil } @@ -660,11 +676,7 @@ Create a workspace assignment. } } } - _, err = fmt.Sscan(args[0], &createWorkspaceAssignmentReq.WorkspaceId) - if err != nil { - return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) - } - + createWorkspaceAssignmentReq.Parent = args[0] if !cmd.Flags().Changed("json") { _, err = fmt.Sscan(args[1], &createWorkspaceAssignmentReq.WorkspaceAssignment.PrincipalId) if err != nil { @@ -808,7 +820,7 @@ func newDeleteDirectGroupMember() *cobra.Command { var deleteDirectGroupMemberReq iamv2.DeleteDirectGroupMemberRequest - cmd.Use = "delete-direct-group-member GROUP_ID PRINCIPAL_ID" + cmd.Use = "delete-direct-group-member NAME" cmd.Short = `*Beta* Delete a direct group membership.` cmd.Long = `This command is in Beta and may change without notice. @@ -820,15 +832,15 @@ Delete a direct group membership. (holds the roles/group.manager role on it). Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks. - PRINCIPAL_ID: Required. Internal ID of the principal to be unassigned from the group.` + NAME: The resource name of the group membership. Format: + accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(2) + check := root.ExactArgs(1) return check(cmd, args) } @@ -837,15 +849,7 @@ Delete a direct group membership. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - _, err = fmt.Sscan(args[0], &deleteDirectGroupMemberReq.GroupId) - if err != nil { - return fmt.Errorf("invalid GROUP_ID: %s", args[0]) - } - - _, err = fmt.Sscan(args[1], &deleteDirectGroupMemberReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) - } + deleteDirectGroupMemberReq.Name = args[0] err = a.IamV2.DeleteDirectGroupMember(ctx, deleteDirectGroupMemberReq) if err != nil { @@ -880,7 +884,7 @@ func newDeleteGroup() *cobra.Command { var deleteGroupReq iamv2.DeleteGroupRequest - cmd.Use = "delete-group GROUP_ID" + cmd.Use = "delete-group NAME" cmd.Short = `*Beta* Delete a group in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -892,7 +896,8 @@ Delete a group in the account. (holds the roles/group.manager role on it). Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks.` + NAME: The resource name of the group. Format: + accounts/{account_id}/groups/{group_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -908,7 +913,7 @@ Delete a group in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - deleteGroupReq.GroupId = args[0] + deleteGroupReq.Name = args[0] err = a.IamV2.DeleteGroup(ctx, deleteGroupReq) if err != nil { @@ -1007,7 +1012,7 @@ func newDeleteServicePrincipal() *cobra.Command { var deleteServicePrincipalReq iamv2.DeleteServicePrincipalRequest - cmd.Use = "delete-service-principal SERVICE_PRINCIPAL_ID" + cmd.Use = "delete-service-principal NAME" cmd.Short = `*Beta* Delete a service principal in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -1016,7 +1021,8 @@ Delete a service principal in the account. Deletes a service principal from the Databricks account by its internal ID. Arguments: - SERVICE_PRINCIPAL_ID: Required. Internal ID of the service principal in Databricks.` + NAME: The resource name of the service principal. Format: + accounts/{account_id}/service-principals/{service_principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1032,7 +1038,7 @@ Delete a service principal in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - deleteServicePrincipalReq.ServicePrincipalId = args[0] + deleteServicePrincipalReq.Name = args[0] err = a.IamV2.DeleteServicePrincipal(ctx, deleteServicePrincipalReq) if err != nil { @@ -1067,7 +1073,7 @@ func newDeleteUser() *cobra.Command { var deleteUserReq iamv2.DeleteUserRequest - cmd.Use = "delete-user USER_ID" + cmd.Use = "delete-user NAME" cmd.Short = `*Beta* Delete a user in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -1076,7 +1082,8 @@ Delete a user in the account. Deletes a user from the Databricks account by its internal ID. Arguments: - USER_ID: Required. Internal ID of the user in Databricks.` + NAME: The resource name of the user. Format: + accounts/{account_id}/users/{user_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1092,7 +1099,7 @@ Delete a user in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - deleteUserReq.UserId = args[0] + deleteUserReq.Name = args[0] err = a.IamV2.DeleteUser(ctx, deleteUserReq) if err != nil { @@ -1127,7 +1134,7 @@ func newDeleteWorkspaceAssignment() *cobra.Command { var deleteWorkspaceAssignmentReq iamv2.DeleteWorkspaceAssignmentRequest - cmd.Use = "delete-workspace-assignment WORKSPACE_ID PRINCIPAL_ID" + cmd.Use = "delete-workspace-assignment NAME" cmd.Short = `*Beta* Delete a workspace assignment.` cmd.Long = `This command is in Beta and may change without notice. @@ -1139,16 +1146,15 @@ Delete a workspace assignment. of its original entitlements. Retrying is safe. 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.` + NAME: The resource name of the workspace assignment. Format: + accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(2) + check := root.ExactArgs(1) return check(cmd, args) } @@ -1157,15 +1163,7 @@ Delete a workspace assignment. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - _, err = fmt.Sscan(args[0], &deleteWorkspaceAssignmentReq.WorkspaceId) - if err != nil { - return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) - } - - _, err = fmt.Sscan(args[1], &deleteWorkspaceAssignmentReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) - } + deleteWorkspaceAssignmentReq.Name = args[0] err = a.IamV2.DeleteWorkspaceAssignment(ctx, deleteWorkspaceAssignmentReq) if err != nil { @@ -1274,7 +1272,7 @@ func newGetDirectGroupMember() *cobra.Command { var getDirectGroupMemberReq iamv2.GetDirectGroupMemberRequest - cmd.Use = "get-direct-group-member GROUP_ID PRINCIPAL_ID" + cmd.Use = "get-direct-group-member NAME" cmd.Short = `*Beta* Get a direct group member.` cmd.Long = `This command is in Beta and may change without notice. @@ -1283,16 +1281,15 @@ Get a direct group member. Gets a provisioned direct member of a group. Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks. - PRINCIPAL_ID: Required. Internal ID of the principal belonging to the group in - Databricks.` + NAME: The resource name of the group membership. Format: + accounts/{account_id}/groups/{group_id}/direct-members/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(2) + check := root.ExactArgs(1) return check(cmd, args) } @@ -1301,15 +1298,7 @@ Get a direct group member. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - _, err = fmt.Sscan(args[0], &getDirectGroupMemberReq.GroupId) - if err != nil { - return fmt.Errorf("invalid GROUP_ID: %s", args[0]) - } - - _, err = fmt.Sscan(args[1], &getDirectGroupMemberReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) - } + getDirectGroupMemberReq.Name = args[0] response, err := a.IamV2.GetDirectGroupMember(ctx, getDirectGroupMemberReq) if err != nil { @@ -1539,7 +1528,7 @@ func newGetGroup() *cobra.Command { var getGroupReq iamv2.GetGroupRequest - cmd.Use = "get-group GROUP_ID" + cmd.Use = "get-group NAME" cmd.Short = `*Beta* Get a group in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -1548,7 +1537,8 @@ Get a group in the account. Fetches a group from the Databricks account by its internal ID. Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks.` + NAME: The resource name of the group. Format: + accounts/{account_id}/groups/{group_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1564,7 +1554,7 @@ Get a group in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - getGroupReq.GroupId = args[0] + getGroupReq.Name = args[0] response, err := a.IamV2.GetGroup(ctx, getGroupReq) if err != nil { @@ -1661,7 +1651,7 @@ func newGetServicePrincipal() *cobra.Command { var getServicePrincipalReq iamv2.GetServicePrincipalRequest - cmd.Use = "get-service-principal SERVICE_PRINCIPAL_ID" + cmd.Use = "get-service-principal NAME" cmd.Short = `*Beta* Get a service principal in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -1670,7 +1660,8 @@ Get a service principal in the account. Fetches a service principal from the Databricks account by its internal ID. Arguments: - SERVICE_PRINCIPAL_ID: Required. Internal ID of the service principal in Databricks.` + NAME: The resource name of the service principal. Format: + accounts/{account_id}/service-principals/{service_principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1686,7 +1677,7 @@ Get a service principal in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - getServicePrincipalReq.ServicePrincipalId = args[0] + getServicePrincipalReq.Name = args[0] response, err := a.IamV2.GetServicePrincipal(ctx, getServicePrincipalReq) if err != nil { @@ -1722,7 +1713,7 @@ func newGetUser() *cobra.Command { var getUserReq iamv2.GetUserRequest - cmd.Use = "get-user USER_ID" + cmd.Use = "get-user NAME" cmd.Short = `*Beta* Get a user in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -1731,7 +1722,8 @@ Get a user in the account. Fetches a user from the Databricks account by its internal ID. Arguments: - USER_ID: Required. Internal ID of the user in Databricks.` + NAME: The resource name of the user. Format: + accounts/{account_id}/users/{user_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1747,7 +1739,7 @@ Get a user in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - getUserReq.UserId = args[0] + getUserReq.Name = args[0] response, err := a.IamV2.GetUser(ctx, getUserReq) if err != nil { @@ -1785,7 +1777,7 @@ func newGetWorkspaceAccessDetail() *cobra.Command { cmd.Flags().Var(&getWorkspaceAccessDetailReq.View, "view", `Controls what fields are returned. Supported values: [BASIC, FULL]`) - cmd.Use = "get-workspace-access-detail WORKSPACE_ID PRINCIPAL_ID" + cmd.Use = "get-workspace-access-detail NAME" cmd.Short = `*Beta* Get workspace access details for a principal.` cmd.Long = `This command is in Beta and may change without notice. @@ -1799,17 +1791,15 @@ Get workspace access details for a principal. what fields are returned (BASIC by default or FULL). Arguments: - WORKSPACE_ID: Required. The workspace ID for which the access details are being - requested. - PRINCIPAL_ID: Required. The internal ID of the principal (user/sp/group) for which the - access details are being requested.` + NAME: The resource name of the workspace access detail. Format: + accounts/{account_id}/workspaces/{workspace_id}/workspace-access-details/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(2) + check := root.ExactArgs(1) return check(cmd, args) } @@ -1818,15 +1808,7 @@ Get workspace access details for a principal. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - _, err = fmt.Sscan(args[0], &getWorkspaceAccessDetailReq.WorkspaceId) - if err != nil { - return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) - } - - _, err = fmt.Sscan(args[1], &getWorkspaceAccessDetailReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) - } + getWorkspaceAccessDetailReq.Name = args[0] response, err := a.IamV2.GetWorkspaceAccessDetail(ctx, getWorkspaceAccessDetailReq) if err != nil { @@ -1862,7 +1844,7 @@ func newGetWorkspaceAssignment() *cobra.Command { var getWorkspaceAssignmentReq iamv2.GetWorkspaceAssignmentRequest - cmd.Use = "get-workspace-assignment WORKSPACE_ID PRINCIPAL_ID" + cmd.Use = "get-workspace-assignment NAME" cmd.Short = `*Beta* Get a workspace assignment for a principal.` cmd.Long = `This command is in Beta and may change without notice. @@ -1871,16 +1853,15 @@ Get a workspace assignment for a principal. Returns the assignment for a principal in a workspace. Arguments: - WORKSPACE_ID: Required. The workspace ID for which the assignment is being requested. - PRINCIPAL_ID: Required. The internal ID of the principal (user/sp/group) for which the - assignment is being requested.` + NAME: The resource name of the workspace assignment. Format: + accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(2) + check := root.ExactArgs(1) return check(cmd, args) } @@ -1889,15 +1870,7 @@ Get a workspace assignment for a principal. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - _, err = fmt.Sscan(args[0], &getWorkspaceAssignmentReq.WorkspaceId) - if err != nil { - return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) - } - - _, err = fmt.Sscan(args[1], &getWorkspaceAssignmentReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) - } + getWorkspaceAssignmentReq.Name = args[0] response, err := a.IamV2.GetWorkspaceAssignment(ctx, getWorkspaceAssignmentReq) if err != nil { @@ -2019,7 +1992,7 @@ func newListDirectGroupMembers() *cobra.Command { cmd.Flags().StringVar(&listDirectGroupMembersReq.PageToken, "page-token", listDirectGroupMembersReq.PageToken, `Pagination token.`) cmd.Flags().Lookup("page-token").Hidden = true - cmd.Use = "list-direct-group-members GROUP_ID" + cmd.Use = "list-direct-group-members PARENT" cmd.Short = `*Beta* List direct group members.` cmd.Long = `This command is in Beta and may change without notice. @@ -2029,8 +2002,8 @@ List direct group members. (internal or from identity provider). Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks whose direct members are - being listed.` + PARENT: The parent resource name of the group whose direct members to list. + Format: accounts/{account_id}/groups/{group_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -2046,10 +2019,7 @@ List direct group members. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - _, err = fmt.Sscan(args[0], &listDirectGroupMembersReq.GroupId) - if err != nil { - return fmt.Errorf("invalid GROUP_ID: %s", args[0]) - } + listDirectGroupMembersReq.Parent = args[0] response := a.IamV2.ListDirectGroupMembers(ctx, listDirectGroupMembersReq) if listDirectGroupMembersLimit < 0 { @@ -2102,21 +2072,25 @@ func newListGroups() *cobra.Command { cmd.Flags().StringVar(&listGroupsReq.PageToken, "page-token", listGroupsReq.PageToken, `Pagination token.`) cmd.Flags().Lookup("page-token").Hidden = true - cmd.Use = "list-groups" + cmd.Use = "list-groups PARENT" cmd.Short = `*Beta* List groups in the account.` cmd.Long = `This command is in Beta and may change without notice. List groups in the account. Lists the groups in the Databricks account, returning one page per call. - Supports filtering by group name or external ID.` + Supports filtering by group name or external ID. + + Arguments: + PARENT: The parent resource name of the account whose groups to list. Format: + accounts/{account_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(0) + check := root.ExactArgs(1) return check(cmd, args) } @@ -2125,6 +2099,8 @@ List groups in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) + listGroupsReq.Parent = args[0] + response := a.IamV2.ListGroups(ctx, listGroupsReq) if listGroupsLimit < 0 { return fmt.Errorf("--limit must be a non-negative integer, got %d", listGroupsLimit) @@ -2255,21 +2231,25 @@ func newListServicePrincipals() *cobra.Command { cmd.Flags().StringVar(&listServicePrincipalsReq.PageToken, "page-token", listServicePrincipalsReq.PageToken, `Pagination token.`) cmd.Flags().Lookup("page-token").Hidden = true - cmd.Use = "list-service-principals" + cmd.Use = "list-service-principals PARENT" cmd.Short = `*Beta* List service principals in the account.` cmd.Long = `This command is in Beta and may change without notice. List service principals in the account. Lists the service principals in the Databricks account, returning one page per - call. Supports filtering by application ID or external ID.` + call. Supports filtering by application ID or external ID. + + Arguments: + PARENT: The parent resource name of the account whose service principals to list. + Format: accounts/{account_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(0) + check := root.ExactArgs(1) return check(cmd, args) } @@ -2278,6 +2258,8 @@ List service principals in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) + listServicePrincipalsReq.Parent = args[0] + response := a.IamV2.ListServicePrincipals(ctx, listServicePrincipalsReq) if listServicePrincipalsLimit < 0 { return fmt.Errorf("--limit must be a non-negative integer, got %d", listServicePrincipalsLimit) @@ -2318,7 +2300,7 @@ func newListTransitiveParentGroups() *cobra.Command { cmd.Flags().IntVar(&listTransitiveParentGroupsReq.PageSize, "page-size", listTransitiveParentGroupsReq.PageSize, `The maximum number of parent groups to return.`) cmd.Flags().StringVar(&listTransitiveParentGroupsReq.PageToken, "page-token", listTransitiveParentGroupsReq.PageToken, `A page token, received from a previous ListTransitiveParentGroups call.`) - cmd.Use = "list-transitive-parent-groups PRINCIPAL_ID" + cmd.Use = "list-transitive-parent-groups PARENT" cmd.Short = `*Beta* List all transitive parent groups of a principal.` cmd.Long = `This command is in Beta and may change without notice. @@ -2327,8 +2309,8 @@ List all transitive parent groups of a principal. Lists all transitive parent groups of a principal. Arguments: - PRINCIPAL_ID: Required. Internal ID of the principal in Databricks whose transitive - parent groups are being listed.` + PARENT: The parent resource name of the principal whose transitive parent groups + to list. Format: accounts/{account_id}/principals/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -2344,10 +2326,7 @@ List all transitive parent groups of a principal. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - _, err = fmt.Sscan(args[0], &listTransitiveParentGroupsReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) - } + listTransitiveParentGroupsReq.Parent = args[0] response, err := a.IamV2.ListTransitiveParentGroups(ctx, listTransitiveParentGroupsReq) if err != nil { @@ -2397,21 +2376,25 @@ func newListUsers() *cobra.Command { cmd.Flags().StringVar(&listUsersReq.PageToken, "page-token", listUsersReq.PageToken, `Pagination token.`) cmd.Flags().Lookup("page-token").Hidden = true - cmd.Use = "list-users" + cmd.Use = "list-users PARENT" cmd.Short = `*Beta* List users in the account.` cmd.Long = `This command is in Beta and may change without notice. List users in the account. Lists the users in the Databricks account, returning one page per call. - Supports filtering by username or external ID.` + Supports filtering by username or external ID. + + Arguments: + PARENT: The parent resource name of the account whose users to list. Format: + accounts/{account_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(0) + check := root.ExactArgs(1) return check(cmd, args) } @@ -2420,6 +2403,8 @@ List users in the account. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) + listUsersReq.Parent = args[0] + response := a.IamV2.ListUsers(ctx, listUsersReq) if listUsersLimit < 0 { return fmt.Errorf("--limit must be a non-negative integer, got %d", listUsersLimit) @@ -2555,7 +2540,7 @@ func newListWorkspaceAssignments() *cobra.Command { cmd.Flags().StringVar(&listWorkspaceAssignmentsReq.PageToken, "page-token", listWorkspaceAssignmentsReq.PageToken, `Pagination token.`) cmd.Flags().Lookup("page-token").Hidden = true - cmd.Use = "list-workspace-assignments WORKSPACE_ID" + cmd.Use = "list-workspace-assignments PARENT" cmd.Short = `*Beta* List workspace assignments for a workspace.` cmd.Long = `This command is in Beta and may change without notice. @@ -2567,8 +2552,8 @@ List workspace assignments for a workspace. get that principal's assignment. Arguments: - WORKSPACE_ID: Required. The workspace ID for which the workspace assignments are being - fetched.` + PARENT: The parent resource name of the workspace whose assignments to list. + Format: accounts/{account_id}/workspaces/{workspace_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -2584,10 +2569,7 @@ List workspace assignments for a workspace. ctx := cmd.Context() a := cmdctx.AccountClient(ctx) - _, err = fmt.Sscan(args[0], &listWorkspaceAssignmentsReq.WorkspaceId) - if err != nil { - return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) - } + listWorkspaceAssignmentsReq.Parent = args[0] response := a.IamV2.ListWorkspaceAssignments(ctx, listWorkspaceAssignmentsReq) if listWorkspaceAssignmentsLimit < 0 { @@ -2895,8 +2877,9 @@ func newUpdateGroup() *cobra.Command { cmd.Flags().StringVar(&updateGroupReq.Group.ExternalId, "external-id", updateGroupReq.Group.ExternalId, `ExternalId of the group in the customer's IdP.`) cmd.Flags().StringVar(&updateGroupReq.Group.GroupName, "group-name", updateGroupReq.Group.GroupName, `Display name of the group.`) + cmd.Flags().StringVar(&updateGroupReq.Group.Name, "name", updateGroupReq.Group.Name, `The resource name of the group.`) - cmd.Use = "update-group GROUP_ID UPDATE_MASK" + cmd.Use = "update-group NAME UPDATE_MASK" cmd.Short = `*Beta* Update a group in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -2914,7 +2897,9 @@ Update a group in the account. (holds the roles/group.manager role on it). Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks. + NAME: The resource name of the group. The format depends on the API that + returned it: - Account-scoped: accounts/{account_id}/groups/{group_id} - + Workspace-scoped: groups/{group_id} UPDATE_MASK: Required. The list of fields to update.` cmd.Annotations = make(map[string]string) @@ -2943,7 +2928,7 @@ Update a group in the account. } } } - updateGroupReq.GroupId = args[0] + updateGroupReq.Name = args[0] updateGroupReq.UpdateMask = args[1] response, err := a.IamV2.UpdateGroup(ctx, updateGroupReq) @@ -2985,8 +2970,9 @@ func newUpdateServicePrincipal() *cobra.Command { cmd.Flags().Var(&updateServicePrincipalJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Flags().StringVar(&updateServicePrincipalReq.ServicePrincipal.ExternalId, "external-id", updateServicePrincipalReq.ServicePrincipal.ExternalId, `ExternalId of the service principal in the customer's IdP.`) + cmd.Flags().StringVar(&updateServicePrincipalReq.ServicePrincipal.Name, "name", updateServicePrincipalReq.ServicePrincipal.Name, `The resource name of the service principal.`) - cmd.Use = "update-service-principal SERVICE_PRINCIPAL_ID UPDATE_MASK DISPLAY_NAME ACCOUNT_SP_STATUS" + cmd.Use = "update-service-principal NAME UPDATE_MASK DISPLAY_NAME ACCOUNT_SP_STATUS" cmd.Short = `*Beta* Update a service principal in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -2996,15 +2982,18 @@ Update a service principal in the account. fields named in the update mask are modified. Returns the updated ServicePrincipal resource. - For locally managed service principals, is_agent must be set to true or false - when updated. + To change is_agent on a locally managed service principal, set it to true or + false. Naming is_agent in the update mask without a value leaves it unchanged. When AIM is enabled and the service principal is an external identity (its external_id is set), only external_id can be updated; its other fields are sourced from your identity provider. Arguments: - SERVICE_PRINCIPAL_ID: Required. Internal ID of the service principal in Databricks. + NAME: The resource name of the service principal. The format depends on the API + that returned it: - Account-scoped: + accounts/{account_id}/service-principals/{service_principal_id} - + Workspace-scoped: service-principals/{service_principal_id} UPDATE_MASK: Required. The list of fields to update. DISPLAY_NAME: Display name of the service principal. ACCOUNT_SP_STATUS: The activity status of a service principal in a Databricks account. @@ -3018,7 +3007,7 @@ Update a service principal in the account. if cmd.Flags().Changed("json") { err := root.ExactArgs(2)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only SERVICE_PRINCIPAL_ID, UPDATE_MASK as positional arguments. Provide 'display_name', 'account_sp_status' in your JSON input") + return errors.New("when --json flag is specified, provide only NAME, UPDATE_MASK as positional arguments. Provide 'display_name', 'account_sp_status' in your JSON input") } return nil } @@ -3043,7 +3032,7 @@ Update a service principal in the account. } } } - updateServicePrincipalReq.ServicePrincipalId = args[0] + updateServicePrincipalReq.Name = args[0] updateServicePrincipalReq.UpdateMask = args[1] if !cmd.Flags().Changed("json") { updateServicePrincipalReq.ServicePrincipal.DisplayName = args[2] @@ -3095,8 +3084,9 @@ func newUpdateUser() *cobra.Command { cmd.Flags().Var(&updateUserJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Flags().StringVar(&updateUserReq.User.ExternalId, "external-id", updateUserReq.User.ExternalId, `ExternalId of the user in the customer's IdP.`) + cmd.Flags().StringVar(&updateUserReq.User.Name, "name", updateUserReq.User.Name, `The resource name of the user.`) - cmd.Use = "update-user USER_ID UPDATE_MASK USERNAME FULL_NAME ACCOUNT_USER_STATUS" + cmd.Use = "update-user NAME UPDATE_MASK USERNAME FULL_NAME ACCOUNT_USER_STATUS" cmd.Short = `*Beta* Update a user in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -3111,7 +3101,9 @@ Update a user in the account. identity provider. Arguments: - USER_ID: Required. Internal ID of the user in Databricks. + NAME: The resource name of the user. The format depends on the API that returned + it: - Account-scoped: accounts/{account_id}/users/{user_id} - + Workspace-scoped: users/{user_id} UPDATE_MASK: Required. The list of fields to update. USERNAME: Username/email of the user. FULL_NAME: @@ -3126,7 +3118,7 @@ Update a user in the account. if cmd.Flags().Changed("json") { err := root.ExactArgs(2)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only USER_ID, UPDATE_MASK as positional arguments. Provide 'username', 'full_name', 'account_user_status' in your JSON input") + return errors.New("when --json flag is specified, provide only NAME, UPDATE_MASK as positional arguments. Provide 'username', 'full_name', 'account_user_status' in your JSON input") } return nil } @@ -3151,7 +3143,7 @@ Update a user in the account. } } } - updateUserReq.UserId = args[0] + updateUserReq.Name = args[0] updateUserReq.UpdateMask = args[1] if !cmd.Flags().Changed("json") { updateUserReq.User.Username = args[2] @@ -3211,8 +3203,9 @@ func newUpdateWorkspaceAssignment() *cobra.Command { // TODO: array: effective_entitlements // TODO: array: entitlements + cmd.Flags().StringVar(&updateWorkspaceAssignmentReq.WorkspaceAssignment.Name, "name", updateWorkspaceAssignmentReq.WorkspaceAssignment.Name, `The resource name of the workspace assignment.`) - cmd.Use = "update-workspace-assignment WORKSPACE_ID PRINCIPAL_ID UPDATE_MASK PRINCIPAL_ID" + cmd.Use = "update-workspace-assignment NAME UPDATE_MASK PRINCIPAL_ID" cmd.Short = `*Beta* Update a workspace assignment.` cmd.Long = `This command is in Beta and may change without notice. @@ -3224,11 +3217,14 @@ Update a workspace assignment. assignment afterwards to confirm the final state. Arguments: - WORKSPACE_ID: Required. The workspace ID for which the workspace assignment is being - updated. - PRINCIPAL_ID: Required. ID of the principal in Databricks. + NAME: The resource name of the workspace assignment. The format depends on the + API that returned it: - Account-scoped: + accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id} + - Workspace-scoped: workspace-assignments/{principal_id} UPDATE_MASK: Required. The list of fields to update. - PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks.` + PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks. Set when + the assignment is created and cannot be changed afterwards; to assign a + different principal, create a new assignment.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -3236,13 +3232,13 @@ Update a workspace assignment. cmd.Args = func(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("json") { - err := root.ExactArgs(3)(cmd, args) + err := root.ExactArgs(2)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only WORKSPACE_ID, PRINCIPAL_ID, UPDATE_MASK as positional arguments. Provide 'principal_id' in your JSON input") + return errors.New("when --json flag is specified, provide only NAME, UPDATE_MASK as positional arguments. Provide 'principal_id' in your JSON input") } return nil } - check := root.ExactArgs(4) + check := root.ExactArgs(3) return check(cmd, args) } @@ -3263,24 +3259,15 @@ Update a workspace assignment. } } } - _, err = fmt.Sscan(args[0], &updateWorkspaceAssignmentReq.WorkspaceId) - if err != nil { - return fmt.Errorf("invalid WORKSPACE_ID: %s", args[0]) - } - - _, err = fmt.Sscan(args[1], &updateWorkspaceAssignmentReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) - } - - if args[2] != "" { - updateMaskArray := strings.Split(args[2], ",") + updateWorkspaceAssignmentReq.Name = args[0] + if args[1] != "" { + updateMaskArray := strings.Split(args[1], ",") updateWorkspaceAssignmentReq.UpdateMask = *fieldmask.New(updateMaskArray) } if !cmd.Flags().Changed("json") { - _, err = fmt.Sscan(args[3], &updateWorkspaceAssignmentReq.WorkspaceAssignment.PrincipalId) + _, err = fmt.Sscan(args[2], &updateWorkspaceAssignmentReq.WorkspaceAssignment.PrincipalId) if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[3]) + return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[2]) } } diff --git a/cmd/account/network-connectivity/network-connectivity.go b/cmd/account/network-connectivity/network-connectivity.go index 3a1b00e18f6..ce09c01ebf5 100644 --- a/cmd/account/network-connectivity/network-connectivity.go +++ b/cmd/account/network-connectivity/network-connectivity.go @@ -5,11 +5,13 @@ package network_connectivity import ( "errors" "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/settings" "github.com/spf13/cobra" ) @@ -48,6 +50,7 @@ func New() *cobra.Command { cmd.AddCommand(newGetPrivateEndpointRule()) cmd.AddCommand(newListNetworkConnectivityConfigurations()) cmd.AddCommand(newListPrivateEndpointRules()) + cmd.AddCommand(newUpdateNetworkConnectivityConfig()) cmd.AddCommand(newUpdatePrivateEndpointRule()) // Apply optional overrides to this command. @@ -639,6 +642,98 @@ func newListPrivateEndpointRules() *cobra.Command { return cmd } +// start update-network-connectivity-config 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 updateNetworkConnectivityConfigOverrides []func( + *cobra.Command, + *settings.UpdateNetworkConnectivityConfigRequest, +) + +func newUpdateNetworkConnectivityConfig() *cobra.Command { + cmd := &cobra.Command{} + + var updateNetworkConnectivityConfigReq settings.UpdateNetworkConnectivityConfigRequest + updateNetworkConnectivityConfigReq.NetworkConnectivityConfig = settings.NetworkConnectivityConfiguration{} + var updateNetworkConnectivityConfigJson flags.JsonFlag + + cmd.Flags().Var(&updateNetworkConnectivityConfigJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.AccountId, "account-id", updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.AccountId, `Your Databricks account ID.`) + cmd.Flags().Int64Var(&updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.BillingWorkspaceId, "billing-workspace-id", updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.BillingWorkspaceId, `The workspace to which charges for this network connectivity configuration are attributed.`) + cmd.Flags().Int64Var(&updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.CreationTime, "creation-time", updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.CreationTime, `Time in epoch milliseconds when this object was created.`) + // TODO: complex arg: egress_config + cmd.Flags().StringVar(&updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.Name, "name", updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.Name, `The name of the network connectivity configuration.`) + cmd.Flags().StringVar(&updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.NetworkConnectivityConfigId, "network-connectivity-config-id", updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.NetworkConnectivityConfigId, `Databricks network connectivity configuration ID.`) + cmd.Flags().StringVar(&updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.Region, "region", updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.Region, `The region for the network connectivity configuration.`) + cmd.Flags().Int64Var(&updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.UpdatedTime, "updated-time", updateNetworkConnectivityConfigReq.NetworkConnectivityConfig.UpdatedTime, `Time in epoch milliseconds when this object was updated.`) + + cmd.Use = "update-network-connectivity-config NETWORK_CONNECTIVITY_CONFIG_ID UPDATE_MASK" + cmd.Short = `*Public Preview* Update a network connectivity configuration.` + cmd.Long = `This command is in Public Preview and may change without notice. + +Update a network connectivity configuration. + + Updates the name or billing workspace for a network connectivity + configuration. + + Arguments: + NETWORK_CONNECTIVITY_CONFIG_ID: Your Network Connectivity Configuration ID. + UPDATE_MASK: Must contain at least one of name or billing_workspace_id.` + + cmd.Annotations = make(map[string]string) + 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(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 := updateNetworkConnectivityConfigJson.Unmarshal(&updateNetworkConnectivityConfigReq.NetworkConnectivityConfig) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + updateNetworkConnectivityConfigReq.NetworkConnectivityConfigId = args[0] + if args[1] != "" { + updateMaskArray := strings.Split(args[1], ",") + updateNetworkConnectivityConfigReq.UpdateMask = *fieldmask.New(updateMaskArray) + } + + response, err := a.NetworkConnectivity.UpdateNetworkConnectivityConfig(ctx, updateNetworkConnectivityConfigReq) + 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 updateNetworkConnectivityConfigOverrides { + fn(cmd, &updateNetworkConnectivityConfigReq) + } + + return cmd +} + // start update-private-endpoint-rule command // Slice with functions to override default command behavior. diff --git a/cmd/workspace/agent-kit/agent-kit.go b/cmd/workspace/agent-kit/agent-kit.go index d88a06e2b38..0946b7e546f 100644 --- a/cmd/workspace/agent-kit/agent-kit.go +++ b/cmd/workspace/agent-kit/agent-kit.go @@ -1175,8 +1175,10 @@ func newGetMemoryStorePermission() *cobra.Command { var getMemoryStorePermissionReq agentkit.GetMemoryStorePermissionRequest cmd.Use = "get-memory-store-permission NAME" - cmd.Short = `Get memory store permission.` - cmd.Long = `Get memory store permission. + cmd.Short = `*Beta* Get memory store permission.` + cmd.Long = `This command is in Beta and may change without notice. + +Get memory store permission. Retrieves the current caller's effective memory store permission. Returns PERMISSION_LEVEL_UNSPECIFIED when the caller has no access. @@ -1184,12 +1186,9 @@ func newGetMemoryStorePermission() *cobra.Command { Arguments: NAME: Resource name in the form memory-stores/{managed_memory_store_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) @@ -1361,8 +1360,10 @@ func newGetSessionStorePermission() *cobra.Command { var getSessionStorePermissionReq agentkit.GetSessionStorePermissionRequest cmd.Use = "get-session-store-permission NAME" - cmd.Short = `Get session store permission.` - cmd.Long = `Get session store permission. + cmd.Short = `*Beta* Get session store permission.` + cmd.Long = `This command is in Beta and may change without notice. + +Get session store permission. Retrieves the current caller's effective session store permission. Returns PERMISSION_LEVEL_UNSPECIFIED when the caller has no access. @@ -1370,12 +1371,9 @@ func newGetSessionStorePermission() *cobra.Command { Arguments: NAME: Resource name in the form session-stores/{session_store_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) @@ -1427,8 +1425,10 @@ func newGrantMemoryStorePermission() *cobra.Command { cmd.Flags().Var(&grantMemoryStorePermissionJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Use = "grant-memory-store-permission NAME" - cmd.Short = `Grant memory store permission.` - cmd.Long = `Grant memory store permission. + cmd.Short = `*Beta* Grant memory store permission.` + cmd.Long = `This command is in Beta and may change without notice. + +Grant memory store permission. Grants a READ or WRITE permission on a memory store to a principal. Only the owner or a workspace admin may grant permissions. @@ -1436,12 +1436,9 @@ func newGrantMemoryStorePermission() *cobra.Command { Arguments: NAME: Resource name in the form memory-stores/{managed_memory_store_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) @@ -1507,8 +1504,10 @@ func newGrantSessionStorePermission() *cobra.Command { cmd.Flags().Var(&grantSessionStorePermissionJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Use = "grant-session-store-permission NAME" - cmd.Short = `Grant session store permission.` - cmd.Long = `Grant session store permission. + cmd.Short = `*Beta* Grant session store permission.` + cmd.Long = `This command is in Beta and may change without notice. + +Grant session store permission. Grants a READ or WRITE permission on a session store to a principal. Only the owner or a workspace admin may grant permissions. @@ -1516,12 +1515,9 @@ func newGrantSessionStorePermission() *cobra.Command { Arguments: NAME: Resource name in the form session-stores/{session_store_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) @@ -1683,8 +1679,10 @@ func newListMemoryStorePermissions() *cobra.Command { cmd.Flags().Lookup("page-token").Hidden = true cmd.Use = "list-memory-store-permissions PARENT" - cmd.Short = `List memory store permissions.` - cmd.Long = `List memory store permissions. + cmd.Short = `*Beta* List memory store permissions.` + cmd.Long = `This command is in Beta and may change without notice. + +List memory store permissions. Lists explicit memory store grants. Only the owner or a workspace admin may list permissions. @@ -1693,12 +1691,9 @@ func newListMemoryStorePermissions() *cobra.Command { PARENT: Resource name of the store, in the form memory-stores/{managed_memory_store_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) @@ -1914,8 +1909,10 @@ func newListSessionStorePermissions() *cobra.Command { cmd.Flags().Lookup("page-token").Hidden = true cmd.Use = "list-session-store-permissions PARENT" - cmd.Short = `List session store permissions.` - cmd.Long = `List session store permissions. + cmd.Short = `*Beta* List session store permissions.` + cmd.Long = `This command is in Beta and may change without notice. + +List session store permissions. Lists explicit session store grants. Only the owner or a workspace admin may list permissions. @@ -1924,12 +1921,9 @@ func newListSessionStorePermissions() *cobra.Command { PARENT: Resource name of the store, in the form session-stores/{session_store_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) @@ -2198,8 +2192,10 @@ func newRevokeMemoryStorePermission() *cobra.Command { cmd.Flags().Var(&revokeMemoryStorePermissionJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Use = "revoke-memory-store-permission NAME" - cmd.Short = `Revoke memory store permission.` - cmd.Long = `Revoke memory store permission. + cmd.Short = `*Beta* Revoke memory store permission.` + cmd.Long = `This command is in Beta and may change without notice. + +Revoke memory store permission. Removes a principal's explicit READ and WRITE grants on a memory store. Only the owner or a workspace admin may revoke permissions. Ownership and inherited @@ -2208,12 +2204,9 @@ func newRevokeMemoryStorePermission() *cobra.Command { Arguments: NAME: Resource name in the form memory-stores/{managed_memory_store_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) @@ -2279,8 +2272,10 @@ func newRevokeSessionStorePermission() *cobra.Command { cmd.Flags().Var(&revokeSessionStorePermissionJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Use = "revoke-session-store-permission NAME" - cmd.Short = `Revoke session store permission.` - cmd.Long = `Revoke session store permission. + cmd.Short = `*Beta* Revoke session store permission.` + cmd.Long = `This command is in Beta and may change without notice. + +Revoke session store permission. Removes a principal's explicit READ and WRITE grants on a session store. Only the owner or a workspace admin may revoke permissions. Ownership and inherited @@ -2289,12 +2284,9 @@ func newRevokeSessionStorePermission() *cobra.Command { Arguments: NAME: Resource name in the form session-stores/{session_store_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/cmd.go b/cmd/workspace/cmd.go index d27e90e1b7e..b8291b0e12c 100644 --- a/cmd/workspace/cmd.go +++ b/cmd/workspace/cmd.go @@ -24,6 +24,7 @@ import ( clean_rooms "github.com/databricks/cli/cmd/workspace/clean-rooms" cluster_policies "github.com/databricks/cli/cmd/workspace/cluster-policies" clusters "github.com/databricks/cli/cmd/workspace/clusters" + compute_migrations "github.com/databricks/cli/cmd/workspace/compute-migrations" connections "github.com/databricks/cli/cmd/workspace/connections" consumer_fulfillments "github.com/databricks/cli/cmd/workspace/consumer-fulfillments" consumer_installations "github.com/databricks/cli/cmd/workspace/consumer-installations" @@ -51,6 +52,7 @@ import ( forecasting "github.com/databricks/cli/cmd/workspace/forecasting" functions "github.com/databricks/cli/cmd/workspace/functions" genie "github.com/databricks/cli/cmd/workspace/genie" + genie_agents "github.com/databricks/cli/cmd/workspace/genie-agents" git_credentials "github.com/databricks/cli/cmd/workspace/git-credentials" global_init_scripts "github.com/databricks/cli/cmd/workspace/global-init-scripts" grants "github.com/databricks/cli/cmd/workspace/grants" @@ -162,6 +164,7 @@ func All() []*cobra.Command { out = append(out, clean_rooms.New()) out = append(out, cluster_policies.New()) out = append(out, clusters.New()) + out = append(out, compute_migrations.New()) out = append(out, connections.New()) out = append(out, consumer_fulfillments.New()) out = append(out, consumer_installations.New()) @@ -189,6 +192,7 @@ func All() []*cobra.Command { out = append(out, forecasting.New()) out = append(out, functions.New()) out = append(out, genie.New()) + out = append(out, genie_agents.New()) out = append(out, git_credentials.New()) out = append(out, global_init_scripts.New()) out = append(out, grants.New()) diff --git a/cmd/workspace/compute-migrations/compute-migrations.go b/cmd/workspace/compute-migrations/compute-migrations.go new file mode 100644 index 00000000000..03e997f929c --- /dev/null +++ b/cmd/workspace/compute-migrations/compute-migrations.go @@ -0,0 +1,835 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package compute_migrations + +import ( + "errors" + "fmt" + + "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/service/computemigrations" + "github.com/spf13/cobra" +) + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var cmdOverrides []func(*cobra.Command) + +func New() *cobra.Command { + cmd := &cobra.Command{ + Use: "compute-migrations", + Short: `Manage migrations of Classic compute workloads to Serverless.`, + Long: `Manage migrations of Classic compute workloads to Serverless.`, + GroupID: "compute", + + // This service is being previewed; hide from help output. + Hidden: true, + RunE: root.ReportUnknownSubcommand, + } + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + // Add methods + cmd.AddCommand(newApproveMigrationExecution()) + cmd.AddCommand(newApproveMigrationTranslation()) + cmd.AddCommand(newCancelMigration()) + cmd.AddCommand(newCreate()) + cmd.AddCommand(newDelete()) + cmd.AddCommand(newGet()) + cmd.AddCommand(newList()) + cmd.AddCommand(newRejectMigrationExecution()) + cmd.AddCommand(newRejectMigrationTranslation()) + + // Apply optional overrides to this command. + for _, fn := range cmdOverrides { + fn(cmd) + } + + return cmd +} + +// start approve-migration-execution 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 approveMigrationExecutionOverrides []func( + *cobra.Command, + *computemigrations.ApproveMigrationExecutionRequest, +) + +func newApproveMigrationExecution() *cobra.Command { + cmd := &cobra.Command{} + + var approveMigrationExecutionReq computemigrations.ApproveMigrationExecutionRequest + var approveMigrationExecutionJson flags.JsonFlag + + cmd.Flags().Var(&approveMigrationExecutionJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&approveMigrationExecutionReq.AdditionalFeedback, "additional-feedback", approveMigrationExecutionReq.AdditionalFeedback, `Optional free-text feedback or instructions the user provides along with the approval, carried into the next stage of the migration.`) + cmd.Flags().StringVar(&approveMigrationExecutionReq.Etag, "etag", approveMigrationExecutionReq.Etag, `Optional resource version for optimistic concurrency control.`) + + cmd.Use = "approve-migration-execution MIGRATION_ID" + cmd.Short = `Approve a migration for execution.` + cmd.Long = `Approve a migration for execution. + + Approves migration execution at the MIGRATION_REVIEW gate, advancing to + execution. + + Valid only when the migration is in MIGRATION_REVIEW. If supplied, the etag + must match the current server value. + + Returns NOT_FOUND if the migration does not exist. Returns FAILED_PRECONDITION + if the migration is not in MIGRATION_REVIEW. Returns ABORTED if the etag does + not match the current resource version. + + Arguments: + MIGRATION_ID: The ID of the migration to approve for execution.` + + 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) + + if cmd.Flags().Changed("json") { + diags := approveMigrationExecutionJson.Unmarshal(&approveMigrationExecutionReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + approveMigrationExecutionReq.MigrationId = args[0] + + response, err := w.ComputeMigrations.ApproveMigrationExecution(ctx, approveMigrationExecutionReq) + 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 approveMigrationExecutionOverrides { + fn(cmd, &approveMigrationExecutionReq) + } + + return cmd +} + +// start approve-migration-translation 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 approveMigrationTranslationOverrides []func( + *cobra.Command, + *computemigrations.ApproveMigrationTranslationRequest, +) + +func newApproveMigrationTranslation() *cobra.Command { + cmd := &cobra.Command{} + + var approveMigrationTranslationReq computemigrations.ApproveMigrationTranslationRequest + var approveMigrationTranslationJson flags.JsonFlag + + cmd.Flags().Var(&approveMigrationTranslationJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&approveMigrationTranslationReq.AdditionalFeedback, "additional-feedback", approveMigrationTranslationReq.AdditionalFeedback, `Optional free-text feedback or instructions the user provides along with the approval, carried into the next stage of the migration.`) + cmd.Flags().StringVar(&approveMigrationTranslationReq.Etag, "etag", approveMigrationTranslationReq.Etag, `Optional resource version for optimistic concurrency control.`) + + cmd.Use = "approve-migration-translation MIGRATION_ID" + cmd.Short = `Approve a migration working copy.` + cmd.Long = `Approve a migration working copy. + + Approves the working copy at the TRANSLATION_READY gate. If the migration was + created with run_validation, the working copy is then run to verify it + executes successfully before the migration is presented for execution review; + otherwise it advances straight to MIGRATION_REVIEW. + + Valid only when the migration is in TRANSLATION_READY. If supplied, the etag + must match the current server value. + + Returns NOT_FOUND if the migration does not exist. Returns FAILED_PRECONDITION + if the migration is not in TRANSLATION_READY. Returns ABORTED if the etag does + not match the current resource version. + + Arguments: + MIGRATION_ID: The ID of the migration to approve.` + + 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) + + if cmd.Flags().Changed("json") { + diags := approveMigrationTranslationJson.Unmarshal(&approveMigrationTranslationReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + approveMigrationTranslationReq.MigrationId = args[0] + + response, err := w.ComputeMigrations.ApproveMigrationTranslation(ctx, approveMigrationTranslationReq) + 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 approveMigrationTranslationOverrides { + fn(cmd, &approveMigrationTranslationReq) + } + + return cmd +} + +// start cancel-migration 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 cancelMigrationOverrides []func( + *cobra.Command, + *computemigrations.CancelMigrationRequest, +) + +func newCancelMigration() *cobra.Command { + cmd := &cobra.Command{} + + var cancelMigrationReq computemigrations.CancelMigrationRequest + var cancelMigrationJson flags.JsonFlag + + cmd.Flags().Var(&cancelMigrationJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&cancelMigrationReq.CancellationReason, "cancellation-reason", cancelMigrationReq.CancellationReason, `Optional free-text reason for the cancellation.`) + cmd.Flags().StringVar(&cancelMigrationReq.Etag, "etag", cancelMigrationReq.Etag, `Optional resource version for optimistic concurrency control.`) + + cmd.Use = "cancel-migration MIGRATION_ID" + cmd.Short = `Cancel a migration.` + cmd.Long = `Cancel a migration. + + Cancels the migration, transitioning it to CANCELLED. + + Valid from any non-terminal state, unlike the review-gate transitions, which + each require a specific state. Any in-flight agent work is abandoned and the + migration stops advancing. The resource is retained for auditability. + + Returns NOT_FOUND if the migration does not exist. Returns FAILED_PRECONDITION + if the migration is already in a terminal state. Returns ABORTED if the etag + does not match the current resource version. + + Arguments: + MIGRATION_ID: The ID of the migration to cancel.` + + 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) + + if cmd.Flags().Changed("json") { + diags := cancelMigrationJson.Unmarshal(&cancelMigrationReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + cancelMigrationReq.MigrationId = args[0] + + response, err := w.ComputeMigrations.CancelMigration(ctx, cancelMigrationReq) + 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 cancelMigrationOverrides { + fn(cmd, &cancelMigrationReq) + } + + return cmd +} + +// start create 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 createOverrides []func( + *cobra.Command, + *computemigrations.CreateMigrationRequest, +) + +func newCreate() *cobra.Command { + cmd := &cobra.Command{} + + var createReq computemigrations.CreateMigrationRequest + createReq.Migration = computemigrations.Migration{} + var createJson flags.JsonFlag + + cmd.Flags().Var(&createJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&createReq.RequestId, "request-id", createReq.RequestId, `Client-generated request ID for idempotent request deduplication.`) + cmd.Flags().BoolVar(&createReq.Migration.AutoApprove, "auto-approve", createReq.Migration.AutoApprove, `When true, the server skips the translation review (TRANSLATION_READY) instead of waiting for an explicit ApproveMigrationTranslation.`) + // TODO: complex arg: baking_config + // TODO: complex arg: baking_report + // TODO: complex arg: initiator + cmd.Flags().StringVar(&createReq.Migration.MigrationId, "migration-id", createReq.Migration.MigrationId, `Server-generated unique identifier for this migration.`) + // TODO: complex arg: migration_report + cmd.Flags().BoolVar(&createReq.Migration.RunValidation, "run-validation", createReq.Migration.RunValidation, `When true, Databricks runs the working copy to validate it after the translation review.`) + // TODO: array: state_history + // TODO: complex arg: validation_report + + cmd.Use = "create ASSET_TYPE ASSET_URI" + cmd.Short = `Create a migration.` + cmd.Long = `Create a migration. + + Creates a new migration for a Classic compute asset. + + The migration is created in PLANNING_PENDING and advances through the state + machine as planning work is scheduled. The caller must have appropriate + permissions: workspace admin for infrastructure-scoped migrations, job + owner/admin for individual workload migrations. + + At most one migration may hold an asset. Returns ALREADY_EXISTS if the asset + has a migration in flight, or one that already migrated it successfully; a + migration that ended without succeeding, or was deleted, releases the asset so + it can be migrated again. Returns INVALID_PARAMETER_VALUE if the asset is not + eligible for migration. + + Arguments: + ASSET_TYPE: Type of Classic compute asset being migrated. Cannot be changed after + creation. + Supported values: [FILE, INTERACTIVE, JOB] + ASSET_URI: URI of the source asset (e.g., "jobs/12345"). Cannot be changed after + creation.` + + 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 errors.New("when --json flag is specified, no positional arguments are allowed. Provide 'asset_type', 'asset_uri' in your JSON input") + } + return nil + } + check := root.ExactArgs(2) + 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 := createJson.Unmarshal(&createReq.Migration) + 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], &createReq.Migration.AssetType) + if err != nil { + return fmt.Errorf("invalid ASSET_TYPE: %s", args[0]) + } + + } + if !cmd.Flags().Changed("json") { + createReq.Migration.AssetUri = args[1] + } + + response, err := w.ComputeMigrations.Create(ctx, createReq) + 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 createOverrides { + fn(cmd, &createReq) + } + + return cmd +} + +// start delete 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 deleteOverrides []func( + *cobra.Command, + *computemigrations.DeleteMigrationRequest, +) + +func newDelete() *cobra.Command { + cmd := &cobra.Command{} + + var deleteReq computemigrations.DeleteMigrationRequest + + cmd.Flags().StringVar(&deleteReq.Etag, "etag", deleteReq.Etag, `If nonempty, must match the current resource etag or the request fails with ABORTED.`) + + cmd.Use = "delete MIGRATION_ID" + cmd.Short = `Delete a migration.` + cmd.Long = `Delete a migration. + + Deletes a migration (soft-delete). + + Allowed from any state. Deleting a migration marks the record deleted only — + it does not roll back a migration that already ran, and resources created + during the migration are not cleaned up. The migration resource is retained + for auditability. To stop an in-flight migration (agent teardown, transition + to CANCELLED), use CancelMigration instead. + + Returns NOT_FOUND if the migration does not exist, or was already deleted: a + deleted migration is hidden from every method (Get, Update, List, and Delete), + so it cannot be deleted again. Returns ABORTED if a supplied nonempty request + etag does not match the resource version. + + Arguments: + MIGRATION_ID: The ID of the migration to cancel.` + + 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) + + deleteReq.MigrationId = args[0] + + response, err := w.ComputeMigrations.Delete(ctx, deleteReq) + 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 deleteOverrides { + fn(cmd, &deleteReq) + } + + return cmd +} + +// start get 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 getOverrides []func( + *cobra.Command, + *computemigrations.GetMigrationRequest, +) + +func newGet() *cobra.Command { + cmd := &cobra.Command{} + + var getReq computemigrations.GetMigrationRequest + + cmd.Use = "get MIGRATION_ID" + cmd.Short = `Get a migration.` + cmd.Long = `Get a migration. + + Retrieves a migration by its ID. + + Returns the current state, configuration, and output artifacts of the + migration. Use this to poll migration progress or inspect artifacts after + state transitions. Returns NOT_FOUND if the migration does not exist in the + caller's workspace. + + Arguments: + MIGRATION_ID: The ID of the migration to retrieve.` + + 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) + + getReq.MigrationId = args[0] + + response, err := w.ComputeMigrations.Get(ctx, getReq) + 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 getOverrides { + fn(cmd, &getReq) + } + + return cmd +} + +// start list 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 listOverrides []func( + *cobra.Command, + *computemigrations.ListMigrationsRequest, +) + +func newList() *cobra.Command { + cmd := &cobra.Command{} + + var listReq computemigrations.ListMigrationsRequest + // Registered for all paginated methods. Validated at call time in the + // method-call template. Paginated list methods never have Wait or LRO + // branches, so the method-call path is always reached. + var listLimit int + + cmd.Flags().Var(&listReq.AssetType, "asset-type", `Filter by asset type. Supported values: [FILE, INTERACTIVE, JOB]`) + cmd.Flags().IntVar(&listReq.PageSize, "page-size", listReq.PageSize, `Maximum number of migrations to return.`) + // TODO: array: states + + // Limit flag for total result capping. + cmd.Flags().IntVar(&listLimit, "limit", 0, `Maximum number of results to return.`) + + // Hidden pagination flags (internal API parameters). + cmd.Flags().StringVar(&listReq.PageToken, "page-token", listReq.PageToken, `Pagination token.`) + cmd.Flags().Lookup("page-token").Hidden = true + + cmd.Use = "list" + cmd.Short = `List migrations.` + cmd.Long = `List migrations. + + Lists migrations in the caller's workspace, ordered by migration ID, with + cursor-based pagination and filtering by asset type and state. + + Eventually consistent: results are read from a cache, and pagination is not a + point-in-time snapshot, so a migration created during a List may not appear + until a subsequent one.` + + 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 := w.ComputeMigrations.List(ctx, listReq) + if listLimit < 0 { + return fmt.Errorf("--limit must be a non-negative integer, got %d", listLimit) + } + if listLimit > 0 { + ctx = cmdio.WithLimit(ctx, listLimit) + } + + return cmdio.RenderIterator(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 listOverrides { + fn(cmd, &listReq) + } + + return cmd +} + +// start reject-migration-execution 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 rejectMigrationExecutionOverrides []func( + *cobra.Command, + *computemigrations.RejectMigrationExecutionRequest, +) + +func newRejectMigrationExecution() *cobra.Command { + cmd := &cobra.Command{} + + var rejectMigrationExecutionReq computemigrations.RejectMigrationExecutionRequest + var rejectMigrationExecutionJson flags.JsonFlag + + cmd.Flags().Var(&rejectMigrationExecutionJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&rejectMigrationExecutionReq.Etag, "etag", rejectMigrationExecutionReq.Etag, `Optional resource version for optimistic concurrency control.`) + + cmd.Use = "reject-migration-execution MIGRATION_ID REJECTION_REASON" + cmd.Short = `Reject a migration execution.` + cmd.Long = `Reject a migration execution. + + Rejects migration execution at the MIGRATION_REVIEW gate, sending the + migration to REVISION_PENDING to loop back for re-planning. + + Valid only when the migration is in MIGRATION_REVIEW. If supplied, the etag + must match the current server value. + + Returns NOT_FOUND if the migration does not exist. Returns FAILED_PRECONDITION + if the migration is not in MIGRATION_REVIEW. Returns ABORTED if the etag does + not match the current resource version. + + Arguments: + MIGRATION_ID: The ID of the migration to reject. + REJECTION_REASON: Required free-text reason for the rejection, fed back into re-planning so + the next plan can address the user's concerns.` + + 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 errors.New("when --json flag is specified, provide only MIGRATION_ID as positional arguments. Provide 'rejection_reason' in your JSON input") + } + return nil + } + check := root.ExactArgs(2) + 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 := rejectMigrationExecutionJson.Unmarshal(&rejectMigrationExecutionReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + rejectMigrationExecutionReq.MigrationId = args[0] + if !cmd.Flags().Changed("json") { + rejectMigrationExecutionReq.RejectionReason = args[1] + } + + response, err := w.ComputeMigrations.RejectMigrationExecution(ctx, rejectMigrationExecutionReq) + 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 rejectMigrationExecutionOverrides { + fn(cmd, &rejectMigrationExecutionReq) + } + + return cmd +} + +// start reject-migration-translation 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 rejectMigrationTranslationOverrides []func( + *cobra.Command, + *computemigrations.RejectMigrationTranslationRequest, +) + +func newRejectMigrationTranslation() *cobra.Command { + cmd := &cobra.Command{} + + var rejectMigrationTranslationReq computemigrations.RejectMigrationTranslationRequest + var rejectMigrationTranslationJson flags.JsonFlag + + cmd.Flags().Var(&rejectMigrationTranslationJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&rejectMigrationTranslationReq.Etag, "etag", rejectMigrationTranslationReq.Etag, `Optional resource version for optimistic concurrency control.`) + + cmd.Use = "reject-migration-translation MIGRATION_ID REJECTION_REASON" + cmd.Short = `Reject a migration working copy.` + cmd.Long = `Reject a migration working copy. + + Rejects the working copy at the TRANSLATION_READY gate, sending the migration + to REVISION_PENDING to loop back for re-planning. + + Valid only when the migration is in TRANSLATION_READY. If supplied, the etag + must match the current server value. + + Returns NOT_FOUND if the migration does not exist. Returns FAILED_PRECONDITION + if the migration is not in TRANSLATION_READY. Returns ABORTED if the etag does + not match the current resource version. + + Arguments: + MIGRATION_ID: The ID of the migration to reject. + REJECTION_REASON: Required free-text reason for the rejection, fed back into re-planning so + the next plan can address the user's concerns.` + + 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 errors.New("when --json flag is specified, provide only MIGRATION_ID as positional arguments. Provide 'rejection_reason' in your JSON input") + } + return nil + } + check := root.ExactArgs(2) + 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 := rejectMigrationTranslationJson.Unmarshal(&rejectMigrationTranslationReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + rejectMigrationTranslationReq.MigrationId = args[0] + if !cmd.Flags().Changed("json") { + rejectMigrationTranslationReq.RejectionReason = args[1] + } + + response, err := w.ComputeMigrations.RejectMigrationTranslation(ctx, rejectMigrationTranslationReq) + 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 rejectMigrationTranslationOverrides { + fn(cmd, &rejectMigrationTranslationReq) + } + + return cmd +} + +// end service ComputeMigrations diff --git a/cmd/workspace/credentials/credentials.go b/cmd/workspace/credentials/credentials.go index 60348246c1b..0775db41324 100644 --- a/cmd/workspace/credentials/credentials.go +++ b/cmd/workspace/credentials/credentials.go @@ -567,15 +567,11 @@ func newValidateCredential() *cobra.Command { Validates a credential. - For service credentials (purpose is **SERVICE**), either the - __credential_name__ or the cloud-specific credential must be provided. - For storage credentials (purpose is **STORAGE**), at least one of __external_location_name__ and __url__ need to be provided. If only one of them is provided, it will be used for validation. And if both are provided, the __url__ will be used for validation, and __external_location_name__ will - be ignored when checking overlapping urls. Either the __credential_name__ or - the cloud-specific credential must be provided. + be ignored when checking overlapping urls. The caller must be a metastore admin or the credential owner or have the required permission on the metastore and the credential (e.g., diff --git a/cmd/workspace/data-quality/data-quality.go b/cmd/workspace/data-quality/data-quality.go index b7ed15b8acb..b54eaf0f660 100644 --- a/cmd/workspace/data-quality/data-quality.go +++ b/cmd/workspace/data-quality/data-quality.go @@ -21,18 +21,16 @@ var cmdOverrides []func(*cobra.Command) func New() *cobra.Command { cmd := &cobra.Command{ Use: "data-quality", - Short: `*Public Preview* Manage the data quality of Unity Catalog objects (currently support schema and table).`, - Long: `This command is in Public Preview and may change without notice. - -Manage the data quality of Unity Catalog objects (currently support schema + Short: `Manage the data quality of Unity Catalog objects (currently support schema and table).`, + Long: `Manage the data quality of Unity Catalog objects (currently support schema and table)`, GroupID: "dataquality", RunE: root.ReportUnknownSubcommand, } cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" // Add methods cmd.AddCommand(newCancelRefresh()) @@ -70,10 +68,8 @@ func newCancelRefresh() *cobra.Command { var cancelRefreshReq dataquality.CancelRefreshRequest cmd.Use = "cancel-refresh OBJECT_TYPE OBJECT_ID REFRESH_ID" - cmd.Short = `*Public Preview* Cancel a refresh.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Cancel a refresh. + cmd.Short = `Cancel a refresh.` + cmd.Long = `Cancel a refresh. Cancels a data quality monitor refresh. Currently only supported for the table object_type. The call must be made in the same workspace as where @@ -106,8 +102,8 @@ Cancel a refresh. REFRESH_ID: Unique id of the refresh operation.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(3) @@ -168,10 +164,8 @@ func newCreateMonitor() *cobra.Command { // TODO: complex arg: data_profiling_config cmd.Use = "create-monitor OBJECT_TYPE OBJECT_ID" - cmd.Short = `*Public Preview* Create a monitor.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Create a monitor. + cmd.Short = `Create a monitor.` + cmd.Long = `Create a monitor. Create a data quality monitor on a Unity Catalog object. The caller must provide either anomaly_detection_config for a schema monitor or @@ -212,8 +206,8 @@ Create a monitor. [table_id]: https://docs.databricks.com/api/workspace/tables/get#table_id` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("json") { @@ -290,10 +284,8 @@ func newCreateRefresh() *cobra.Command { cmd.Flags().Var(&createRefreshJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Use = "create-refresh OBJECT_TYPE OBJECT_ID" - cmd.Short = `*Public Preview* Create a refresh.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Create a refresh. + cmd.Short = `Create a refresh.` + cmd.Long = `Create a refresh. Creates a refresh. Currently only supported for the table object_type. The call must be made in the same workspace as where the monitor was created. @@ -324,8 +316,8 @@ Create a refresh. [table_id]: https://docs.databricks.com/api/workspace/tables/get#table_id` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(2) @@ -387,10 +379,8 @@ func newDeleteMonitor() *cobra.Command { var deleteMonitorReq dataquality.DeleteMonitorRequest cmd.Use = "delete-monitor OBJECT_TYPE OBJECT_ID" - cmd.Short = `*Public Preview* Delete a monitor.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Delete a monitor. + cmd.Short = `Delete a monitor.` + cmd.Long = `Delete a monitor. Delete a data quality monitor on Unity Catalog object. @@ -428,8 +418,8 @@ Delete a monitor. [table_id]: https://docs.databricks.com/api/workspace/tables/get#table_id` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(2) @@ -478,10 +468,8 @@ func newDeleteRefresh() *cobra.Command { var deleteRefreshReq dataquality.DeleteRefreshRequest cmd.Use = "delete-refresh OBJECT_TYPE OBJECT_ID REFRESH_ID" - cmd.Short = `*Public Preview* Delete a refresh.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Delete a refresh. + cmd.Short = `Delete a refresh.` + cmd.Long = `Delete a refresh. (Unimplemented) Delete a refresh @@ -505,8 +493,8 @@ Delete a refresh. REFRESH_ID: Unique id of the refresh operation.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(3) @@ -559,10 +547,8 @@ func newGetMonitor() *cobra.Command { var getMonitorReq dataquality.GetMonitorRequest cmd.Use = "get-monitor OBJECT_TYPE OBJECT_ID" - cmd.Short = `*Public Preview* Read a monitor.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Read a monitor. + cmd.Short = `Read a monitor.` + cmd.Long = `Read a monitor. Read a data quality monitor on a Unity Catalog object. @@ -602,8 +588,8 @@ Read a monitor. [table_id]: https://docs.databricks.com/api/workspace/tables/get#table_id` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(2) @@ -653,10 +639,8 @@ func newGetRefresh() *cobra.Command { var getRefreshReq dataquality.GetRefreshRequest cmd.Use = "get-refresh OBJECT_TYPE OBJECT_ID REFRESH_ID" - cmd.Short = `*Public Preview* Get a refresh.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Get a refresh. + cmd.Short = `Get a refresh.` + cmd.Long = `Get a refresh. Get data quality monitor refresh. The call must be made in the same workspace as where the monitor was created. @@ -693,8 +677,8 @@ Get a refresh. REFRESH_ID: Unique id of the refresh operation.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(3) @@ -761,16 +745,14 @@ func newListMonitor() *cobra.Command { cmd.Flags().Lookup("page-token").Hidden = true cmd.Use = "list-monitor" - cmd.Short = `*Public Preview* List monitors.` - cmd.Long = `This command is in Public Preview and may change without notice. - -List monitors. + cmd.Short = `List monitors.` + cmd.Long = `List monitors. (Unimplemented) List data quality monitors.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(0) @@ -833,10 +815,8 @@ func newListRefresh() *cobra.Command { cmd.Flags().Lookup("page-token").Hidden = true cmd.Use = "list-refresh OBJECT_TYPE OBJECT_ID" - cmd.Short = `*Public Preview* List refreshes.` - cmd.Long = `This command is in Public Preview and may change without notice. - -List refreshes. + cmd.Short = `List refreshes.` + cmd.Long = `List refreshes. List data quality monitor refreshes. The call must be made in the same workspace as where the monitor was created. @@ -872,8 +852,8 @@ List refreshes. [table_id]: https://docs.databricks.com/api/workspace/tables/get#table_id` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(2) @@ -933,10 +913,8 @@ func newUpdateMonitor() *cobra.Command { // TODO: complex arg: data_profiling_config cmd.Use = "update-monitor OBJECT_TYPE OBJECT_ID UPDATE_MASK OBJECT_TYPE OBJECT_ID" - cmd.Short = `*Public Preview* Update a monitor.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Update a monitor. + cmd.Short = `Update a monitor.` + cmd.Long = `Update a monitor. Update a data quality monitor on Unity Catalog object. @@ -990,8 +968,8 @@ Update a monitor. [table_id]: https://docs.databricks.com/api/workspace/tables/get#table_id` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("json") { @@ -1071,10 +1049,8 @@ func newUpdateRefresh() *cobra.Command { cmd.Flags().Var(&updateRefreshJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Use = "update-refresh OBJECT_TYPE OBJECT_ID REFRESH_ID UPDATE_MASK OBJECT_TYPE OBJECT_ID" - cmd.Short = `*Public Preview* Update a refresh.` - cmd.Long = `This command is in Public Preview and may change without notice. - -Update a refresh. + cmd.Short = `Update a refresh.` + cmd.Long = `Update a refresh. (Unimplemented) Update a refresh @@ -1115,8 +1091,8 @@ Update a refresh. [table_id]: https://docs.databricks.com/api/workspace/tables/get#table_id` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Public Preview" + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" cmd.Args = func(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("json") { diff --git a/cmd/workspace/feature-engineering/feature-engineering.go b/cmd/workspace/feature-engineering/feature-engineering.go index d0a534b232d..aa23ee61e06 100644 --- a/cmd/workspace/feature-engineering/feature-engineering.go +++ b/cmd/workspace/feature-engineering/feature-engineering.go @@ -498,6 +498,7 @@ func newCreateMaterializationSet() *cobra.Command { cmd.Flags().StringVar(&createMaterializationSetReq.RequestId, "request-id", createMaterializationSetReq.RequestId, `Idempotency token for the request.`) cmd.Flags().StringVar(&createMaterializationSetReq.MaterializationSet.MaterializationSetId, "materialization-set-id", createMaterializationSetReq.MaterializationSet.MaterializationSetId, `Server-assigned unique identifier for the materialization set.`) // TODO: array: materialized_features + // TODO: complex arg: notifications cmd.Use = "create-materialization-set" cmd.Short = `Create a materialization set.` @@ -613,7 +614,7 @@ func newCreateMaterializedFeature() *cobra.Command { // TODO: complex arg: notifications // TODO: complex arg: offline_store_config // TODO: complex arg: online_store_config - cmd.Flags().Var(&createMaterializedFeatureReq.MaterializedFeature.PipelineScheduleState, "pipeline-schedule-state", `The schedule state of the materialization pipeline. Supported values: [ACTIVE, PAUSED, SNAPSHOT]`) + cmd.Flags().Var(&createMaterializedFeatureReq.MaterializedFeature.PipelineScheduleState, "pipeline-schedule-state", `Deprecated: This legacy pipeline setting does not control batch job scheduling. Supported values: [ACTIVE, PAUSED, SNAPSHOT]`) // TODO: complex arg: streaming_mode // TODO: complex arg: table_trigger // TODO: map via StringToStringVar: tags @@ -2175,6 +2176,7 @@ func newUpdateMaterializationSet() *cobra.Command { cmd.Flags().StringVar(&updateMaterializationSetReq.RequestId, "request-id", updateMaterializationSetReq.RequestId, `Idempotency token for the request.`) cmd.Flags().StringVar(&updateMaterializationSetReq.MaterializationSet.MaterializationSetId, "materialization-set-id", updateMaterializationSetReq.MaterializationSet.MaterializationSetId, `Server-assigned unique identifier for the materialization set.`) // TODO: array: materialized_features + // TODO: complex arg: notifications cmd.Use = "update-materialization-set MATERIALIZATION_SET_ID UPDATE_MASK" cmd.Short = `Update a materialization set.` @@ -2191,7 +2193,7 @@ func newUpdateMaterializationSet() *cobra.Command { Arguments: MATERIALIZATION_SET_ID: Server-assigned unique identifier for the materialization set. - UPDATE_MASK: The fields to update. Only 'materialized_features' is supported.` + UPDATE_MASK: The fields to update. Only 'materialized_features' or '*' is supported.` // This command is being previewed; hide from help output. cmd.Hidden = true @@ -2303,7 +2305,7 @@ func newUpdateMaterializedFeature() *cobra.Command { // TODO: complex arg: notifications // TODO: complex arg: offline_store_config // TODO: complex arg: online_store_config - cmd.Flags().Var(&updateMaterializedFeatureReq.MaterializedFeature.PipelineScheduleState, "pipeline-schedule-state", `The schedule state of the materialization pipeline. Supported values: [ACTIVE, PAUSED, SNAPSHOT]`) + cmd.Flags().Var(&updateMaterializedFeatureReq.MaterializedFeature.PipelineScheduleState, "pipeline-schedule-state", `Deprecated: This legacy pipeline setting does not control batch job scheduling. Supported values: [ACTIVE, PAUSED, SNAPSHOT]`) // TODO: complex arg: streaming_mode // TODO: complex arg: table_trigger // TODO: map via StringToStringVar: tags @@ -2312,12 +2314,11 @@ func newUpdateMaterializedFeature() *cobra.Command { cmd.Short = `Update a materialized feature.` cmd.Long = `Update a materialized feature. - Update a materialized feature (pause/resume). + Updates a materialized feature. Arguments: MATERIALIZED_FEATURE_ID: Server-assigned unique identifier for the materialized feature. - UPDATE_MASK: Provide the materialization feature fields which should be updated. - Currently, only the pipeline_state field can be updated. + UPDATE_MASK: The fields to update. Only pipeline_schedule_state is supported. FEATURE_NAME: The full name of the feature in Unity Catalog.` cmd.Annotations = make(map[string]string) diff --git a/cmd/workspace/genie-agents/genie-agents.go b/cmd/workspace/genie-agents/genie-agents.go new file mode 100644 index 00000000000..d7d9e866c50 --- /dev/null +++ b/cmd/workspace/genie-agents/genie-agents.go @@ -0,0 +1,499 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package genie_agents + +import ( + "errors" + "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/genieagents" + "github.com/spf13/cobra" +) + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var cmdOverrides []func(*cobra.Command) + +func New() *cobra.Command { + cmd := &cobra.Command{ + Use: "genie-agents", + Short: `Genie provides a no-code experience for business users, powered by AI/BI.`, + Long: `Genie provides a no-code experience for business users, powered by AI/BI. + Analysts set up Genie Agents that business users can use to ask questions + using natural language. Genie uses data registered to Unity Catalog and + requires at least CAN USE permission on a Pro or Serverless SQL warehouse. + Also, Databricks Assistant must be enabled.`, + GroupID: "dashboards", + + // This service is being previewed; hide from help output. + Hidden: true, + RunE: root.ReportUnknownSubcommand, + } + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Private Preview" + + // Add methods + cmd.AddCommand(newCreateGenieAgent()) + cmd.AddCommand(newDeleteGenieAgent()) + cmd.AddCommand(newGetGenieAgent()) + cmd.AddCommand(newListGenieAgents()) + cmd.AddCommand(newUpdateGenieAgent()) + + // Apply optional overrides to this command. + for _, fn := range cmdOverrides { + fn(cmd) + } + + return cmd +} + +// start create-genie-agent 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 createGenieAgentOverrides []func( + *cobra.Command, + *genieagents.CreateGenieAgentRequest, +) + +func newCreateGenieAgent() *cobra.Command { + cmd := &cobra.Command{} + + var createGenieAgentReq genieagents.CreateGenieAgentRequest + createGenieAgentReq.GenieAgent = genieagents.GenieAgent{} + var createGenieAgentJson flags.JsonFlag + + cmd.Flags().Var(&createGenieAgentJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&createGenieAgentReq.GenieAgentId, "genie-agent-id", createGenieAgentReq.GenieAgentId, `The ID for the new Genie Agent: 32 lowercase hexadecimal characters (a UUID without dashes), not all zeros.`) + cmd.Flags().StringVar(&createGenieAgentReq.GenieAgent.Description, "description", createGenieAgentReq.GenieAgent.Description, `Description of the Genie Agent.`) + cmd.Flags().StringVar(&createGenieAgentReq.GenieAgent.Name, "name", createGenieAgentReq.GenieAgent.Name, `The resource name of the Genie Agent, in the form agents/{genie_agent_id}.`) + cmd.Flags().StringVar(&createGenieAgentReq.GenieAgent.ParentPath, "parent-path", createGenieAgentReq.GenieAgent.ParentPath, `The workspace folder to create the Genie Agent in.`) + + cmd.Use = "create-genie-agent DISPLAY_NAME DEFINITION WAREHOUSE_ID" + cmd.Short = `Create Genie Agent.` + cmd.Long = `Create Genie Agent. + + Creates a Genie Agent. + + Arguments: + DISPLAY_NAME: Display name of the Genie Agent. Must be unique within its folder + (effective_parent_path): a create, rename, or move that would collide with + an existing Genie Agent's name in the target folder is rejected with + ALREADY_EXISTS. + + The maximum length is 63 characters. Requests with a longer value are + rejected with INVALID_PARAMETER_VALUE. + DEFINITION: The definition of the Genie Agent: its sample questions, data sources, + instructions, and benchmarks. Must set at least one field. Returned on get + and on list with GENIE_AGENT_VIEW_FULL. Create and update return a + submitted definition unchanged; one the service would store differently, + or with a column config the workspace can't keep (unknown column, or a + display name while those are disabled), is rejected with + INVALID_PARAMETER_VALUE. + WAREHOUSE_ID: Warehouse associated with the Genie Agent.` + + 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 errors.New("when --json flag is specified, no positional arguments are allowed. Provide 'display_name', 'definition', 'warehouse_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 := createGenieAgentJson.Unmarshal(&createGenieAgentReq.GenieAgent) + 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") { + createGenieAgentReq.GenieAgent.DisplayName = args[0] + } + if !cmd.Flags().Changed("json") { + _, err = fmt.Sscan(args[1], &createGenieAgentReq.GenieAgent.Definition) + if err != nil { + return fmt.Errorf("invalid DEFINITION: %s", args[1]) + } + + } + if !cmd.Flags().Changed("json") { + createGenieAgentReq.GenieAgent.WarehouseId = args[2] + } + + response, err := w.GenieAgents.CreateGenieAgent(ctx, createGenieAgentReq) + 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 createGenieAgentOverrides { + fn(cmd, &createGenieAgentReq) + } + + return cmd +} + +// start delete-genie-agent 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 deleteGenieAgentOverrides []func( + *cobra.Command, + *genieagents.DeleteGenieAgentRequest, +) + +func newDeleteGenieAgent() *cobra.Command { + cmd := &cobra.Command{} + + var deleteGenieAgentReq genieagents.DeleteGenieAgentRequest + + cmd.Flags().StringVar(&deleteGenieAgentReq.Etag, "etag", deleteGenieAgentReq.Etag, `Etag from a previous read.`) + + cmd.Use = "delete-genie-agent NAME" + cmd.Short = `Delete Genie Agent.` + cmd.Long = `Delete Genie Agent. + + Deletes a Genie Agent, moving it to trash. + + Arguments: + NAME: The resource name of the Genie Agent to delete, in the form + agents/{genie_agent_id}.` + + 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) + + deleteGenieAgentReq.Name = args[0] + + err = w.GenieAgents.DeleteGenieAgent(ctx, deleteGenieAgentReq) + 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 deleteGenieAgentOverrides { + fn(cmd, &deleteGenieAgentReq) + } + + return cmd +} + +// start get-genie-agent 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 getGenieAgentOverrides []func( + *cobra.Command, + *genieagents.GetGenieAgentRequest, +) + +func newGetGenieAgent() *cobra.Command { + cmd := &cobra.Command{} + + var getGenieAgentReq genieagents.GetGenieAgentRequest + + cmd.Use = "get-genie-agent NAME" + cmd.Short = `Get Genie Agent.` + cmd.Long = `Get Genie Agent. + + Gets a Genie Agent. + + Arguments: + NAME: The resource name of the Genie Agent to retrieve, in the form + agents/{genie_agent_id}.` + + 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) + + getGenieAgentReq.Name = args[0] + + response, err := w.GenieAgents.GetGenieAgent(ctx, getGenieAgentReq) + 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 getGenieAgentOverrides { + fn(cmd, &getGenieAgentReq) + } + + return cmd +} + +// start list-genie-agents 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 listGenieAgentsOverrides []func( + *cobra.Command, + *genieagents.ListGenieAgentsRequest, +) + +func newListGenieAgents() *cobra.Command { + cmd := &cobra.Command{} + + var listGenieAgentsReq genieagents.ListGenieAgentsRequest + // Registered for all paginated methods. Validated at call time in the + // method-call template. Paginated list methods never have Wait or LRO + // branches, so the method-call path is always reached. + var listGenieAgentsLimit int + + cmd.Flags().IntVar(&listGenieAgentsReq.PageSize, "page-size", listGenieAgentsReq.PageSize, `Maximum number of Genie Agents to return per page.`) + cmd.Flags().Var(&listGenieAgentsReq.View, "view", `The fields to return for each Genie Agent. Supported values: [GENIE_AGENT_VIEW_BASIC, GENIE_AGENT_VIEW_FULL]`) + + // Limit flag for total result capping. + cmd.Flags().IntVar(&listGenieAgentsLimit, "limit", 0, `Maximum number of results to return.`) + + // Hidden pagination flags (internal API parameters). + cmd.Flags().StringVar(&listGenieAgentsReq.PageToken, "page-token", listGenieAgentsReq.PageToken, `Pagination token.`) + cmd.Flags().Lookup("page-token").Hidden = true + + cmd.Use = "list-genie-agents" + cmd.Short = `List Genie Agents.` + cmd.Long = `List Genie Agents. + + Lists the Genie Agents in the workspace. Genie Agents created from an + integration (for example, from a dashboard) are not listed.` + + 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 := w.GenieAgents.ListGenieAgents(ctx, listGenieAgentsReq) + if listGenieAgentsLimit < 0 { + return fmt.Errorf("--limit must be a non-negative integer, got %d", listGenieAgentsLimit) + } + if listGenieAgentsLimit > 0 { + ctx = cmdio.WithLimit(ctx, listGenieAgentsLimit) + } + + return cmdio.RenderIterator(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 listGenieAgentsOverrides { + fn(cmd, &listGenieAgentsReq) + } + + return cmd +} + +// start update-genie-agent 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 updateGenieAgentOverrides []func( + *cobra.Command, + *genieagents.UpdateGenieAgentRequest, +) + +func newUpdateGenieAgent() *cobra.Command { + cmd := &cobra.Command{} + + var updateGenieAgentReq genieagents.UpdateGenieAgentRequest + updateGenieAgentReq.GenieAgent = genieagents.GenieAgent{} + var updateGenieAgentJson flags.JsonFlag + + cmd.Flags().Var(&updateGenieAgentJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Flags().StringVar(&updateGenieAgentReq.Etag, "etag", updateGenieAgentReq.Etag, `Etag from a previous read.`) + cmd.Flags().StringVar(&updateGenieAgentReq.GenieAgent.Description, "description", updateGenieAgentReq.GenieAgent.Description, `Description of the Genie Agent.`) + cmd.Flags().StringVar(&updateGenieAgentReq.GenieAgent.Name, "name", updateGenieAgentReq.GenieAgent.Name, `The resource name of the Genie Agent, in the form agents/{genie_agent_id}.`) + cmd.Flags().StringVar(&updateGenieAgentReq.GenieAgent.ParentPath, "parent-path", updateGenieAgentReq.GenieAgent.ParentPath, `The workspace folder to create the Genie Agent in.`) + + cmd.Use = "update-genie-agent NAME UPDATE_MASK DISPLAY_NAME DEFINITION WAREHOUSE_ID" + cmd.Short = `Update Genie Agent.` + cmd.Long = `Update Genie Agent. + + Updates a Genie Agent. Only the fields named in update_mask are applied. + + Arguments: + NAME: The resource name of the Genie Agent, in the form + agents/{genie_agent_id}. Ignored on create. + UPDATE_MASK: The set of fields to update. The mask is required and must name at least + one field; an empty or absent mask is rejected with + INVALID_PARAMETER_VALUE, as is a path that is not an updatable field. + + A field named in the mask takes the value from genie_agent, even when it + is unset there: an unset description is cleared; an unset + display_name, warehouse_id, or definition is rejected with + INVALID_PARAMETER_VALUE; an unset parent_path is cleared without moving + the Genie Agent. definition is replaced as a whole; paths within it are + not supported. + + The special value * replaces the whole Genie Agent, as if every + updatable field were named. It must be the only path in the mask. Prefer + naming fields explicitly: with *, any field added to Genie Agent later + is also replaced, so a client unaware of it may clear it. + DISPLAY_NAME: Display name of the Genie Agent. Must be unique within its folder + (effective_parent_path): a create, rename, or move that would collide with + an existing Genie Agent's name in the target folder is rejected with + ALREADY_EXISTS. + + The maximum length is 63 characters. Requests with a longer value are + rejected with INVALID_PARAMETER_VALUE. + DEFINITION: The definition of the Genie Agent: its sample questions, data sources, + instructions, and benchmarks. Must set at least one field. Returned on get + and on list with GENIE_AGENT_VIEW_FULL. Create and update return a + submitted definition unchanged; one the service would store differently, + or with a column config the workspace can't keep (unknown column, or a + display name while those are disabled), is rejected with + INVALID_PARAMETER_VALUE. + WAREHOUSE_ID: Warehouse associated with the Genie Agent.` + + 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 errors.New("when --json flag is specified, provide only NAME, UPDATE_MASK as positional arguments. Provide 'display_name', 'definition', 'warehouse_id' in your JSON input") + } + return nil + } + check := root.ExactArgs(5) + 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 := updateGenieAgentJson.Unmarshal(&updateGenieAgentReq.GenieAgent) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + updateGenieAgentReq.Name = args[0] + if args[1] != "" { + updateMaskArray := strings.Split(args[1], ",") + updateGenieAgentReq.UpdateMask = *fieldmask.New(updateMaskArray) + } + if !cmd.Flags().Changed("json") { + updateGenieAgentReq.GenieAgent.DisplayName = args[2] + } + if !cmd.Flags().Changed("json") { + _, err = fmt.Sscan(args[3], &updateGenieAgentReq.GenieAgent.Definition) + if err != nil { + return fmt.Errorf("invalid DEFINITION: %s", args[3]) + } + + } + if !cmd.Flags().Changed("json") { + updateGenieAgentReq.GenieAgent.WarehouseId = args[4] + } + + response, err := w.GenieAgents.UpdateGenieAgent(ctx, updateGenieAgentReq) + 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 updateGenieAgentOverrides { + fn(cmd, &updateGenieAgentReq) + } + + return cmd +} + +// end service GenieAgents diff --git a/cmd/workspace/policies/policies.go b/cmd/workspace/policies/policies.go index a8bc998c1ab..c615faaed57 100644 --- a/cmd/workspace/policies/policies.go +++ b/cmd/workspace/policies/policies.go @@ -88,6 +88,7 @@ func newCreatePolicy() *cobra.Command { CREDENTIAL, EXTERNAL_LOCATION, EXTERNAL_METADATA, + FEATURE, FUNCTION, MCP_SERVICE, METASTORE, @@ -128,6 +129,7 @@ func newCreatePolicy() *cobra.Command { CREDENTIAL, EXTERNAL_LOCATION, EXTERNAL_METADATA, + FEATURE, FUNCTION, MCP_SERVICE, METASTORE, @@ -470,6 +472,7 @@ func newUpdatePolicy() *cobra.Command { CREDENTIAL, EXTERNAL_LOCATION, EXTERNAL_METADATA, + FEATURE, FUNCTION, MCP_SERVICE, METASTORE, @@ -513,6 +516,7 @@ func newUpdatePolicy() *cobra.Command { CREDENTIAL, EXTERNAL_LOCATION, EXTERNAL_METADATA, + FEATURE, FUNCTION, MCP_SERVICE, METASTORE, diff --git a/cmd/workspace/postgres/postgres.go b/cmd/workspace/postgres/postgres.go index 8d17ca5e04f..1c11e863bf1 100644 --- a/cmd/workspace/postgres/postgres.go +++ b/cmd/workspace/postgres/postgres.go @@ -4866,7 +4866,13 @@ func newUpdateRole() *cobra.Command { cmd.Short = `Update a Postgres Role for a Branch.` cmd.Long = `Update a Postgres Role for a Branch. - Update a role for a branch. + Updates the mutable fields of a Postgres role for a branch. + + The fields spec.identity_type, spec.auth_method, and spec.postgres_role + are fixed when the role is created. UpdateRole ignores values supplied for + these fields in the request body and retains their existing values. Explicitly + naming one of these fields in update_mask returns an INVALID_PARAMETER_VALUE + error. This is a long-running operation. By default, the command waits for the operation to complete. Use --no-wait to return immediately with the raw @@ -4876,7 +4882,21 @@ func newUpdateRole() *cobra.Command { Arguments: NAME: Output only. The full resource path of the role. Format: projects/{project_id}/branches/{branch_id}/roles/{role_id} - UPDATE_MASK: The list of fields to update.` + UPDATE_MASK: The list of fields to update. Supported fields are + spec.membership_roles, spec.attributes.createdb, + spec.attributes.createrole, and spec.attributes.bypassrls. + + spec.identity_type, spec.auth_method, and spec.postgres_role cannot + be changed. Values supplied for these fields in the request body are + ignored. Including one of these fields as an explicit path in update_mask + returns an INVALID_PARAMETER_VALUE error. When spec is the only path in + the mask, only the supplied mutable attributes are updated. * by itself, + or spec combined with other supported paths, selects all supported + mutable fields. For these masks, all three attributes (createdb, + createrole, and bypassrls) must be supplied; omitting any returns an + INVALID_PARAMETER_VALUE error. Each of these mask forms replaces + membership_roles. Omitting it or supplying an empty list clears all + memberships, including DATABRICKS_SUPERUSER.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "GA" diff --git a/go.mod b/go.mod index dac857aa087..eadf1cb5f8f 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.9 // MIT - github.com/databricks/databricks-sdk-go v0.191.1 // Apache-2.0 + github.com/databricks/databricks-sdk-go v0.193.0 // Apache-2.0 github.com/databricks/sdk-go/auth v0.2.0 // Apache-2.0 github.com/databricks/sdk-go/core v0.1.0 // Apache-2.0 github.com/databricks/sdk-go/files v0.3.0 // Apache-2.0 diff --git a/go.sum b/go.sum index 6e912bf0938..b0450ebbcbb 100644 --- a/go.sum +++ b/go.sum @@ -59,8 +59,8 @@ github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= 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.191.1 h1:t7aE9PTQEwuPS1CRoVwpDW0jDuDuX9GD53gpRWRmJEE= -github.com/databricks/databricks-sdk-go v0.191.1/go.mod h1:udBw6nxkaqa0fgPQ7ZW1kGFkltQncYx+qFJeVFmxtz8= +github.com/databricks/databricks-sdk-go v0.193.0 h1:lxMaFEKO4PErcg9E2CBnLQGbzwrFYA3kK9S//HZM9mM= +github.com/databricks/databricks-sdk-go v0.193.0/go.mod h1:udBw6nxkaqa0fgPQ7ZW1kGFkltQncYx+qFJeVFmxtz8= github.com/databricks/sdk-go/auth v0.2.0 h1:543fVMvJ6pVxBymfjGGkkmfiHDbUqX7y9lZseEcE4tQ= github.com/databricks/sdk-go/auth v0.2.0/go.mod h1:eNJdFzBAfu1y32a3wPcTnjaUkjhS9VfyCNblKFPIPEo= github.com/databricks/sdk-go/core v0.1.0 h1:ZolzW/KVIJy1xXQ0zTsu/QYsEB4vQAEApbbq4D3RGHc= From c4480ea8da7d8e951c2783387589e856beb4b3d2 Mon Sep 17 00:00:00 2001 From: Pieter Noordhuis Date: Tue, 3 Nov 2026 08:34:04 +0100 Subject: [PATCH 2/3] Regenerate downstream of cli.json for Go SDK v0.193.0 - Exclude byte-stream upload-file (sandbox) from cligen; its io.ReadCloser body crashed rendering and blocked all regeneration - Regenerate command stubs, schema, validation, pydabs, refschema - Add PR link to changelog fragment Co-authored-by: Isaac --- .gitattributes | 2 + .../dependency-updates/go-sdk-v0.193.0.md | 2 +- acceptance/bundle/refschema/output/jobs.txt | 108 +++ .../validation/generated/enum_fields.go | 26 +- .../validation/generated/required_fields.go | 20 + bundle/schema/jsonschema.json | 640 ++++++++++++++++-- cmd/workspace/sandbox/sandbox.go | 90 +++ .../storage-credentials.go | 3 - cmd/workspace/volumes/volumes.go | 6 +- .../workspace-iam-v2/workspace-iam-v2.go | 240 ++++--- internal/cligen/templates/service.go.tmpl | 2 +- .../bundles/alerts/_models/alert.py | 4 +- .../_models/alert_statement_parameter.py | 14 +- .../bundles/catalogs/_models/privilege.py | 4 + .../external_locations/_models/privilege.py | 4 + .../bundles/features/_models/time_window.py | 6 +- python/databricks/bundles/jobs/__init__.py | 114 ++++ .../jobs/_models/ai_classify_function.py | 128 ++++ .../ai_classify_function_inline_labels.py | 56 ++ .../_models/ai_classify_function_label.py | 62 ++ .../jobs/_models/ai_extract_function.py | 138 ++++ .../jobs/_models/ai_extract_function_mode.py | 17 + .../bundles/jobs/_models/ai_function_task.py | 144 ++++ .../_models/ai_parse_document_function.py | 108 +++ ...ument_function_description_element_type.py | 21 + .../bundles/jobs/_models/dashboard_task.py | 5 +- .../jobs/_models/delta_table_source.py | 86 +++ .../bundles/jobs/_models/environment.py | 24 +- python/databricks/bundles/jobs/_models/job.py | 15 +- .../bundles/jobs/_models/job_cluster.py | 22 + .../_models/job_cluster_serverless_compute.py | 48 ++ .../job_completion_trigger_configuration.py | 74 ++ ...pletion_trigger_configuration_if_status.py | 19 + ...ion_trigger_configuration_monitored_job.py | 71 ++ .../bundles/jobs/_models/qualified_name.py | 76 +++ .../bundles/jobs/_models/subscription.py | 8 +- .../jobs/_models/subscription_attachment.py | 16 +- ...subscription_attachment_data_attachment.py | 24 +- ...ption_attachment_data_attachment_widget.py | 16 +- ...subscription_attachment_page_attachment.py | 16 +- .../databricks/bundles/jobs/_models/task.py | 28 +- .../jobs/_models/trigger_configuration.py | 18 + .../bundles/jobs/_models/trigger_settings.py | 18 + .../bundles/jobs/_models/volume_source.py | 50 ++ .../bundles/mcp_services/_models/privilege.py | 4 + .../_models/privilege.py | 4 + .../model_services/_models/privilege.py | 4 + .../registered_models/_models/privilege.py | 4 + .../bundles/schemas/_models/privilege.py | 4 + .../bundles/secrets/_models/privilege.py | 4 + .../sql_warehouses/_models/sql_warehouse.py | 8 +- .../_models/privilege.py | 4 + .../bundles/volumes/_models/privilege.py | 4 + 53 files changed, 2346 insertions(+), 287 deletions(-) create mode 100644 python/databricks/bundles/jobs/_models/ai_classify_function.py create mode 100644 python/databricks/bundles/jobs/_models/ai_classify_function_inline_labels.py create mode 100644 python/databricks/bundles/jobs/_models/ai_classify_function_label.py create mode 100644 python/databricks/bundles/jobs/_models/ai_extract_function.py create mode 100644 python/databricks/bundles/jobs/_models/ai_extract_function_mode.py create mode 100644 python/databricks/bundles/jobs/_models/ai_function_task.py create mode 100644 python/databricks/bundles/jobs/_models/ai_parse_document_function.py create mode 100644 python/databricks/bundles/jobs/_models/ai_parse_document_function_description_element_type.py create mode 100644 python/databricks/bundles/jobs/_models/delta_table_source.py create mode 100644 python/databricks/bundles/jobs/_models/job_cluster_serverless_compute.py create mode 100644 python/databricks/bundles/jobs/_models/job_completion_trigger_configuration.py create mode 100644 python/databricks/bundles/jobs/_models/job_completion_trigger_configuration_if_status.py create mode 100644 python/databricks/bundles/jobs/_models/job_completion_trigger_configuration_monitored_job.py create mode 100644 python/databricks/bundles/jobs/_models/qualified_name.py create mode 100644 python/databricks/bundles/jobs/_models/volume_source.py diff --git a/.gitattributes b/.gitattributes index 19fa804e1c0..9fca42cbb56 100644 --- a/.gitattributes +++ b/.gitattributes @@ -70,6 +70,7 @@ cmd/workspace/cluster-policies/cluster-policies.go linguist-generated=true cmd/workspace/clusters/clusters.go linguist-generated=true cmd/workspace/cmd.go linguist-generated=true cmd/workspace/compliance-security-profile/compliance-security-profile.go linguist-generated=true +cmd/workspace/compute-migrations/compute-migrations.go linguist-generated=true cmd/workspace/connections/connections.go linguist-generated=true cmd/workspace/consumer-fulfillments/consumer-fulfillments.go linguist-generated=true cmd/workspace/consumer-installations/consumer-installations.go linguist-generated=true @@ -105,6 +106,7 @@ cmd/workspace/feature-engineering/feature-engineering.go linguist-generated=true cmd/workspace/feature-store/feature-store.go linguist-generated=true cmd/workspace/forecasting/forecasting.go linguist-generated=true cmd/workspace/functions/functions.go linguist-generated=true +cmd/workspace/genie-agents/genie-agents.go linguist-generated=true cmd/workspace/genie/genie.go linguist-generated=true cmd/workspace/git-credentials/git-credentials.go linguist-generated=true cmd/workspace/global-init-scripts/global-init-scripts.go linguist-generated=true diff --git a/.nextchanges/dependency-updates/go-sdk-v0.193.0.md b/.nextchanges/dependency-updates/go-sdk-v0.193.0.md index 3123b7969d1..b6a5f8bb2ca 100644 --- a/.nextchanges/dependency-updates/go-sdk-v0.193.0.md +++ b/.nextchanges/dependency-updates/go-sdk-v0.193.0.md @@ -1 +1 @@ -* Update the Go SDK to [v0.193.0](https://github.com/databricks/databricks-sdk-go/releases/tag/v0.193.0). +* Update the Go SDK to [v0.193.0](https://github.com/databricks/databricks-sdk-go/releases/tag/v0.193.0). ([#7303](https://github.com/databricks/cli/pull/7303)) diff --git a/acceptance/bundle/refschema/output/jobs.txt b/acceptance/bundle/refschema/output/jobs.txt index a3cc1d5f8f9..06a058987fd 100644 --- a/acceptance/bundle/refschema/output/jobs.txt +++ b/acceptance/bundle/refschema/output/jobs.txt @@ -193,6 +193,8 @@ resources.jobs.*.job_clusters[*].new_cluster.workload_type *compute.WorkloadType resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients compute.ClientsTypes ALL resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.jobs bool ALL resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.notebooks bool ALL +resources.jobs.*.job_clusters[*].serverless_compute *jobs.JobClusterServerlessCompute ALL +resources.jobs.*.job_clusters[*].serverless_compute.policy_id string ALL resources.jobs.*.job_clusters[*].serverless_compute_id string ALL resources.jobs.*.job_id int64 REMOTE resources.jobs.*.lifecycle resources.Lifecycle INPUT @@ -231,6 +233,42 @@ resources.jobs.*.tags map[string]string ALL resources.jobs.*.tags.* string ALL resources.jobs.*.tasks []jobs.Task ALL resources.jobs.*.tasks[*] jobs.Task ALL +resources.jobs.*.tasks[*].ai_function_task *jobs.AiFunctionTask ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify *jobs.AiClassifyFunction ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.enable_confidence_scores bool ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.enable_rationales bool ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels *jobs.AiClassifyFunctionInlineLabels ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels []jobs.AiClassifyFunctionLabel ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*] jobs.AiClassifyFunctionLabel ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*].description string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*].name string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.instructions string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.multilabel bool ALL +resources.jobs.*.tasks[*].ai_function_task.ai_classify.version string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_extract *jobs.AiExtractFunction ALL +resources.jobs.*.tasks[*].ai_function_task.ai_extract.enable_citations bool ALL +resources.jobs.*.tasks[*].ai_function_task.ai_extract.enable_confidence_scores bool ALL +resources.jobs.*.tasks[*].ai_function_task.ai_extract.instructions string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_extract.mode jobs.AiExtractFunctionMode ALL +resources.jobs.*.tasks[*].ai_function_task.ai_extract.schema string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_extract.version string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document *jobs.AiParseDocumentFunction ALL +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.description_element_types []jobs.AiParseDocumentFunctionDescriptionElementType ALL +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.description_element_types[*] jobs.AiParseDocumentFunctionDescriptionElementType ALL +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.image_output_path string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.page_range string ALL +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.version string ALL +resources.jobs.*.tasks[*].ai_function_task.delta_table *jobs.DeltaTableSource ALL +resources.jobs.*.tasks[*].ai_function_task.delta_table.input_column string ALL +resources.jobs.*.tasks[*].ai_function_task.delta_table.merge_key_columns []string ALL +resources.jobs.*.tasks[*].ai_function_task.delta_table.merge_key_columns[*] string ALL +resources.jobs.*.tasks[*].ai_function_task.delta_table.table_name string ALL +resources.jobs.*.tasks[*].ai_function_task.output jobs.QualifiedName ALL +resources.jobs.*.tasks[*].ai_function_task.output.catalog string ALL +resources.jobs.*.tasks[*].ai_function_task.output.schema string ALL +resources.jobs.*.tasks[*].ai_function_task.output.table string ALL +resources.jobs.*.tasks[*].ai_function_task.volume *jobs.VolumeSource ALL +resources.jobs.*.tasks[*].ai_function_task.volume.volume_path string ALL resources.jobs.*.tasks[*].ai_runtime_task *jobs.AiRuntimeTask ALL resources.jobs.*.tasks[*].ai_runtime_task.code_source_path string ALL resources.jobs.*.tasks[*].ai_runtime_task.deployments []jobs.DeploymentSpec ALL @@ -339,6 +377,42 @@ resources.jobs.*.tasks[*].for_each_task *jobs.ForEachTask ALL resources.jobs.*.tasks[*].for_each_task.concurrency int ALL resources.jobs.*.tasks[*].for_each_task.inputs string ALL resources.jobs.*.tasks[*].for_each_task.task jobs.Task ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task *jobs.AiFunctionTask ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify *jobs.AiClassifyFunction ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.enable_confidence_scores bool ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.enable_rationales bool ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels *jobs.AiClassifyFunctionInlineLabels ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels []jobs.AiClassifyFunctionLabel ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*] jobs.AiClassifyFunctionLabel ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*].description string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*].name string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.instructions string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.multilabel bool ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.version string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract *jobs.AiExtractFunction ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.enable_citations bool ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.enable_confidence_scores bool ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.instructions string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.mode jobs.AiExtractFunctionMode ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.schema string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.version string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document *jobs.AiParseDocumentFunction ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.description_element_types []jobs.AiParseDocumentFunctionDescriptionElementType ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.description_element_types[*] jobs.AiParseDocumentFunctionDescriptionElementType ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.image_output_path string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.page_range string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.version string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table *jobs.DeltaTableSource ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.input_column string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.merge_key_columns []string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.merge_key_columns[*] string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.table_name string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output jobs.QualifiedName ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.catalog string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.schema string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.table string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.volume *jobs.VolumeSource ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.volume.volume_path string ALL resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task *jobs.AiRuntimeTask ALL resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.code_source_path string ALL resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments []jobs.DeploymentSpec ALL @@ -1043,6 +1117,12 @@ resources.jobs.*.trigger.file_arrival *jobs.FileArrivalTriggerConfiguration ALL resources.jobs.*.trigger.file_arrival.min_time_between_triggers_seconds int ALL resources.jobs.*.trigger.file_arrival.url string ALL resources.jobs.*.trigger.file_arrival.wait_after_last_change_seconds int ALL +resources.jobs.*.trigger.job_completion *jobs.JobCompletionTriggerConfiguration ALL +resources.jobs.*.trigger.job_completion.if_status jobs.JobCompletionTriggerConfigurationIfStatus ALL +resources.jobs.*.trigger.job_completion.jobs []jobs.JobCompletionTriggerConfigurationMonitoredJob ALL +resources.jobs.*.trigger.job_completion.jobs[*] jobs.JobCompletionTriggerConfigurationMonitoredJob ALL +resources.jobs.*.trigger.job_completion.jobs[*].job_id string ALL +resources.jobs.*.trigger.job_completion.jobs[*].workspace_id string ALL resources.jobs.*.trigger.model *jobs.ModelTriggerConfiguration ALL resources.jobs.*.trigger.model.aliases []string ALL resources.jobs.*.trigger.model.aliases[*] string ALL @@ -1086,6 +1166,17 @@ resources.jobs.*.trigger_details[*].state.continuous.is_backing_off bool REMOTE resources.jobs.*.trigger_details[*].state.continuous.next_attempt_ms int64 REMOTE resources.jobs.*.trigger_details[*].state.file_arrival *jobs.FileArrivalTriggerState REMOTE resources.jobs.*.trigger_details[*].state.file_arrival.using_file_events bool REMOTE +resources.jobs.*.trigger_details[*].state.job_completion *jobs.JobCompletionTriggerState REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states []jobs.JobCompletionTriggerStateMonitoredJobState REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*] jobs.JobCompletionTriggerStateMonitoredJobState REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].has_seen_completion bool REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].is_deleted bool REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].job_id string REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_completion_time *time.Time REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_result jobs.TerminationCodeCode REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_run_id string REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].latest_non_matching_result jobs.TerminationCodeCode REMOTE +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].workspace_id string REMOTE resources.jobs.*.trigger_details[*].state.model *jobs.ModelTriggerState REMOTE resources.jobs.*.trigger_details[*].state.pause_status jobs.PauseStatus REMOTE resources.jobs.*.trigger_details[*].state.periodic *jobs.PeriodicTriggerState REMOTE @@ -1104,6 +1195,17 @@ resources.jobs.*.trigger_details[*].state.table_update.using_scalable_monitoring resources.jobs.*.trigger_state *jobs.TriggerStateProto REMOTE resources.jobs.*.trigger_state.file_arrival *jobs.FileArrivalTriggerState REMOTE resources.jobs.*.trigger_state.file_arrival.using_file_events bool REMOTE +resources.jobs.*.trigger_state.job_completion *jobs.JobCompletionTriggerState REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states []jobs.JobCompletionTriggerStateMonitoredJobState REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*] jobs.JobCompletionTriggerStateMonitoredJobState REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].has_seen_completion bool REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].is_deleted bool REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].job_id string REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_completion_time *time.Time REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_result jobs.TerminationCodeCode REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_run_id string REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].latest_non_matching_result jobs.TerminationCodeCode REMOTE +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].workspace_id string REMOTE resources.jobs.*.trigger_state.pause_status jobs.PauseStatus REMOTE resources.jobs.*.trigger_state.sql_condition *jobs.SqlConditionState REMOTE resources.jobs.*.trigger_state.sql_condition.latest_condition_evaluation_satisfied bool REMOTE @@ -1127,6 +1229,12 @@ resources.jobs.*.triggers[*].file_arrival *jobs.FileArrivalTriggerConfiguration resources.jobs.*.triggers[*].file_arrival.min_time_between_triggers_seconds int ALL resources.jobs.*.triggers[*].file_arrival.url string ALL resources.jobs.*.triggers[*].file_arrival.wait_after_last_change_seconds int ALL +resources.jobs.*.triggers[*].job_completion *jobs.JobCompletionTriggerConfiguration ALL +resources.jobs.*.triggers[*].job_completion.if_status jobs.JobCompletionTriggerConfigurationIfStatus ALL +resources.jobs.*.triggers[*].job_completion.jobs []jobs.JobCompletionTriggerConfigurationMonitoredJob ALL +resources.jobs.*.triggers[*].job_completion.jobs[*] jobs.JobCompletionTriggerConfigurationMonitoredJob ALL +resources.jobs.*.triggers[*].job_completion.jobs[*].job_id string ALL +resources.jobs.*.triggers[*].job_completion.jobs[*].workspace_id string ALL resources.jobs.*.triggers[*].model *jobs.ModelTriggerConfiguration ALL resources.jobs.*.triggers[*].model.aliases []string ALL resources.jobs.*.triggers[*].model.aliases[*] string ALL diff --git a/bundle/internal/validation/generated/enum_fields.go b/bundle/internal/validation/generated/enum_fields.go index bffa6eb4df6..f57e5cbd781 100644 --- a/bundle/internal/validation/generated/enum_fields.go +++ b/bundle/internal/validation/generated/enum_fields.go @@ -40,7 +40,7 @@ var EnumFields = map[string][]string{ "resources.apps.*.resources[*].uc_securable.permission": {"EXECUTE", "MODIFY", "READ_VOLUME", "SELECT", "USE_CONNECTION", "WRITE_VOLUME"}, "resources.apps.*.resources[*].uc_securable.securable_type": {"CONNECTION", "FUNCTION", "MODEL_SERVICE", "TABLE", "VOLUME"}, - "resources.catalogs.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.catalogs.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.cluster_policies.*.permissions[*].level": {"CAN_USE"}, @@ -64,7 +64,7 @@ var EnumFields = map[string][]string{ "resources.experiments.*.permissions[*].level": {"CAN_EDIT", "CAN_MANAGE", "CAN_READ"}, "resources.external_locations.*.encryption_details.sse_encryption_details.algorithm": {"AWS_SSE_KMS", "AWS_SSE_S3"}, - "resources.external_locations.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.external_locations.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.features.*.function.function_type": {"APPROX_COUNT_DISTINCT", "APPROX_PERCENTILE", "AVG", "COUNT", "FIRST", "FUNCTION_TYPE_UNSPECIFIED", "LAST", "MAX", "MIN", "STDDEV_POP", "STDDEV_SAMP", "SUM", "VAR_POP", "VAR_SAMP"}, "resources.features.*.source.request_source.flat_schema.fields[*].data_type": {"BINARY", "BOOLEAN", "DATE", "DECIMAL", "DOUBLE", "FLOAT", "INTEGER", "LONG", "SHORT", "STRING", "TIMESTAMP"}, @@ -104,6 +104,8 @@ var EnumFields = map[string][]string{ "resources.jobs.*.permissions[*].level": {"CAN_MANAGE", "CAN_MANAGE_RUN", "CAN_VIEW", "IS_OWNER"}, "resources.jobs.*.schedule.pause_status": {"PAUSED", "UNPAUSED"}, "resources.jobs.*.schedule.sql_condition.trigger_mode": {"QUERY_RETURNS_ROWS", "RESULT_VALUE_CHANGES"}, + "resources.jobs.*.tasks[*].ai_function_task.ai_extract.mode": {"MODE_PRECISION"}, + "resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.description_element_types[*]": {"DESCRIPTION_ELEMENT_TYPE_ALL", "DESCRIPTION_ELEMENT_TYPE_FIGURE"}, "resources.jobs.*.tasks[*].ai_runtime_task.deployments[*].compute.accelerator_type": {"GPU_1xA10", "GPU_1xH100", "GPU_8xB300", "GPU_8xH100"}, "resources.jobs.*.tasks[*].ai_runtime_task.priority_class": {"BEST_EFFORT", "CRITICAL", "NORMAL"}, "resources.jobs.*.tasks[*].compute.hardware_accelerator": {"GPU_1xA10", "GPU_1xH100", "GPU_8xB300", "GPU_8xH100"}, @@ -111,6 +113,8 @@ var EnumFields = map[string][]string{ "resources.jobs.*.tasks[*].dashboard_task.subscription.attachment.data_attachment.file_format": {"FILE_FORMAT_CSV", "FILE_FORMAT_EXCEL", "FILE_FORMAT_TSV"}, "resources.jobs.*.tasks[*].dashboard_task.subscription.attachment.page_attachment.page_selection": {"PAGE_SELECTION_ALL", "PAGE_SELECTION_SUBSET"}, "resources.jobs.*.tasks[*].dbt_task.source": {"GIT", "WORKSPACE"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.mode": {"MODE_PRECISION"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.description_element_types[*]": {"DESCRIPTION_ELEMENT_TYPE_ALL", "DESCRIPTION_ELEMENT_TYPE_FIGURE"}, "resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments[*].compute.accelerator_type": {"GPU_1xA10", "GPU_1xH100", "GPU_8xB300", "GPU_8xH100"}, "resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.priority_class": {"BEST_EFFORT", "CRITICAL", "NORMAL"}, "resources.jobs.*.tasks[*].for_each_task.task.compute.hardware_accelerator": {"GPU_1xA10", "GPU_1xH100", "GPU_8xB300", "GPU_8xH100"}, @@ -156,6 +160,7 @@ var EnumFields = map[string][]string{ "resources.jobs.*.tasks[*].run_if": {"ALL_DONE", "ALL_FAILED", "ALL_SUCCESS", "AT_LEAST_ONE_FAILED", "AT_LEAST_ONE_SUCCESS", "NONE_FAILED"}, "resources.jobs.*.tasks[*].spark_python_task.source": {"GIT", "WORKSPACE"}, "resources.jobs.*.tasks[*].sql_task.file.source": {"GIT", "WORKSPACE"}, + "resources.jobs.*.trigger.job_completion.if_status": {"DONE", "FAILED", "SUCCESS"}, "resources.jobs.*.trigger.model.condition": {"MODEL_ALIAS_SET", "MODEL_CREATED", "MODEL_VERSION_READY"}, "resources.jobs.*.trigger.pause_status": {"PAUSED", "UNPAUSED"}, "resources.jobs.*.trigger.periodic.unit": {"DAYS", "HOURS", "MINUTES", "WEEKS"}, @@ -163,6 +168,7 @@ var EnumFields = map[string][]string{ "resources.jobs.*.trigger.table_update.condition": {"ALL_UPDATED", "ANY_UPDATED"}, "resources.jobs.*.triggers[*].continuous.maintenance_window.day_of_week": {"FRIDAY", "MONDAY", "SATURDAY", "SUNDAY", "THURSDAY", "TUESDAY", "WEDNESDAY"}, "resources.jobs.*.triggers[*].continuous.task_retry_mode": {"NEVER", "ON_FAILURE"}, + "resources.jobs.*.triggers[*].job_completion.if_status": {"DONE", "FAILED", "SUCCESS"}, "resources.jobs.*.triggers[*].model.condition": {"MODEL_ALIAS_SET", "MODEL_CREATED", "MODEL_VERSION_READY"}, "resources.jobs.*.triggers[*].pause_status": {"PAUSED", "UNPAUSED"}, "resources.jobs.*.triggers[*].periodic.unit": {"DAYS", "HOURS", "MINUTES", "WEEKS"}, @@ -171,18 +177,18 @@ var EnumFields = map[string][]string{ "resources.mcp_services.*.config.rate_limits[*].key": {"RATE_LIMIT_KEY_SERVICE", "RATE_LIMIT_KEY_SERVICE_PRINCIPAL", "RATE_LIMIT_KEY_USER", "RATE_LIMIT_KEY_USER_DEFAULT", "RATE_LIMIT_KEY_USER_GROUP"}, "resources.mcp_services.*.config.rate_limits[*].renewal_period": {"RATE_LIMIT_RENEWAL_PERIOD_HOUR", "RATE_LIMIT_RENEWAL_PERIOD_MINUTE"}, - "resources.mcp_services.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.mcp_services.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.model_provider_services.*.config.provider_type": {"EXTERNAL_MODEL_PROVIDER_TYPE_AMAZON_BEDROCK", "EXTERNAL_MODEL_PROVIDER_TYPE_ANTHROPIC", "EXTERNAL_MODEL_PROVIDER_TYPE_AZURE_OPENAI", "EXTERNAL_MODEL_PROVIDER_TYPE_BEDROCK_MANTLE", "EXTERNAL_MODEL_PROVIDER_TYPE_CUSTOM", "EXTERNAL_MODEL_PROVIDER_TYPE_GEMINI_ENTERPRISE", "EXTERNAL_MODEL_PROVIDER_TYPE_MICROSOFT_FOUNDRY", "EXTERNAL_MODEL_PROVIDER_TYPE_OPENAI"}, "resources.model_provider_services.*.config.rate_limits[*].key": {"RATE_LIMIT_KEY_SERVICE", "RATE_LIMIT_KEY_SERVICE_PRINCIPAL", "RATE_LIMIT_KEY_USER", "RATE_LIMIT_KEY_USER_DEFAULT", "RATE_LIMIT_KEY_USER_GROUP"}, "resources.model_provider_services.*.config.rate_limits[*].renewal_period": {"RATE_LIMIT_RENEWAL_PERIOD_HOUR", "RATE_LIMIT_RENEWAL_PERIOD_MINUTE"}, - "resources.model_provider_services.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.model_provider_services.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.model_services.*.config.rate_limits[*].key": {"RATE_LIMIT_KEY_SERVICE", "RATE_LIMIT_KEY_SERVICE_PRINCIPAL", "RATE_LIMIT_KEY_USER", "RATE_LIMIT_KEY_USER_DEFAULT", "RATE_LIMIT_KEY_USER_GROUP"}, "resources.model_services.*.config.rate_limits[*].renewal_period": {"RATE_LIMIT_RENEWAL_PERIOD_HOUR", "RATE_LIMIT_RENEWAL_PERIOD_MINUTE"}, "resources.model_services.*.config.routing.destinations[*].destination_type": {"DESTINATION_TYPE_EXTERNAL_FOUNDATION_MODEL", "DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL", "DESTINATION_TYPE_PROVISIONED_THROUGHPUT_FOUNDATION_MODEL"}, "resources.model_services.*.config.routing.fallback.destinations[*].destination_type": {"DESTINATION_TYPE_EXTERNAL_FOUNDATION_MODEL", "DESTINATION_TYPE_PAY_PER_TOKEN_FOUNDATION_MODEL", "DESTINATION_TYPE_PROVISIONED_THROUGHPUT_FOUNDATION_MODEL"}, - "resources.model_services.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.model_services.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.model_serving_endpoints.*.ai_gateway.guardrails.input.pii.behavior": {"BLOCK", "MASK", "NONE"}, "resources.model_serving_endpoints.*.ai_gateway.guardrails.output.pii.behavior": {"BLOCK", "MASK", "NONE"}, @@ -291,14 +297,14 @@ var EnumFields = map[string][]string{ "resources.quality_monitors.*.inference_log.problem_type": {"PROBLEM_TYPE_CLASSIFICATION", "PROBLEM_TYPE_REGRESSION"}, "resources.quality_monitors.*.schedule.pause_status": {"PAUSED", "UNPAUSED", "UNSPECIFIED"}, - "resources.registered_models.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.registered_models.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, - "resources.schemas.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.schemas.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.secret_scopes.*.backend_type": {"AZURE_KEYVAULT", "DATABRICKS"}, "resources.secret_scopes.*.permissions[*].level": {"READ", "WRITE", "MANAGE"}, - "resources.secrets.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.secrets.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.sql_warehouses.*.channel.name": {"CHANNEL_NAME_CURRENT", "CHANNEL_NAME_CUSTOM", "CHANNEL_NAME_PREVIEW", "CHANNEL_NAME_PREVIOUS"}, "resources.sql_warehouses.*.permissions[*].level": {"CAN_MANAGE", "CAN_MONITOR", "CAN_USE", "CAN_VIEW", "IS_OWNER"}, @@ -317,11 +323,11 @@ var EnumFields = map[string][]string{ "resources.vector_search_endpoints.*.permissions[*].level": {"CAN_CREATE", "CAN_MANAGE", "CAN_USE"}, "resources.vector_search_indexes.*.delta_sync_index_spec.pipeline_type": {"CONTINUOUS", "TRIGGERED"}, - "resources.vector_search_indexes.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.vector_search_indexes.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.vector_search_indexes.*.index_subtype": {"FULL_TEXT", "HYBRID", "VECTOR"}, "resources.vector_search_indexes.*.index_type": {"DELTA_SYNC", "DIRECT_ACCESS"}, - "resources.volumes.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, + "resources.volumes.*.grants[*].privileges[*]": {"ACCESS", "ALL_PRIVILEGES", "APPLY_TAG", "BROWSE", "CREATE", "CREATE_CATALOG", "CREATE_CLEAN_ROOM", "CREATE_CONNECTION", "CREATE_EXTERNAL_LOCATION", "CREATE_EXTERNAL_TABLE", "CREATE_EXTERNAL_VOLUME", "CREATE_FEATURE", "CREATE_FOREIGN_CATALOG", "CREATE_FOREIGN_SECURABLE", "CREATE_FUNCTION", "CREATE_MANAGED_STORAGE", "CREATE_MATERIALIZED_VIEW", "CREATE_MODEL", "CREATE_PROVIDER", "CREATE_RECIPIENT", "CREATE_SCHEMA", "CREATE_SERVICE_CREDENTIAL", "CREATE_SHARE", "CREATE_STORAGE_CREDENTIAL", "CREATE_TABLE", "CREATE_VIEW", "CREATE_VOLUME", "EXECUTE", "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_LOCATION", "EXTERNAL_USE_SCHEMA", "MANAGE", "MANAGE_ALLOWLIST", "MODIFY", "MODIFY_CLEAN_ROOM", "READ_FEATURE", "READ_FILES", "READ_METADATA", "READ_PRIVATE_FILES", "READ_VOLUME", "REFRESH", "SELECT", "SET_SHARE_PERMISSION", "USAGE", "USE_CATALOG", "USE_CONNECTION", "USE_MARKETPLACE_ASSETS", "USE_PROVIDER", "USE_RECIPIENT", "USE_SCHEMA", "USE_SHARE", "WRITE_FILES", "WRITE_PRIVATE_FILES", "WRITE_VOLUME"}, "resources.volumes.*.volume_type": {"EXTERNAL", "MANAGED"}, "variables.*.type": {"complex"}, diff --git a/bundle/internal/validation/generated/required_fields.go b/bundle/internal/validation/generated/required_fields.go index 5e139f34798..8d40e0255f6 100644 --- a/bundle/internal/validation/generated/required_fields.go +++ b/bundle/internal/validation/generated/required_fields.go @@ -162,6 +162,14 @@ var RequiredFields = map[string][]string{ "resources.jobs.*.schedule": {"quartz_cron_expression", "timezone_id"}, "resources.jobs.*.schedule.sql_condition": {"sql_query_id", "warehouse_id"}, "resources.jobs.*.tasks[*]": {"task_key"}, + "resources.jobs.*.tasks[*].ai_function_task": {"output"}, + "resources.jobs.*.tasks[*].ai_function_task.ai_classify": {"version"}, + "resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels": {"labels"}, + "resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*]": {"name"}, + "resources.jobs.*.tasks[*].ai_function_task.ai_extract": {"version"}, + "resources.jobs.*.tasks[*].ai_function_task.ai_parse_document": {"version"}, + "resources.jobs.*.tasks[*].ai_function_task.delta_table": {"input_column", "table_name"}, + "resources.jobs.*.tasks[*].ai_function_task.volume": {"volume_path"}, "resources.jobs.*.tasks[*].ai_runtime_task": {"deployments", "experiment"}, "resources.jobs.*.tasks[*].ai_runtime_task.deployments[*]": {"compute"}, "resources.jobs.*.tasks[*].ai_runtime_task.deployments[*].compute": {"accelerator_count", "accelerator_type"}, @@ -173,6 +181,14 @@ var RequiredFields = map[string][]string{ "resources.jobs.*.tasks[*].depends_on[*]": {"task_key"}, "resources.jobs.*.tasks[*].for_each_task": {"inputs", "task"}, "resources.jobs.*.tasks[*].for_each_task.task": {"task_key"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task": {"output"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify": {"version"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels": {"labels"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*]": {"name"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract": {"version"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document": {"version"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table": {"input_column", "table_name"}, + "resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.volume": {"volume_path"}, "resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task": {"deployments", "experiment"}, "resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments[*]": {"compute"}, "resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments[*].compute": {"accelerator_count", "accelerator_type"}, @@ -252,12 +268,16 @@ var RequiredFields = map[string][]string{ "resources.jobs.*.tasks[*].webhook_notifications.on_streaming_backlog_exceeded[*]": {"id"}, "resources.jobs.*.tasks[*].webhook_notifications.on_success[*]": {"id"}, "resources.jobs.*.trigger.file_arrival": {"url"}, + "resources.jobs.*.trigger.job_completion": {"jobs"}, + "resources.jobs.*.trigger.job_completion.jobs[*]": {"job_id", "workspace_id"}, "resources.jobs.*.trigger.model": {"condition"}, "resources.jobs.*.trigger.periodic": {"interval", "unit"}, "resources.jobs.*.trigger.sql_condition": {"sql_query_id", "warehouse_id"}, "resources.jobs.*.trigger.table_update": {"table_names"}, "resources.jobs.*.triggers[*].continuous.maintenance_window": {"day_of_week", "start_hour", "timezone_id"}, "resources.jobs.*.triggers[*].file_arrival": {"url"}, + "resources.jobs.*.triggers[*].job_completion": {"jobs"}, + "resources.jobs.*.triggers[*].job_completion.jobs[*]": {"job_id", "workspace_id"}, "resources.jobs.*.triggers[*].model": {"condition"}, "resources.jobs.*.triggers[*].periodic": {"interval", "unit"}, "resources.jobs.*.triggers[*].schedule": {"quartz_cron_expression", "timezone_id"}, diff --git a/bundle/schema/jsonschema.json b/bundle/schema/jsonschema.json index 25698c0fb69..8742c086217 100644 --- a/bundle/schema/jsonschema.json +++ b/bundle/schema/jsonschema.json @@ -113,10 +113,9 @@ "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" }, "parameters": { - "description": "[Private Preview] A list of parameters to pass into the alert SQL query statement containing parameter markers. Static values only.\n\nReference a parameter in the query text as `:name`. Each parameter must have a unique, non-empty name.\nEach parameter consists of a name, a value, and optionally a type. To represent a NULL\nvalue, the `value` field may be omitted or set to `null` explicitly. If the `type` field\nis omitted, the value is interpreted as a string.\n\nIf the type is given, parameters will be checked for type correctness according\nto the given type. A value is correct if the provided string can be converted to\nthe requested type using the `cast` function. The exact semantics are described in\nthe section [`cast` function](https://docs.databricks.com/sql/language-manual/functions/cast.html) of the SQL language reference.", + "description": "[Beta] A list of parameters to pass into the alert SQL query statement containing parameter markers. Static values only.\n\nReference a parameter in the query text as `:name`. Each parameter must have a unique, non-empty name.\nEach parameter consists of a name, a value, and optionally a type. To represent a NULL\nvalue, the `value` field may be omitted or set to `null` explicitly. If the `type` field\nis omitted, the value is interpreted as a string.\n\nIf the type is given, parameters will be checked for type correctness according\nto the given type. A value is correct if the provided string can be converted to\nthe requested type using the `cast` function. The exact semantics are described in\nthe section [`cast` function](https://docs.databricks.com/sql/language-manual/functions/cast.html) of the SQL language reference.", "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/sql.AlertStatementParameter", - "x-databricks-launch-stage": "PRIVATE_PREVIEW", - "doNotSuggest": true + "x-databricks-launch-stage": "PUBLIC_BETA" }, "parent_path": { "description": "The workspace path of the folder containing the alert. Can only be set on create, and cannot be updated.", @@ -1361,7 +1360,7 @@ "x-databricks-launch-stage": "PUBLIC_BETA" }, "environments": { - "description": "A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode.\n\nFor notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the environment_key is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment.\nFor other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using environment_key in the task settings.", + "description": "A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode.\n\nFor notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the `environment_key` is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment.\n\nFor other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using `environment_key` in the task settings.", "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.JobEnvironment", "x-databricks-launch-stage": "GA" }, @@ -3311,7 +3310,7 @@ "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.LifecycleWithStarted" }, "max_dbu": { - "description": "[Private Preview] Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be a multiple of 3 between 3 and 960. The effective maximum cannot be\nlower than the warehouse's minimum capacity.", + "description": "[Private Preview] Maximum compute capacity of a real-time SQL warehouse, in DBU per hour.\nMust be at least the minimum DBU for the selected warehouse size and no greater\nthan the configured DBU limit. Actual capacity may be below this ceiling.", "$ref": "#/$defs/int", "x-databricks-launch-stage": "PRIVATE_PREVIEW", "doNotSuggest": true @@ -7028,6 +7027,8 @@ "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION" ], "enumDescriptions": [ @@ -7082,6 +7083,8 @@ "", "", "", + "", + "", "[Public Preview]" ] }, @@ -8025,7 +8028,7 @@ "description": "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.\nIn this minimal environment spec, only pip and java dependencies are supported.", "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.\nFor more information about Databricks-provided base environments, see the\n[list workspace base environments](:method:Environments/ListWorkspaceBaseEnvironments) API.\nFor more information, see", + "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`).\n\nSupport 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.\n\nEither `environment_version` or `base_environment` can be provided.\n\nFor more information about Databricks-provided base environments, see the\n[list workspace base environments](:method:Environments/ListWorkspaceBaseEnvironments) API.", "$ref": "#/$defs/string", "x-databricks-launch-stage": "GA" }, @@ -8042,17 +8045,17 @@ "x-databricks-launch-stage": "GA" }, "environment_version": { - "description": "Either `environment_version` or `base_environment` needs to be provided. Environment version used by the environment.\nEach version comes with a specific Python version and a set of Python packages.\nThe version is a string, consisting of an integer.", + "description": "The environment version used by this environment. Either `environment_version` or `base_environment` must be provided.\nEach version comes with a specific Python version and a set of Python packages.\nThe version is a string, consisting of an integer.", "$ref": "#/$defs/string", "x-databricks-launch-stage": "GA" }, "java_dependencies": { - "description": "List of java dependencies. Each dependency is a string representing a java library path. For example: `/Volumes/path/to/test.jar`.", + "description": "List of Java dependencies. Each dependency is a string representing a Java library path. For example: `/Volumes/path/to/test.jar`.", "$ref": "#/$defs/slice/string", "x-databricks-launch-stage": "GA" }, "project_environment": { - "description": "[Beta] Path to the `pyproject.toml` file that defines the project environment.\nThis field cannot be combined with `environment_version`, `base_environment`, dependency fields,\nor any other environment-source fields. Set the environment version and dependencies in `pyproject.toml` instead.\nFor more information, see the serverless dependencies documentation.", + "description": "[Beta] Path to the `pyproject.toml` file that defines the project environment.\nThis field cannot be combined with `environment_version`, `base_environment`, dependency fields,\nor any other environment-source fields. Set the environment version and dependencies in `pyproject.toml` instead.", "$ref": "#/$defs/string", "x-databricks-launch-stage": "PUBLIC_BETA" } @@ -9277,6 +9280,302 @@ } ] }, + "jobs.AiClassifyFunction": { + "oneOf": [ + { + "type": "object", + "description": "Configuration for a task that runs the `ai_classify` function.\n\nThe label set comes from exactly one of two places: `inline_labels`, which\nholds up to 10 labels, or a Unity Catalog table named by `label_table`. Use\n`label_table` for a larger label set.", + "properties": { + "enable_confidence_scores": { + "description": "[Private Preview] When true, includes a per-label confidence score in the response.", + "$ref": "#/$defs/bool", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "enable_rationales": { + "description": "[Private Preview] When true, includes a rationale explaining each classification in the response.", + "$ref": "#/$defs/bool", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "inline_labels": { + "description": "[Private Preview] Labels listed inline, for a small label set.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiClassifyFunctionInlineLabels", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "instructions": { + "description": "[Private Preview] Global description of the task and domain, passed to the model to improve\nclassification quality.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "multilabel": { + "description": "[Private Preview] When true, more than one label can be returned for each input.", + "$ref": "#/$defs/bool", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "version": { + "description": "[Private Preview] The ai_classify function version to invoke (for example, `2.1`).", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false, + "required": [ + "version" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.AiClassifyFunctionInlineLabels": { + "oneOf": [ + { + "type": "object", + "description": "A label set listed inline.", + "properties": { + "labels": { + "description": "[Private Preview] The labels an input can be classified as. At least two labels are required\nunless `multilabel` is true, which also accepts a single label.", + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.AiClassifyFunctionLabel", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false, + "required": [ + "labels" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.AiClassifyFunctionLabel": { + "oneOf": [ + { + "type": "object", + "description": "One label the input can be classified as.", + "properties": { + "description": { + "description": "[Private Preview] Guidance describing what belongs under this label.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "name": { + "description": "[Private Preview] The name returned when an input is classified as this label.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false, + "required": [ + "name" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.AiExtractFunction": { + "oneOf": [ + { + "type": "object", + "description": "Configuration for a task that runs the `ai_extract` function.\n\nThe fields to extract come from exactly one of two places: an existing AI\nExtract agent, named by `agent_id`, or the inline `schema` and `instructions`.\nSet `agent_id` or the inline fields, not both.", + "properties": { + "enable_citations": { + "description": "[Private Preview] When true, includes citation metadata locating each extracted value in the\nsource.", + "$ref": "#/$defs/bool", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "enable_confidence_scores": { + "description": "[Private Preview] When true, includes a per-field confidence score in the response.", + "$ref": "#/$defs/bool", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "instructions": { + "description": "[Private Preview] Global description of the task and domain, passed to the model to improve\nextraction quality.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "mode": { + "description": "[Private Preview] The extraction mode. Defaults to standard extraction when unspecified.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiExtractFunctionMode", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "schema": { + "description": "[Private Preview] The extraction schema defining the fields to extract, as a JSON string.\nEither an array of field names (e.g. [\"company\", \"valuation\"]) or an object\nmapping each field name to a type and an optional description. Supported\ntypes are string, integer, number, boolean, enum, object, and array; all\nfields are optional.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "version": { + "description": "[Private Preview] The ai_extract function version to invoke (for example, `2.1`).", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false, + "required": [ + "version" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.AiExtractFunctionMode": { + "oneOf": [ + { + "type": "string", + "description": "The extraction mode.", + "enum": [ + "MODE_PRECISION" + ], + "enumDescriptions": [ + "[Private Preview]" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.AiFunctionTask": { + "oneOf": [ + { + "type": "object", + "description": "A task that applies an AI function to a set of input documents or rows.", + "properties": { + "ai_classify": { + "description": "[Private Preview] Classifies each input document or row into one or more labels.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiClassifyFunction", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "ai_extract": { + "description": "[Private Preview] Extracts structured fields from the input documents or rows.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiExtractFunction", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "ai_parse_document": { + "description": "[Private Preview] Parses the input documents into structured text.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiParseDocumentFunction", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "delta_table": { + "description": "[Private Preview] A Unity Catalog Delta table. The function is applied to each row.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.DeltaTableSource", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "output": { + "description": "[Private Preview] Output destination table. When `table` is unset the task generates a stable name from the\nfunction and task identity so a downstream task can reference it.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.QualifiedName", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "volume": { + "description": "[Private Preview] A Unity Catalog volume. The function is applied to each file.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.VolumeSource", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false, + "required": [ + "output" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.AiParseDocumentFunction": { + "oneOf": [ + { + "type": "object", + "description": "Configuration for a task that runs the `ai_parse_document` function.", + "properties": { + "description_element_types": { + "description": "[Private Preview] Element types to generate AI descriptions for. Leave empty to generate no\ndescriptions; use ALL for every supported type, or list specific types to\nrestrict generation to only those.", + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.AiParseDocumentFunctionDescriptionElementType", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "image_output_path": { + "description": "[Private Preview] Unity Catalog volume path where rendered page and element images are written.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "page_range": { + "description": "[Private Preview] Pages to parse (1-indexed), as a comma-separated list of page numbers or\nranges (e.g. \"1,3,5-10\").", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "version": { + "description": "[Private Preview] The ai_parse_document output schema version to invoke (for example, `2.0`).", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false, + "required": [ + "version" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.AiParseDocumentFunctionDescriptionElementType": { + "oneOf": [ + { + "type": "string", + "description": "An element type that AI descriptions can be generated for.", + "enum": [ + "DESCRIPTION_ELEMENT_TYPE_ALL", + "DESCRIPTION_ELEMENT_TYPE_FIGURE" + ], + "enumDescriptions": [ + "[Private Preview]", + "[Private Preview]" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.AiRuntimeTask": { "oneOf": [ { @@ -9955,6 +10254,43 @@ } ] }, + "jobs.DeltaTableSource": { + "oneOf": [ + { + "type": "object", + "description": "A Unity Catalog Delta table input source. The function is applied to each row.", + "properties": { + "input_column": { + "description": "[Private Preview] Name of the column holding the content the function is applied to.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "merge_key_columns": { + "description": "[Private Preview] Columns that together identify a row across incremental runs, so results can\nbe matched back to their source rows. When unset, the task derives an\nimplicit key from Delta row tracking. If row tracking is also disabled there\nis no stable key, so each run reprocesses the entire source (a full refresh)\nrather than only the changed rows; set a key column or enable row tracking to\nkeep runs incremental.", + "$ref": "#/$defs/slice/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "table_name": { + "description": "[Private Preview] Fully qualified three-part name of the source table (catalog.schema.table).", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false, + "required": [ + "input_column", + "table_name" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.DeploymentSpec": { "oneOf": [ { @@ -10238,6 +10574,11 @@ "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/compute.ClusterSpec", "x-databricks-launch-stage": "GA" }, + "serverless_compute": { + "description": "[Beta] Serverless compute settings for this cluster. At most one job cluster per job\nmay set this field; the rate limit defined on the referenced policy applies\nacross all tasks bound to this cluster.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.JobClusterServerlessCompute", + "x-databricks-launch-stage": "PUBLIC_BETA" + }, "serverless_compute_id": { "description": "[Private Preview] The ID of the serverless compute object to bind this cluster to. At most one\nJobCluster per job may set this field; the rate limit defined on the referenced\nserverless compute applies across all tasks bound to this cluster.", "$ref": "#/$defs/string", @@ -10256,6 +10597,105 @@ } ] }, + "jobs.JobClusterServerlessCompute": { + "oneOf": [ + { + "type": "object", + "description": "Serverless compute settings for a job cluster.", + "properties": { + "policy_id": { + "description": "[Beta] The ID of the serverless compute policy to apply to this cluster.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PUBLIC_BETA" + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.JobCompletionTriggerConfiguration": { + "oneOf": [ + { + "type": "object", + "description": "A trigger that starts a run after every upstream job completes with a configured status.", + "properties": { + "if_status": { + "description": "[Beta] The status that all upstream jobs must have before this trigger fires. Defaults to SUCCESS.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.JobCompletionTriggerConfigurationIfStatus", + "x-databricks-launch-stage": "PUBLIC_BETA" + }, + "jobs": { + "description": "[Beta] The upstream jobs to monitor. Each job must be in a workspace attached to the same Unity Catalog metastore as\nthe downstream job. A maximum of 10 jobs can be monitored.", + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.JobCompletionTriggerConfigurationMonitoredJob", + "x-databricks-launch-stage": "PUBLIC_BETA" + } + }, + "additionalProperties": false, + "required": [ + "jobs" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.JobCompletionTriggerConfigurationIfStatus": { + "oneOf": [ + { + "type": "string", + "description": "The status that all upstream jobs must have before a job completion trigger fires.", + "enum": [ + "SUCCESS", + "FAILED", + "DONE" + ], + "enumDescriptions": [ + "[Beta]", + "[Beta]", + "[Beta]" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.JobCompletionTriggerConfigurationMonitoredJob": { + "oneOf": [ + { + "type": "object", + "description": "An upstream job to monitor.", + "properties": { + "job_id": { + "description": "[Beta] The ID of the upstream job.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PUBLIC_BETA" + }, + "workspace_id": { + "description": "[Beta] The ID of the workspace containing the upstream job.\nThis can differ from the caller's workspace and downstream services enforce\ncorrect entitlements and CAN_VIEW permissions for the user + job combination.\nSDR: https://databricks.atlassian.net/browse/SDR-5267", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PUBLIC_BETA" + } + }, + "additionalProperties": false, + "required": [ + "job_id", + "workspace_id" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.JobDeployment": { "oneOf": [ { @@ -11219,6 +11659,39 @@ } ] }, + "jobs.QualifiedName": { + "oneOf": [ + { + "type": "object", + "description": "A three-level Unity Catalog name (catalog.schema.table); any level may be unset.", + "properties": { + "catalog": { + "description": "[Private Preview] Unity Catalog catalog.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "schema": { + "description": "[Private Preview] Unity Catalog schema, within the catalog.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "table": { + "description": "[Private Preview] Table, within the catalog and schema.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.QueueSettings": { "oneOf": [ { @@ -11757,9 +12230,9 @@ "type": "object", "properties": { "attachment": { - "description": "[Beta] Optional: The configuration for the files attached to the dashboard snapshot notification. It\ncontrols the underlying data of dashboard widgets that is attached as data files and which\npages are included in the attached PDF. If not specified, the notification is sent with only\nthe default snapshot.", + "description": "[Public Preview] Optional: The configuration for the files attached to the dashboard snapshot notification. It\ncontrols the underlying data of dashboard widgets that is attached as data files and which\npages are included in the attached PDF. If not specified, the notification is sent with only\nthe default snapshot.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.SubscriptionAttachment", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" }, "custom_subject": { "description": "Optional: Allows users to specify a custom subject line on the email sent\nto subscribers.", @@ -11792,14 +12265,14 @@ "description": "The configuration for the files attached to the dashboard snapshot notification sent to\nsubscribers. `data_attachment` describes the underlying data of dashboard widgets attached\nas data files, and `page_attachment` describes which dashboard pages are included in the\nattached PDF.", "properties": { "data_attachment": { - "description": "[Beta] Optional: The configuration for the underlying data of dashboard widgets attached as tabular\ndata files. If not specified, no tabular data is attached.", + "description": "[Public Preview] Optional: The configuration for the underlying data of dashboard widgets attached as tabular\ndata files. If not specified, no tabular data is attached.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.SubscriptionAttachmentDataAttachment", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" }, "page_attachment": { - "description": "[Beta] Optional: The selection of dashboard pages included in the attached PDF. If not specified,\nonly the first page is included.", + "description": "[Public Preview] Optional: The selection of dashboard pages included in the attached PDF. If not specified,\nonly the first page is included.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.SubscriptionAttachmentPageAttachment", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" } }, "additionalProperties": false @@ -11817,19 +12290,19 @@ "description": "The configuration for the tabular data files attached to the dashboard snapshot. `widgets`\nlists the widgets whose data is exported and `file_format` is the output format; each\nreferenced widget's data is exported as a separate file.", "properties": { "file_format": { - "description": "[Beta] The file format of the exported tabular data files.", + "description": "[Public Preview] The file format of the exported tabular data files.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.SubscriptionAttachmentDataAttachmentFileFormat", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" }, "include_applied_filters": { - "description": "[Beta] When true, the dashboard's applied filter values are included alongside the tabular data as\nan additional attached file.", + "description": "[Public Preview] When true, the dashboard's applied filter values are included alongside the tabular data as\nan additional attached file.", "$ref": "#/$defs/bool", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" }, "widgets": { - "description": "[Beta] The widgets whose underlying data is exported. At least one widget must be referenced.", + "description": "[Public Preview] The widgets whose underlying data is exported. At least one widget must be referenced.", "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.SubscriptionAttachmentDataAttachmentWidget", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" } }, "additionalProperties": false, @@ -11855,9 +12328,9 @@ "FILE_FORMAT_EXCEL" ], "enumDescriptions": [ - "[Beta]", - "[Beta]", - "[Beta]" + "[Public Preview]", + "[Public Preview]", + "[Public Preview]" ] }, { @@ -11873,14 +12346,14 @@ "description": "Identifies a dashboard widget whose data to attach. `page_id` and `widget_id` are\nthe URL identifiers from the dashboard's serialized definition returned by the Get dashboard\nAPI (`serialized_dashboard`), and together they uniquely identify the widget.", "properties": { "page_id": { - "description": "[Beta] The URL identifier of the page containing the widget. This is the value of the `name`\nfield of the corresponding entry under `pages` in the serialized dashboard definition.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", + "description": "[Public Preview] The URL identifier of the page containing the widget. This is the value of the `name`\nfield of the corresponding entry under `pages` in the serialized dashboard definition.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", "$ref": "#/$defs/string", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" }, "widget_id": { - "description": "[Beta] The URL identifier of the widget. This is the value of the `name` field of the\ncorresponding widget under that page's `layout` in the serialized dashboard definition.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", + "description": "[Public Preview] The URL identifier of the widget. This is the value of the `name` field of the\ncorresponding widget under that page's `layout` in the serialized dashboard definition.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", "$ref": "#/$defs/string", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" } }, "additionalProperties": false, @@ -11902,14 +12375,14 @@ "description": "The selection of dashboard pages included in the attached PDF. `page_selection` chooses\nbetween all pages, the first page only, or an explicit subset listed in `page_ids`.", "properties": { "page_ids": { - "description": "[Beta] The identifiers of the pages to include in the PDF. Only specified when `page_selection` is\n`PAGE_SELECTION_SUBSET`. Each value is the identifier of a page in the dashboard's\nserialized definition returned by the Get dashboard API (`serialized_dashboard`): the value\nof the `name` field of an entry under `pages`.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", + "description": "[Public Preview] The identifiers of the pages to include in the PDF. Only specified when `page_selection` is\n`PAGE_SELECTION_SUBSET`. Each value is the identifier of a page in the dashboard's\nserialized definition returned by the Get dashboard API (`serialized_dashboard`): the value\nof the `name` field of an entry under `pages`.\nFormat: alphanumeric, hyphen, and underscore characters allowed, max length 63.", "$ref": "#/$defs/slice/string", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" }, "page_selection": { - "description": "[Beta] How the attached pages are selected. When set to `PAGE_SELECTION_SUBSET`, the pages to\ninclude are listed in `page_ids`.", + "description": "[Public Preview] How the attached pages are selected. When set to `PAGE_SELECTION_SUBSET`, the pages to\ninclude are listed in `page_ids`.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.SubscriptionAttachmentPageAttachmentPageSelection", - "x-databricks-launch-stage": "PUBLIC_BETA" + "x-databricks-launch-stage": "PUBLIC_PREVIEW" } }, "additionalProperties": false @@ -11930,8 +12403,8 @@ "PAGE_SELECTION_SUBSET" ], "enumDescriptions": [ - "[Beta]", - "[Beta]" + "[Public Preview]", + "[Public Preview]" ] }, { @@ -12006,6 +12479,12 @@ { "type": "object", "properties": { + "ai_function_task": { + "description": "[Private Preview] Applies an AI function to a set of input documents or rows.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiFunctionTask", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, "ai_runtime_task": { "description": "[Public Preview] The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify\nthe accelerator type and count, the command to run, and where the workload's\ncode and MLflow output are stored.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiRuntimeTask", @@ -12375,6 +12854,11 @@ "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.FileArrivalTriggerConfiguration", "x-databricks-launch-stage": "PUBLIC_BETA" }, + "job_completion": { + "description": "[Beta] Job completion trigger configuration.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.JobCompletionTriggerConfiguration", + "x-databricks-launch-stage": "PUBLIC_BETA" + }, "model": { "description": "[Private Preview] Model trigger configuration.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.ModelTriggerConfiguration", @@ -12426,6 +12910,11 @@ "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.FileArrivalTriggerConfiguration", "x-databricks-launch-stage": "GA" }, + "job_completion": { + "description": "[Beta] Job completion trigger settings.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.JobCompletionTriggerConfiguration", + "x-databricks-launch-stage": "PUBLIC_BETA" + }, "model": { "description": "[Private Preview]", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.ModelTriggerConfiguration", @@ -12461,6 +12950,30 @@ } ] }, + "jobs.VolumeSource": { + "oneOf": [ + { + "type": "object", + "description": "A Unity Catalog volume input source. The function is applied to each file.", + "properties": { + "volume_path": { + "description": "[Private Preview] Unity Catalog volume path to the input files\n(e.g. `/Volumes/\u003ccatalog\u003e/\u003cschema\u003e/\u003cvolume\u003e/...`).", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false, + "required": [ + "volume_path" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.Webhook": { "oneOf": [ { @@ -14033,7 +14546,7 @@ "x-databricks-launch-stage": "GA" }, "start_time": { - "description": "[Private Preview] Earliest event-time boundary at which the Feature may emit an output. This gates outputs, not\nthe historical inputs read by a window. For example, a 365-day window with\nstart_time=2026-01-01 begins emitting partial-window values on that date instead of waiting\nfor 365 days of data; a lifetime window produces no output before start_time. If unset,\ntumbling and fixed-duration sliding windows first emit at an offset-aligned boundary after a\nfull window can be formed. If unset, lifetime sliding windows and rolling windows emit as soon as\neligible source data exists.\nNot currently supported for sawtooth windows or for Features with a stream source.", + "description": "[Private Preview] Earliest event-time boundary at which the Feature may emit an output. This gates outputs, not\nthe historical inputs read by a window. For example, a 365-day window with\nstart_time=2026-01-01 begins emitting partial-window values on that date instead of waiting\nfor 365 days of data; a lifetime window produces no output before start_time. If unset,\ntumbling and fixed-duration sliding windows first emit at an offset-aligned boundary after a\nfull window can be formed. If unset, lifetime sliding windows and rolling windows emit as soon as\neligible source data exists.\nFor sawtooth windows, start_time must not be later than the time the Feature is created.\nNot supported for rolling windows on Features with a stream source.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/common/types/time.Time", "x-databricks-launch-stage": "PRIVATE_PREVIEW", "doNotSuggest": true @@ -19249,22 +19762,19 @@ "description": "A named parameter bound to the alert query. Only flat, named scalar parameters are\nsupported; complex types such as ARRAY, MAP, and STRUCT are not.", "properties": { "name": { - "description": "[Private Preview] The name of the parameter. Reference it in the query text as `:name`. Required, must be\nnon-empty, and must be unique across the alert's parameters.", + "description": "[Beta] The name of the parameter. Reference it in the query text as `:name`. Required, must be\nnon-empty, and must be unique across the alert's parameters.", "$ref": "#/$defs/string", - "x-databricks-launch-stage": "PRIVATE_PREVIEW", - "doNotSuggest": true + "x-databricks-launch-stage": "PUBLIC_BETA" }, "type": { - "description": "[Private Preview] The SQL data type of the parameter, for example `STRING`, `INT`, or `DECIMAL(10, 2)`. If no type is given\nthe type is assumed to be `STRING`. Complex types such as `ARRAY`, `MAP`, and `STRUCT` are not supported.", + "description": "[Beta] The SQL data type of the parameter, for example `STRING`, `INT`, or `DECIMAL(10, 2)`. If no type is given\nthe type is assumed to be `STRING`. Complex types such as `ARRAY`, `MAP`, and `STRUCT` are not supported.", "$ref": "#/$defs/string", - "x-databricks-launch-stage": "PRIVATE_PREVIEW", - "doNotSuggest": true + "x-databricks-launch-stage": "PUBLIC_BETA" }, "value": { - "description": "[Private Preview] The value bound to the parameter, represented as a string. If omitted, the value is interpreted as NULL.", + "description": "[Beta] The value bound to the parameter, represented as a string. If omitted, the value is interpreted as NULL.", "$ref": "#/$defs/string", - "x-databricks-launch-stage": "PRIVATE_PREVIEW", - "doNotSuggest": true + "x-databricks-launch-stage": "PUBLIC_BETA" } }, "additionalProperties": false, @@ -21160,6 +21670,34 @@ } ] }, + "jobs.AiClassifyFunctionLabel": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiClassifyFunctionLabel" + } + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "jobs.AiParseDocumentFunctionDescriptionElementType": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.AiParseDocumentFunctionDescriptionElementType" + } + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.AlertTaskSubscriber": { "oneOf": [ { @@ -21202,6 +21740,20 @@ } ] }, + "jobs.JobCompletionTriggerConfigurationMonitoredJob": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.JobCompletionTriggerConfigurationMonitoredJob" + } + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\._*\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.JobEnvironment": { "oneOf": [ { diff --git a/cmd/workspace/sandbox/sandbox.go b/cmd/workspace/sandbox/sandbox.go index 1bff2224138..ba622937ff2 100644 --- a/cmd/workspace/sandbox/sandbox.go +++ b/cmd/workspace/sandbox/sandbox.go @@ -43,6 +43,7 @@ Create, manage, and control the lifecycle of sandboxes -- isolated, cmd.AddCommand(newCreateSandbox()) cmd.AddCommand(newDeletePath()) cmd.AddCommand(newDeleteSandbox()) + cmd.AddCommand(newDownloadFile()) cmd.AddCommand(newExecuteCommandSync()) cmd.AddCommand(newGetMetadata()) cmd.AddCommand(newGetSandbox()) @@ -384,6 +385,95 @@ Delete a sandbox. return cmd } +// start download-file 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 downloadFileOverrides []func( + *cobra.Command, + *sandbox.DownloadFileRequest, +) + +func newDownloadFile() *cobra.Command { + cmd := &cobra.Command{} + + var downloadFileReq sandbox.DownloadFileRequest + + cmd.Flags().StringVar(&downloadFileReq.ByteRange, "byte-range", downloadFileReq.ByteRange, `A single byte range, such as bytes=0-1023 or bytes=-1024.`) + cmd.Flags().StringVar(&downloadFileReq.IfMatch, "if-match", downloadFileReq.IfMatch, `Entity tags or *.`) + cmd.Flags().StringVar(&downloadFileReq.IfModifiedSince, "if-modified-since", downloadFileReq.IfModifiedSince, `An HTTP-date.`) + cmd.Flags().StringVar(&downloadFileReq.IfNoneMatch, "if-none-match", downloadFileReq.IfNoneMatch, `Entity tags or *.`) + cmd.Flags().StringVar(&downloadFileReq.IfRange, "if-range", downloadFileReq.IfRange, `A strong entity tag.`) + cmd.Flags().StringVar(&downloadFileReq.IfUnmodifiedSince, "if-unmodified-since", downloadFileReq.IfUnmodifiedSince, `An HTTP-date.`) + + cmd.Use = "download-file PARENT PATH" + cmd.Short = `Download a sandbox file.` + cmd.Long = `Download a sandbox file. + + Downloads a regular file from a sandbox as an application/octet-stream body. + The sandbox starts automatically if it is stopped. Filesystem access uses the + sandbox user's permissions and follows symbolic links. + + A full download returns 200 OK. A satisfiable single byte range returns 206 + Partial Content. Multiple byte ranges are unsupported and return 400. Invalid + ranges are ignored; an unsatisfiable range returns 416 with Content-Range + describing the file length. Range is ignored for empty files. + + Conditional requests can return 304 Not Modified or 412 Precondition Failed. + If-Range selects a partial response only when its strong entity tag matches; + otherwise, the entire file is returned. HTTP-date validators in If-Range cause + a full download. Reads are not snapshots: concurrent in-place writes can + affect the returned bytes. HEAD is unsupported. + + Range and conditional options may be supplied as query parameters or HTTP + headers. A parameter and one header may both be supplied when their values + match exactly. Conflicting values or repeated parameters return 400. + + Arguments: + PARENT: The sandbox resource name, in the form sandboxes/{sandbox_id}. + PATH: The absolute UTF-8 path of the file inside the sandbox.` + + // 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.MustWorkspaceClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + w := cmdctx.WorkspaceClient(ctx) + + downloadFileReq.Parent = args[0] + downloadFileReq.Path = args[1] + + response, err := w.Sandbox.DownloadFile(ctx, downloadFileReq) + if err != nil { + return err + } + + defer response.Contents.Close() + return cmdio.Render(ctx, response.Contents) + } + + // 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 downloadFileOverrides { + fn(cmd, &downloadFileReq) + } + + return cmd +} + // start execute-command-sync command // Slice with functions to override default command behavior. diff --git a/cmd/workspace/storage-credentials/storage-credentials.go b/cmd/workspace/storage-credentials/storage-credentials.go index ff64940025f..0a6133b1afd 100644 --- a/cmd/workspace/storage-credentials/storage-credentials.go +++ b/cmd/workspace/storage-credentials/storage-credentials.go @@ -488,9 +488,6 @@ func newValidate() *cobra.Command { validation, and __external_location_name__ will be ignored when checking overlapping urls. - Either the __storage_credential_name__ or the cloud-specific credential must - be provided. - The caller must be a metastore admin or the storage credential owner or have the **CREATE_EXTERNAL_LOCATION** privilege on the metastore and the storage credential.` diff --git a/cmd/workspace/volumes/volumes.go b/cmd/workspace/volumes/volumes.go index 1361f293c8c..3c7ac850ed0 100644 --- a/cmd/workspace/volumes/volumes.go +++ b/cmd/workspace/volumes/volumes.go @@ -373,7 +373,7 @@ func newRead() *cobra.Command { the **USE_SCHEMA** privilege on the parent schema. Arguments: - NAME: The three-level (fully qualified) name of the volume` + NAME: The fully qualified name of the volume.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "GA" @@ -392,14 +392,14 @@ func newRead() *cobra.Command { if err != nil { return fmt.Errorf("failed to load names for Volumes drop-down. Please manually specify required arguments. Original error: %w", err) } - id, err := cmdio.Select(ctx, names, "The three-level (fully qualified) name of the volume") + id, err := cmdio.Select(ctx, names, "The fully qualified name of the volume") if err != nil { return err } args = append(args, id) } if len(args) != 1 { - return errors.New("expected to have the three-level (fully qualified) name of the volume") + return errors.New("expected to have the fully qualified name of the volume") } readReq.Name = args[0] diff --git a/cmd/workspace/workspace-iam-v2/workspace-iam-v2.go b/cmd/workspace/workspace-iam-v2/workspace-iam-v2.go index 4fe7e68e95e..3307175faab 100644 --- a/cmd/workspace/workspace-iam-v2/workspace-iam-v2.go +++ b/cmd/workspace/workspace-iam-v2/workspace-iam-v2.go @@ -101,7 +101,9 @@ func newCreateDirectGroupMemberProxy() *cobra.Command { cmd.Flags().Var(&createDirectGroupMemberProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) - cmd.Use = "create-direct-group-member-proxy GROUP_ID PRINCIPAL_ID" + cmd.Flags().StringVar(&createDirectGroupMemberProxyReq.DirectGroupMember.Name, "name", createDirectGroupMemberProxyReq.DirectGroupMember.Name, `The resource name of the group membership.`) + + cmd.Use = "create-direct-group-member-proxy PARENT PRINCIPAL_ID" cmd.Short = `*Beta* Create a direct group membership.` cmd.Long = `This command is in Beta and may change without notice. @@ -110,7 +112,8 @@ Create a direct group membership. Creates a group membership (assigns a principal to a group). Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks. + PARENT: The parent resource name of the group to add the member to. Format: + groups/{group_id} PRINCIPAL_ID: Internal ID of the principal in Databricks.` cmd.Annotations = make(map[string]string) @@ -121,7 +124,7 @@ Create a direct group membership. if cmd.Flags().Changed("json") { err := root.ExactArgs(1)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only GROUP_ID as positional arguments. Provide 'principal_id' in your JSON input") + return errors.New("when --json flag is specified, provide only PARENT as positional arguments. Provide 'principal_id' in your JSON input") } return nil } @@ -146,11 +149,7 @@ Create a direct group membership. } } } - _, err = fmt.Sscan(args[0], &createDirectGroupMemberProxyReq.GroupId) - if err != nil { - return fmt.Errorf("invalid GROUP_ID: %s", args[0]) - } - + createDirectGroupMemberProxyReq.Parent = args[0] if !cmd.Flags().Changed("json") { _, err = fmt.Sscan(args[1], &createDirectGroupMemberProxyReq.DirectGroupMember.PrincipalId) if err != nil { @@ -197,8 +196,10 @@ func newCreateGroupProxy() *cobra.Command { cmd.Flags().Var(&createGroupProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) + cmd.Flags().StringVar(&createGroupProxyReq.Parent, "parent", createGroupProxyReq.Parent, `The resource name of the account to create the group in, accounts/{account_id}.`) cmd.Flags().StringVar(&createGroupProxyReq.Group.ExternalId, "external-id", createGroupProxyReq.Group.ExternalId, `ExternalId of the group in the customer's IdP.`) cmd.Flags().StringVar(&createGroupProxyReq.Group.GroupName, "group-name", createGroupProxyReq.Group.GroupName, `Display name of the group.`) + cmd.Flags().StringVar(&createGroupProxyReq.Group.Name, "name", createGroupProxyReq.Group.Name, `The resource name of the group.`) cmd.Use = "create-group-proxy" cmd.Short = `*Beta* Create a group in the account.` @@ -281,7 +282,9 @@ func newCreateServicePrincipalProxy() *cobra.Command { cmd.Flags().Var(&createServicePrincipalProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) + cmd.Flags().StringVar(&createServicePrincipalProxyReq.Parent, "parent", createServicePrincipalProxyReq.Parent, `The resource name of the account to create the service principal in, accounts/{account_id}.`) cmd.Flags().StringVar(&createServicePrincipalProxyReq.ServicePrincipal.ExternalId, "external-id", createServicePrincipalProxyReq.ServicePrincipal.ExternalId, `ExternalId of the service principal in the customer's IdP.`) + cmd.Flags().StringVar(&createServicePrincipalProxyReq.ServicePrincipal.Name, "name", createServicePrincipalProxyReq.ServicePrincipal.Name, `The resource name of the service principal.`) cmd.Use = "create-service-principal-proxy DISPLAY_NAME ACCOUNT_SP_STATUS" cmd.Short = `*Beta* Create a service principal in the account.` @@ -386,7 +389,9 @@ func newCreateUserProxy() *cobra.Command { cmd.Flags().Var(&createUserProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) + cmd.Flags().StringVar(&createUserProxyReq.Parent, "parent", createUserProxyReq.Parent, `The resource name of the account to create the user in, accounts/{account_id}.`) cmd.Flags().StringVar(&createUserProxyReq.User.ExternalId, "external-id", createUserProxyReq.User.ExternalId, `ExternalId of the user in the customer's IdP.`) + cmd.Flags().StringVar(&createUserProxyReq.User.Name, "name", createUserProxyReq.User.Name, `The resource name of the user.`) cmd.Use = "create-user-proxy USERNAME FULL_NAME ACCOUNT_USER_STATUS" cmd.Short = `*Beta* Create a user in the account.` @@ -594,8 +599,10 @@ func newCreateWorkspaceAssignmentProxy() *cobra.Command { cmd.Flags().Var(&createWorkspaceAssignmentProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) + cmd.Flags().StringVar(&createWorkspaceAssignmentProxyReq.Parent, "parent", createWorkspaceAssignmentProxyReq.Parent, `The resource name of the workspace to assign the principal to, accounts/{account_id}/workspaces/{workspace_id}.`) // TODO: array: effective_entitlements // TODO: array: entitlements + cmd.Flags().StringVar(&createWorkspaceAssignmentProxyReq.WorkspaceAssignment.Name, "name", createWorkspaceAssignmentProxyReq.WorkspaceAssignment.Name, `The resource name of the workspace assignment.`) cmd.Use = "create-workspace-assignment-proxy PRINCIPAL_ID" cmd.Short = `*Beta* Create a workspace assignment for a workspace.` @@ -610,7 +617,9 @@ Create a workspace assignment for a workspace. which entitlements were granted. Arguments: - PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks.` + PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks. Set when + the assignment is created and cannot be changed afterwards; to assign a + different principal, create a new assignment.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -687,7 +696,7 @@ func newDeleteDirectGroupMemberProxy() *cobra.Command { var deleteDirectGroupMemberProxyReq iamv2.DeleteDirectGroupMemberProxyRequest - cmd.Use = "delete-direct-group-member-proxy GROUP_ID PRINCIPAL_ID" + cmd.Use = "delete-direct-group-member-proxy NAME" cmd.Short = `*Beta* Delete a direct group membership.` cmd.Long = `This command is in Beta and may change without notice. @@ -696,15 +705,15 @@ Delete a direct group membership. Deletes a group membership (unassigns a principal from a group). Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks. - PRINCIPAL_ID: Required. Internal ID of the principal to be unassigned from the group.` + NAME: The resource name of the group membership. Format: + groups/{group_id}/direct-members/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(2) + check := root.ExactArgs(1) return check(cmd, args) } @@ -713,15 +722,7 @@ Delete a direct group membership. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - _, err = fmt.Sscan(args[0], &deleteDirectGroupMemberProxyReq.GroupId) - if err != nil { - return fmt.Errorf("invalid GROUP_ID: %s", args[0]) - } - - _, err = fmt.Sscan(args[1], &deleteDirectGroupMemberProxyReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) - } + deleteDirectGroupMemberProxyReq.Name = args[0] err = w.WorkspaceIamV2.DeleteDirectGroupMemberProxy(ctx, deleteDirectGroupMemberProxyReq) if err != nil { @@ -756,7 +757,7 @@ func newDeleteGroupProxy() *cobra.Command { var deleteGroupProxyReq iamv2.DeleteGroupProxyRequest - cmd.Use = "delete-group-proxy GROUP_ID" + cmd.Use = "delete-group-proxy NAME" cmd.Short = `*Beta* Delete a group in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -766,7 +767,7 @@ Delete a group in the account. the calling workspace. Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks.` + NAME: The resource name of the group. Format: groups/{group_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -782,7 +783,7 @@ Delete a group in the account. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - deleteGroupProxyReq.GroupId = args[0] + deleteGroupProxyReq.Name = args[0] err = w.WorkspaceIamV2.DeleteGroupProxy(ctx, deleteGroupProxyReq) if err != nil { @@ -817,7 +818,7 @@ func newDeleteServicePrincipalProxy() *cobra.Command { var deleteServicePrincipalProxyReq iamv2.DeleteServicePrincipalProxyRequest - cmd.Use = "delete-service-principal-proxy SERVICE_PRINCIPAL_ID" + cmd.Use = "delete-service-principal-proxy NAME" cmd.Short = `*Beta* Delete a service principal in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -827,7 +828,8 @@ Delete a service principal in the account. that parents the calling workspace. Arguments: - SERVICE_PRINCIPAL_ID: Required. Internal ID of the service principal in Databricks.` + NAME: The resource name of the service principal. Format: + service-principals/{service_principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -843,7 +845,7 @@ Delete a service principal in the account. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - deleteServicePrincipalProxyReq.ServicePrincipalId = args[0] + deleteServicePrincipalProxyReq.Name = args[0] err = w.WorkspaceIamV2.DeleteServicePrincipalProxy(ctx, deleteServicePrincipalProxyReq) if err != nil { @@ -878,7 +880,7 @@ func newDeleteUserProxy() *cobra.Command { var deleteUserProxyReq iamv2.DeleteUserProxyRequest - cmd.Use = "delete-user-proxy USER_ID" + cmd.Use = "delete-user-proxy NAME" cmd.Short = `*Beta* Delete a user in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -888,7 +890,7 @@ Delete a user in the account. calling workspace. Arguments: - USER_ID: Required. Internal ID of the user in Databricks.` + NAME: The resource name of the user. Format: users/{user_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -904,7 +906,7 @@ Delete a user in the account. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - deleteUserProxyReq.UserId = args[0] + deleteUserProxyReq.Name = args[0] err = w.WorkspaceIamV2.DeleteUserProxy(ctx, deleteUserProxyReq) if err != nil { @@ -1008,7 +1010,7 @@ func newDeleteWorkspaceAssignmentProxy() *cobra.Command { var deleteWorkspaceAssignmentProxyReq iamv2.DeleteWorkspaceAssignmentProxyRequest - cmd.Use = "delete-workspace-assignment-proxy PRINCIPAL_ID" + cmd.Use = "delete-workspace-assignment-proxy NAME" cmd.Short = `*Beta* Delete a workspace assignment for a workspace.` cmd.Long = `This command is in Beta and may change without notice. @@ -1020,8 +1022,8 @@ Delete a workspace assignment for a workspace. stays assigned with some of its original entitlements. Retrying is safe. Arguments: - PRINCIPAL_ID: Required. ID of the principal in Databricks to delete workspace assignment - for.` + NAME: The resource name of the workspace assignment. Format: + workspace-assignments/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1037,10 +1039,7 @@ Delete a workspace assignment for a workspace. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - _, err = fmt.Sscan(args[0], &deleteWorkspaceAssignmentProxyReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) - } + deleteWorkspaceAssignmentProxyReq.Name = args[0] err = w.WorkspaceIamV2.DeleteWorkspaceAssignmentProxy(ctx, deleteWorkspaceAssignmentProxyReq) if err != nil { @@ -1075,7 +1074,7 @@ func newGetDirectGroupMemberProxy() *cobra.Command { var getDirectGroupMemberProxyReq iamv2.GetDirectGroupMemberProxyRequest - cmd.Use = "get-direct-group-member-proxy GROUP_ID PRINCIPAL_ID" + cmd.Use = "get-direct-group-member-proxy NAME" cmd.Short = `*Beta* Get a direct group member.` cmd.Long = `This command is in Beta and may change without notice. @@ -1084,16 +1083,15 @@ Get a direct group member. Gets a provisioned direct member of a group. Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks. - PRINCIPAL_ID: Required. Internal ID of the principal belonging to the group in - Databricks.` + NAME: The resource name of the group membership. Format: + groups/{group_id}/direct-members/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { - check := root.ExactArgs(2) + check := root.ExactArgs(1) return check(cmd, args) } @@ -1102,15 +1100,7 @@ Get a direct group member. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - _, err = fmt.Sscan(args[0], &getDirectGroupMemberProxyReq.GroupId) - if err != nil { - return fmt.Errorf("invalid GROUP_ID: %s", args[0]) - } - - _, err = fmt.Sscan(args[1], &getDirectGroupMemberProxyReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[1]) - } + getDirectGroupMemberProxyReq.Name = args[0] response, err := w.WorkspaceIamV2.GetDirectGroupMemberProxy(ctx, getDirectGroupMemberProxyReq) if err != nil { @@ -1342,7 +1332,7 @@ func newGetGroupProxy() *cobra.Command { var getGroupProxyReq iamv2.GetGroupProxyRequest - cmd.Use = "get-group-proxy GROUP_ID" + cmd.Use = "get-group-proxy NAME" cmd.Short = `*Beta* Get a group in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -1352,7 +1342,7 @@ Get a group in the account. the calling workspace. Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks.` + NAME: The resource name of the group. Format: groups/{group_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1368,7 +1358,7 @@ Get a group in the account. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - getGroupProxyReq.GroupId = args[0] + getGroupProxyReq.Name = args[0] response, err := w.WorkspaceIamV2.GetGroupProxy(ctx, getGroupProxyReq) if err != nil { @@ -1404,7 +1394,7 @@ func newGetServicePrincipalProxy() *cobra.Command { var getServicePrincipalProxyReq iamv2.GetServicePrincipalProxyRequest - cmd.Use = "get-service-principal-proxy SERVICE_PRINCIPAL_ID" + cmd.Use = "get-service-principal-proxy NAME" cmd.Short = `*Beta* Get a service principal in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -1414,7 +1404,8 @@ Get a service principal in the account. that parents the calling workspace. Arguments: - SERVICE_PRINCIPAL_ID: Required. Internal ID of the service principal in Databricks.` + NAME: The resource name of the service principal. Format: + service-principals/{service_principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1430,7 +1421,7 @@ Get a service principal in the account. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - getServicePrincipalProxyReq.ServicePrincipalId = args[0] + getServicePrincipalProxyReq.Name = args[0] response, err := w.WorkspaceIamV2.GetServicePrincipalProxy(ctx, getServicePrincipalProxyReq) if err != nil { @@ -1466,7 +1457,7 @@ func newGetUserProxy() *cobra.Command { var getUserProxyReq iamv2.GetUserProxyRequest - cmd.Use = "get-user-proxy USER_ID" + cmd.Use = "get-user-proxy NAME" cmd.Short = `*Beta* Get a user in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -1476,7 +1467,7 @@ Get a user in the account. calling workspace. Arguments: - USER_ID: Required. Internal ID of the user in Databricks.` + NAME: The resource name of the user. Format: users/{user_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1492,7 +1483,7 @@ Get a user in the account. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - getUserProxyReq.UserId = args[0] + getUserProxyReq.Name = args[0] response, err := w.WorkspaceIamV2.GetUserProxy(ctx, getUserProxyReq) if err != nil { @@ -1530,7 +1521,7 @@ func newGetWorkspaceAccessDetailLocal() *cobra.Command { cmd.Flags().Var(&getWorkspaceAccessDetailLocalReq.View, "view", `Controls what fields are returned. Supported values: [BASIC, FULL]`) - cmd.Use = "get-workspace-access-detail-local PRINCIPAL_ID" + cmd.Use = "get-workspace-access-detail-local NAME" cmd.Short = `*Beta* Get workspace access details for a principal.` cmd.Long = `This command is in Beta and may change without notice. @@ -1544,8 +1535,8 @@ Get workspace access details for a principal. parameter to control what fields are returned (BASIC by default or FULL). Arguments: - PRINCIPAL_ID: Required. The internal ID of the principal (user/sp/group) for which the - access details are being requested.` + NAME: The resource name of the workspace access detail. Format: + workspace-access-details/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1561,10 +1552,7 @@ Get workspace access details for a principal. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - _, err = fmt.Sscan(args[0], &getWorkspaceAccessDetailLocalReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) - } + getWorkspaceAccessDetailLocalReq.Name = args[0] response, err := w.WorkspaceIamV2.GetWorkspaceAccessDetailLocal(ctx, getWorkspaceAccessDetailLocalReq) if err != nil { @@ -1666,7 +1654,7 @@ func newGetWorkspaceAssignmentProxy() *cobra.Command { var getWorkspaceAssignmentProxyReq iamv2.GetWorkspaceAssignmentProxyRequest - cmd.Use = "get-workspace-assignment-proxy PRINCIPAL_ID" + cmd.Use = "get-workspace-assignment-proxy NAME" cmd.Short = `*Beta* Get a workspace assignment for a principal.` cmd.Long = `This command is in Beta and may change without notice. @@ -1675,8 +1663,8 @@ Get a workspace assignment for a principal. Returns the assignment for a principal in the calling workspace. Arguments: - PRINCIPAL_ID: Required. The internal ID of the principal (user/sp/group) for which the - assignment is being requested.` + NAME: The resource name of the workspace assignment. Format: + workspace-assignments/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1692,10 +1680,7 @@ Get a workspace assignment for a principal. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - _, err = fmt.Sscan(args[0], &getWorkspaceAssignmentProxyReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) - } + getWorkspaceAssignmentProxyReq.Name = args[0] response, err := w.WorkspaceIamV2.GetWorkspaceAssignmentProxy(ctx, getWorkspaceAssignmentProxyReq) if err != nil { @@ -1731,7 +1716,7 @@ func newGetWorkspaceIdentityDetail() *cobra.Command { var getWorkspaceIdentityDetailReq iamv2.GetWorkspaceIdentityDetailRequest - cmd.Use = "get-workspace-identity-detail PRINCIPAL_ID" + cmd.Use = "get-workspace-identity-detail NAME" cmd.Short = `*Beta* Get workspace identity details for a principal.` cmd.Long = `This command is in Beta and may change without notice. @@ -1740,8 +1725,8 @@ Get workspace identity details for a principal. Returns the identity details for a principal in a workspace. Arguments: - PRINCIPAL_ID: Required. The internal ID of the principal (user/sp/group) for which the - identity details are being requested.` + NAME: The resource name of the workspace identity detail. Format: + principals/{principal_id}/workspace-identity-detail` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1757,10 +1742,7 @@ Get workspace identity details for a principal. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - _, err = fmt.Sscan(args[0], &getWorkspaceIdentityDetailReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) - } + getWorkspaceIdentityDetailReq.Name = args[0] response, err := w.WorkspaceIamV2.GetWorkspaceIdentityDetail(ctx, getWorkspaceIdentityDetailReq) if err != nil { @@ -1809,7 +1791,7 @@ func newListDirectGroupMembersProxy() *cobra.Command { cmd.Flags().StringVar(&listDirectGroupMembersProxyReq.PageToken, "page-token", listDirectGroupMembersProxyReq.PageToken, `Pagination token.`) cmd.Flags().Lookup("page-token").Hidden = true - cmd.Use = "list-direct-group-members-proxy GROUP_ID" + cmd.Use = "list-direct-group-members-proxy PARENT" cmd.Short = `*Beta* List direct group members.` cmd.Long = `This command is in Beta and may change without notice. @@ -1819,8 +1801,8 @@ List direct group members. (internal or from identity provider). Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks whose direct members are - being listed.` + PARENT: The parent resource name of the group whose direct members to list. + Format: groups/{group_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -1836,10 +1818,7 @@ List direct group members. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - _, err = fmt.Sscan(args[0], &listDirectGroupMembersProxyReq.GroupId) - if err != nil { - return fmt.Errorf("invalid GROUP_ID: %s", args[0]) - } + listDirectGroupMembersProxyReq.Parent = args[0] response := w.WorkspaceIamV2.ListDirectGroupMembersProxy(ctx, listDirectGroupMembersProxyReq) if listDirectGroupMembersProxyLimit < 0 { @@ -1884,6 +1863,7 @@ func newListGroupsProxy() *cobra.Command { cmd.Flags().StringVar(&listGroupsProxyReq.Filter, "filter", listGroupsProxyReq.Filter, `Optional.`) cmd.Flags().IntVar(&listGroupsProxyReq.PageSize, "page-size", listGroupsProxyReq.PageSize, `The maximum number of groups to return.`) + cmd.Flags().StringVar(&listGroupsProxyReq.Parent, "parent", listGroupsProxyReq.Parent, `The resource name of the account to list groups in, accounts/{account_id}.`) // Limit flag for total result capping. cmd.Flags().IntVar(&listGroupsProxyLimit, "limit", 0, `Maximum number of results to return.`) @@ -1958,6 +1938,7 @@ func newListServicePrincipalsProxy() *cobra.Command { cmd.Flags().StringVar(&listServicePrincipalsProxyReq.Filter, "filter", listServicePrincipalsProxyReq.Filter, `Optional.`) cmd.Flags().IntVar(&listServicePrincipalsProxyReq.PageSize, "page-size", listServicePrincipalsProxyReq.PageSize, `The maximum number of SPs to return.`) + cmd.Flags().StringVar(&listServicePrincipalsProxyReq.Parent, "parent", listServicePrincipalsProxyReq.Parent, `The resource name of the account to list service principals in, accounts/{account_id}.`) // Limit flag for total result capping. cmd.Flags().IntVar(&listServicePrincipalsProxyLimit, "limit", 0, `Maximum number of results to return.`) @@ -2030,7 +2011,7 @@ func newListTransitiveParentGroupsProxy() *cobra.Command { cmd.Flags().IntVar(&listTransitiveParentGroupsProxyReq.PageSize, "page-size", listTransitiveParentGroupsProxyReq.PageSize, `The maximum number of parent groups to return.`) cmd.Flags().StringVar(&listTransitiveParentGroupsProxyReq.PageToken, "page-token", listTransitiveParentGroupsProxyReq.PageToken, `A page token, received from a previous ListTransitiveParentGroups call.`) - cmd.Use = "list-transitive-parent-groups-proxy PRINCIPAL_ID" + cmd.Use = "list-transitive-parent-groups-proxy PARENT" cmd.Short = `*Beta* List all transitive parent groups of a principal.` cmd.Long = `This command is in Beta and may change without notice. @@ -2039,8 +2020,8 @@ List all transitive parent groups of a principal. Lists all transitive parent groups of a principal. Arguments: - PRINCIPAL_ID: Required. Internal ID of the principal in Databricks whose transitive - parent groups are being listed.` + PARENT: The parent resource name of the principal whose transitive parent groups + to list. Format: principals/{principal_id}` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -2056,10 +2037,7 @@ List all transitive parent groups of a principal. ctx := cmd.Context() w := cmdctx.WorkspaceClient(ctx) - _, err = fmt.Sscan(args[0], &listTransitiveParentGroupsProxyReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) - } + listTransitiveParentGroupsProxyReq.Parent = args[0] response, err := w.WorkspaceIamV2.ListTransitiveParentGroupsProxy(ctx, listTransitiveParentGroupsProxyReq) if err != nil { @@ -2101,6 +2079,7 @@ func newListUsersProxy() *cobra.Command { cmd.Flags().StringVar(&listUsersProxyReq.Filter, "filter", listUsersProxyReq.Filter, `Optional.`) cmd.Flags().IntVar(&listUsersProxyReq.PageSize, "page-size", listUsersProxyReq.PageSize, `The maximum number of users to return.`) + cmd.Flags().StringVar(&listUsersProxyReq.Parent, "parent", listUsersProxyReq.Parent, `The resource name of the account to list users in, accounts/{account_id}.`) // Limit flag for total result capping. cmd.Flags().IntVar(&listUsersProxyLimit, "limit", 0, `Maximum number of results to return.`) @@ -2250,6 +2229,7 @@ func newListWorkspaceAssignmentsProxy() *cobra.Command { var listWorkspaceAssignmentsProxyLimit int cmd.Flags().IntVar(&listWorkspaceAssignmentsProxyReq.PageSize, "page-size", listWorkspaceAssignmentsProxyReq.PageSize, `The maximum number of workspace assignments to return.`) + cmd.Flags().StringVar(&listWorkspaceAssignmentsProxyReq.Parent, "parent", listWorkspaceAssignmentsProxyReq.Parent, `The resource name of the workspace to list assignments of, accounts/{account_id}/workspaces/{workspace_id}.`) // Limit flag for total result capping. cmd.Flags().IntVar(&listWorkspaceAssignmentsProxyLimit, "limit", 0, `Maximum number of results to return.`) @@ -2589,8 +2569,9 @@ func newUpdateGroupProxy() *cobra.Command { cmd.Flags().StringVar(&updateGroupProxyReq.Group.ExternalId, "external-id", updateGroupProxyReq.Group.ExternalId, `ExternalId of the group in the customer's IdP.`) cmd.Flags().StringVar(&updateGroupProxyReq.Group.GroupName, "group-name", updateGroupProxyReq.Group.GroupName, `Display name of the group.`) + cmd.Flags().StringVar(&updateGroupProxyReq.Group.Name, "name", updateGroupProxyReq.Group.Name, `The resource name of the group.`) - cmd.Use = "update-group-proxy GROUP_ID UPDATE_MASK" + cmd.Use = "update-group-proxy NAME UPDATE_MASK" cmd.Short = `*Beta* Update a group in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -2606,7 +2587,9 @@ Update a group in the account. external_id must identify a visible group. Clearing external_id is allowed. Arguments: - GROUP_ID: Required. Internal ID of the group in Databricks. + NAME: The resource name of the group. The format depends on the API that + returned it: - Account-scoped: accounts/{account_id}/groups/{group_id} - + Workspace-scoped: groups/{group_id} UPDATE_MASK: Required. The list of fields to update.` cmd.Annotations = make(map[string]string) @@ -2635,7 +2618,7 @@ Update a group in the account. } } } - updateGroupProxyReq.GroupId = args[0] + updateGroupProxyReq.Name = args[0] updateGroupProxyReq.UpdateMask = args[1] response, err := w.WorkspaceIamV2.UpdateGroupProxy(ctx, updateGroupProxyReq) @@ -2677,8 +2660,9 @@ func newUpdateServicePrincipalProxy() *cobra.Command { cmd.Flags().Var(&updateServicePrincipalProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Flags().StringVar(&updateServicePrincipalProxyReq.ServicePrincipal.ExternalId, "external-id", updateServicePrincipalProxyReq.ServicePrincipal.ExternalId, `ExternalId of the service principal in the customer's IdP.`) + cmd.Flags().StringVar(&updateServicePrincipalProxyReq.ServicePrincipal.Name, "name", updateServicePrincipalProxyReq.ServicePrincipal.Name, `The resource name of the service principal.`) - cmd.Use = "update-service-principal-proxy SERVICE_PRINCIPAL_ID UPDATE_MASK DISPLAY_NAME ACCOUNT_SP_STATUS" + cmd.Use = "update-service-principal-proxy NAME UPDATE_MASK DISPLAY_NAME ACCOUNT_SP_STATUS" cmd.Short = `*Beta* Update a service principal in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -2688,15 +2672,18 @@ Update a service principal in the account. the calling workspace. Only the fields named in the update mask are modified. Returns the updated ServicePrincipal resource. - For locally managed service principals, is_agent must be set to true or false - when updated. + To change is_agent on a locally managed service principal, set it to true or + false. Naming is_agent in the update mask without a value leaves it unchanged. When AIM is enabled and the service principal is an external identity (its external_id is set), only external_id can be updated; its other fields are sourced from your identity provider. Arguments: - SERVICE_PRINCIPAL_ID: Required. Internal ID of the service principal in Databricks. + NAME: The resource name of the service principal. The format depends on the API + that returned it: - Account-scoped: + accounts/{account_id}/service-principals/{service_principal_id} - + Workspace-scoped: service-principals/{service_principal_id} UPDATE_MASK: Required. The list of fields to update. DISPLAY_NAME: Display name of the service principal. ACCOUNT_SP_STATUS: The activity status of a service principal in a Databricks account. @@ -2710,7 +2697,7 @@ Update a service principal in the account. if cmd.Flags().Changed("json") { err := root.ExactArgs(2)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only SERVICE_PRINCIPAL_ID, UPDATE_MASK as positional arguments. Provide 'display_name', 'account_sp_status' in your JSON input") + return errors.New("when --json flag is specified, provide only NAME, UPDATE_MASK as positional arguments. Provide 'display_name', 'account_sp_status' in your JSON input") } return nil } @@ -2735,7 +2722,7 @@ Update a service principal in the account. } } } - updateServicePrincipalProxyReq.ServicePrincipalId = args[0] + updateServicePrincipalProxyReq.Name = args[0] updateServicePrincipalProxyReq.UpdateMask = args[1] if !cmd.Flags().Changed("json") { updateServicePrincipalProxyReq.ServicePrincipal.DisplayName = args[2] @@ -2787,8 +2774,9 @@ func newUpdateUserProxy() *cobra.Command { cmd.Flags().Var(&updateUserProxyJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Flags().StringVar(&updateUserProxyReq.User.ExternalId, "external-id", updateUserProxyReq.User.ExternalId, `ExternalId of the user in the customer's IdP.`) + cmd.Flags().StringVar(&updateUserProxyReq.User.Name, "name", updateUserProxyReq.User.Name, `The resource name of the user.`) - cmd.Use = "update-user-proxy USER_ID UPDATE_MASK USERNAME FULL_NAME ACCOUNT_USER_STATUS" + cmd.Use = "update-user-proxy NAME UPDATE_MASK USERNAME FULL_NAME ACCOUNT_USER_STATUS" cmd.Short = `*Beta* Update a user in the account.` cmd.Long = `This command is in Beta and may change without notice. @@ -2804,7 +2792,9 @@ Update a user in the account. identity provider. Arguments: - USER_ID: Required. Internal ID of the user in Databricks. + NAME: The resource name of the user. The format depends on the API that returned + it: - Account-scoped: accounts/{account_id}/users/{user_id} - + Workspace-scoped: users/{user_id} UPDATE_MASK: Required. The list of fields to update. USERNAME: Username/email of the user. FULL_NAME: @@ -2819,7 +2809,7 @@ Update a user in the account. if cmd.Flags().Changed("json") { err := root.ExactArgs(2)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only USER_ID, UPDATE_MASK as positional arguments. Provide 'username', 'full_name', 'account_user_status' in your JSON input") + return errors.New("when --json flag is specified, provide only NAME, UPDATE_MASK as positional arguments. Provide 'username', 'full_name', 'account_user_status' in your JSON input") } return nil } @@ -2844,7 +2834,7 @@ Update a user in the account. } } } - updateUserProxyReq.UserId = args[0] + updateUserProxyReq.Name = args[0] updateUserProxyReq.UpdateMask = args[1] if !cmd.Flags().Changed("json") { updateUserProxyReq.User.Username = args[2] @@ -3012,8 +3002,9 @@ func newUpdateWorkspaceAssignmentProxy() *cobra.Command { // TODO: array: effective_entitlements // TODO: array: entitlements + cmd.Flags().StringVar(&updateWorkspaceAssignmentProxyReq.WorkspaceAssignment.Name, "name", updateWorkspaceAssignmentProxyReq.WorkspaceAssignment.Name, `The resource name of the workspace assignment.`) - cmd.Use = "update-workspace-assignment-proxy PRINCIPAL_ID UPDATE_MASK PRINCIPAL_ID" + cmd.Use = "update-workspace-assignment-proxy NAME UPDATE_MASK PRINCIPAL_ID" cmd.Short = `*Beta* Update a workspace assignment for a workspace.` cmd.Long = `This command is in Beta and may change without notice. @@ -3025,9 +3016,14 @@ Update a workspace assignment for a workspace. Get the assignment afterwards to confirm the final state. Arguments: - PRINCIPAL_ID: Required. ID of the principal in Databricks. + NAME: The resource name of the workspace assignment. The format depends on the + API that returned it: - Account-scoped: + accounts/{account_id}/workspaces/{workspace_id}/workspace-assignments/{principal_id} + - Workspace-scoped: workspace-assignments/{principal_id} UPDATE_MASK: Required. The list of fields to update. - PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks.` + PRINCIPAL_ID: The internal ID of the principal (user/sp/group) in Databricks. Set when + the assignment is created and cannot be changed afterwards; to assign a + different principal, create a new assignment.` cmd.Annotations = make(map[string]string) cmd.Annotations["launch_stage"] = "PUBLIC_BETA" @@ -3037,7 +3033,7 @@ Update a workspace assignment for a workspace. if cmd.Flags().Changed("json") { err := root.ExactArgs(2)(cmd, args) if err != nil { - return errors.New("when --json flag is specified, provide only PRINCIPAL_ID, UPDATE_MASK as positional arguments. Provide 'principal_id' in your JSON input") + return errors.New("when --json flag is specified, provide only NAME, UPDATE_MASK as positional arguments. Provide 'principal_id' in your JSON input") } return nil } @@ -3062,11 +3058,7 @@ Update a workspace assignment for a workspace. } } } - _, err = fmt.Sscan(args[0], &updateWorkspaceAssignmentProxyReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) - } - + updateWorkspaceAssignmentProxyReq.Name = args[0] if args[1] != "" { updateMaskArray := strings.Split(args[1], ",") updateWorkspaceAssignmentProxyReq.UpdateMask = *fieldmask.New(updateMaskArray) @@ -3117,9 +3109,10 @@ func newUpdateWorkspaceIdentityDetail() *cobra.Command { cmd.Flags().Var(&updateWorkspaceIdentityDetailJson, "json", `either inline JSON string or @path/to/file.json with request body`) + cmd.Flags().StringVar(&updateWorkspaceIdentityDetailReq.WorkspaceIdentityDetail.Name, "name", updateWorkspaceIdentityDetailReq.WorkspaceIdentityDetail.Name, `The resource name of the workspace identity detail.`) cmd.Flags().Var(&updateWorkspaceIdentityDetailReq.WorkspaceIdentityDetail.WorkspaceIdentityStatus, "workspace-identity-status", `The activity status of an identity in a Databricks workspace. Supported values: [ACTIVE, INACTIVE]`) - cmd.Use = "update-workspace-identity-detail PRINCIPAL_ID UPDATE_MASK" + cmd.Use = "update-workspace-identity-detail NAME UPDATE_MASK" cmd.Short = `*Beta* Update workspace identity details for a principal.` cmd.Long = `This command is in Beta and may change without notice. @@ -3128,7 +3121,8 @@ Update workspace identity details for a principal. Updates a workspace identity detail for a principal. Arguments: - PRINCIPAL_ID: Required. ID of the principal in Databricks. + NAME: The resource name of the workspace identity detail. Format: + principals/{principal_id}/workspace-identity-detail UPDATE_MASK: Required. The list of fields to update.` cmd.Annotations = make(map[string]string) @@ -3157,11 +3151,7 @@ Update workspace identity details for a principal. } } } - _, err = fmt.Sscan(args[0], &updateWorkspaceIdentityDetailReq.PrincipalId) - if err != nil { - return fmt.Errorf("invalid PRINCIPAL_ID: %s", args[0]) - } - + updateWorkspaceIdentityDetailReq.Name = args[0] if args[1] != "" { updateMaskArray := strings.Split(args[1], ",") updateWorkspaceIdentityDetailReq.UpdateMask = *fieldmask.New(updateMaskArray) diff --git a/internal/cligen/templates/service.go.tmpl b/internal/cligen/templates/service.go.tmpl index f17bcedde67..a13724dca2b 100644 --- a/internal/cligen/templates/service.go.tmpl +++ b/internal/cligen/templates/service.go.tmpl @@ -57,7 +57,7 @@ import ( ]{{end}}{{end}} {{define "service"}} -{{- $excludeMethods := list "put-secret" -}} +{{- $excludeMethods := list "put-secret" "upload-file" -}} {{- $hideService := .IsHiddenCLI }} // Slice with functions to override default command behavior. diff --git a/python/databricks/bundles/alerts/_models/alert.py b/python/databricks/bundles/alerts/_models/alert.py index 7ae71fa8db0..e6dbf9d8448 100644 --- a/python/databricks/bundles/alerts/_models/alert.py +++ b/python/databricks/bundles/alerts/_models/alert.py @@ -100,7 +100,7 @@ class Alert(Resource): """ :meta private: [EXPERIMENTAL] - [Private Preview] A list of parameters to pass into the alert SQL query statement containing parameter markers. Static values only. + [Beta] A list of parameters to pass into the alert SQL query statement containing parameter markers. Static values only. Reference a parameter in the query text as `:name`. Each parameter must have a unique, non-empty name. Each parameter consists of a name, a value, and optionally a type. To represent a NULL @@ -205,7 +205,7 @@ class AlertDict(TypedDict, total=False): """ :meta private: [EXPERIMENTAL] - [Private Preview] A list of parameters to pass into the alert SQL query statement containing parameter markers. Static values only. + [Beta] A list of parameters to pass into the alert SQL query statement containing parameter markers. Static values only. Reference a parameter in the query text as `:name`. Each parameter must have a unique, non-empty name. Each parameter consists of a name, a value, and optionally a type. To represent a NULL diff --git a/python/databricks/bundles/alerts/_models/alert_statement_parameter.py b/python/databricks/bundles/alerts/_models/alert_statement_parameter.py index def206d148d..68aca4333c9 100644 --- a/python/databricks/bundles/alerts/_models/alert_statement_parameter.py +++ b/python/databricks/bundles/alerts/_models/alert_statement_parameter.py @@ -14,8 +14,6 @@ @dataclass(kw_only=True) class AlertStatementParameter: """ - :meta private: [EXPERIMENTAL] - A named parameter bound to the alert query. Only flat, named scalar parameters are supported; complex types such as ARRAY, MAP, and STRUCT are not. """ @@ -24,7 +22,7 @@ class AlertStatementParameter: """ :meta private: [EXPERIMENTAL] - [Private Preview] The name of the parameter. Reference it in the query text as `:name`. Required, must be + [Beta] The name of the parameter. Reference it in the query text as `:name`. Required, must be non-empty, and must be unique across the alert's parameters. """ @@ -32,7 +30,7 @@ class AlertStatementParameter: """ :meta private: [EXPERIMENTAL] - [Private Preview] The SQL data type of the parameter, for example `STRING`, `INT`, or `DECIMAL(10, 2)`. If no type is given + [Beta] The SQL data type of the parameter, for example `STRING`, `INT`, or `DECIMAL(10, 2)`. If no type is given the type is assumed to be `STRING`. Complex types such as `ARRAY`, `MAP`, and `STRUCT` are not supported. """ @@ -40,7 +38,7 @@ class AlertStatementParameter: """ :meta private: [EXPERIMENTAL] - [Private Preview] The value bound to the parameter, represented as a string. If omitted, the value is interpreted as NULL. + [Beta] The value bound to the parameter, represented as a string. If omitted, the value is interpreted as NULL. """ @classmethod @@ -58,7 +56,7 @@ class AlertStatementParameterDict(TypedDict, total=False): """ :meta private: [EXPERIMENTAL] - [Private Preview] The name of the parameter. Reference it in the query text as `:name`. Required, must be + [Beta] The name of the parameter. Reference it in the query text as `:name`. Required, must be non-empty, and must be unique across the alert's parameters. """ @@ -66,7 +64,7 @@ class AlertStatementParameterDict(TypedDict, total=False): """ :meta private: [EXPERIMENTAL] - [Private Preview] The SQL data type of the parameter, for example `STRING`, `INT`, or `DECIMAL(10, 2)`. If no type is given + [Beta] The SQL data type of the parameter, for example `STRING`, `INT`, or `DECIMAL(10, 2)`. If no type is given the type is assumed to be `STRING`. Complex types such as `ARRAY`, `MAP`, and `STRUCT` are not supported. """ @@ -74,7 +72,7 @@ class AlertStatementParameterDict(TypedDict, total=False): """ :meta private: [EXPERIMENTAL] - [Private Preview] The value bound to the parameter, represented as a string. If omitted, the value is interpreted as NULL. + [Beta] The value bound to the parameter, represented as a string. If omitted, the value is interpreted as NULL. """ diff --git a/python/databricks/bundles/catalogs/_models/privilege.py b/python/databricks/bundles/catalogs/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/catalogs/_models/privilege.py +++ b/python/databricks/bundles/catalogs/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/external_locations/_models/privilege.py b/python/databricks/bundles/external_locations/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/external_locations/_models/privilege.py +++ b/python/databricks/bundles/external_locations/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/features/_models/time_window.py b/python/databricks/bundles/features/_models/time_window.py index 85bd6a488dd..3dd1f565596 100644 --- a/python/databricks/bundles/features/_models/time_window.py +++ b/python/databricks/bundles/features/_models/time_window.py @@ -56,7 +56,8 @@ class TimeWindow: tumbling and fixed-duration sliding windows first emit at an offset-aligned boundary after a full window can be formed. If unset, lifetime sliding windows and rolling windows emit as soon as eligible source data exists. - Not currently supported for sawtooth windows or for Features with a stream source. + For sawtooth windows, start_time must not be later than the time the Feature is created. + Not supported for rolling windows on Features with a stream source. """ tumbling: VariableOrOptional[TumblingWindow] = None @@ -97,7 +98,8 @@ class TimeWindowDict(TypedDict, total=False): tumbling and fixed-duration sliding windows first emit at an offset-aligned boundary after a full window can be formed. If unset, lifetime sliding windows and rolling windows emit as soon as eligible source data exists. - Not currently supported for sawtooth windows or for Features with a stream source. + For sawtooth windows, start_time must not be later than the time the Feature is created. + Not supported for rolling windows on Features with a stream source. """ tumbling: VariableOrOptional[TumblingWindowParam] diff --git a/python/databricks/bundles/jobs/__init__.py b/python/databricks/bundles/jobs/__init__.py index d264ad85b57..d75e2474de1 100644 --- a/python/databricks/bundles/jobs/__init__.py +++ b/python/databricks/bundles/jobs/__init__.py @@ -4,6 +4,28 @@ "Adlsgen2Info", "Adlsgen2InfoDict", "Adlsgen2InfoParam", + "AiClassifyFunction", + "AiClassifyFunctionDict", + "AiClassifyFunctionInlineLabels", + "AiClassifyFunctionInlineLabelsDict", + "AiClassifyFunctionInlineLabelsParam", + "AiClassifyFunctionLabel", + "AiClassifyFunctionLabelDict", + "AiClassifyFunctionLabelParam", + "AiClassifyFunctionParam", + "AiExtractFunction", + "AiExtractFunctionDict", + "AiExtractFunctionMode", + "AiExtractFunctionModeParam", + "AiExtractFunctionParam", + "AiFunctionTask", + "AiFunctionTaskDict", + "AiFunctionTaskParam", + "AiParseDocumentFunction", + "AiParseDocumentFunctionDescriptionElementType", + "AiParseDocumentFunctionDescriptionElementTypeParam", + "AiParseDocumentFunctionDict", + "AiParseDocumentFunctionParam", "AiRuntimeTask", "AiRuntimeTaskDict", "AiRuntimeTaskParam", @@ -90,6 +112,9 @@ "DbtTask", "DbtTaskDict", "DbtTaskParam", + "DeltaTableSource", + "DeltaTableSourceDict", + "DeltaTableSourceParam", "DependencyMode", "DependencyModeParam", "DependsOn", @@ -140,6 +165,17 @@ "JobCluster", "JobClusterDict", "JobClusterParam", + "JobClusterServerlessCompute", + "JobClusterServerlessComputeDict", + "JobClusterServerlessComputeParam", + "JobCompletionTriggerConfiguration", + "JobCompletionTriggerConfigurationDict", + "JobCompletionTriggerConfigurationIfStatus", + "JobCompletionTriggerConfigurationIfStatusParam", + "JobCompletionTriggerConfigurationMonitoredJob", + "JobCompletionTriggerConfigurationMonitoredJobDict", + "JobCompletionTriggerConfigurationMonitoredJobParam", + "JobCompletionTriggerConfigurationParam", "JobDict", "JobEmailNotifications", "JobEmailNotificationsDict", @@ -245,6 +281,9 @@ "PythonWheelTask", "PythonWheelTaskDict", "PythonWheelTaskParam", + "QualifiedName", + "QualifiedNameDict", + "QualifiedNameParam", "QueueSettings", "QueueSettingsDict", "QueueSettingsParam", @@ -345,6 +384,9 @@ "TriggerSettings", "TriggerSettingsDict", "TriggerSettingsParam", + "VolumeSource", + "VolumeSourceDict", + "VolumeSourceParam", "VolumesStorageInfo", "VolumesStorageInfoDict", "VolumesStorageInfoParam", @@ -368,6 +410,44 @@ Adlsgen2InfoDict, Adlsgen2InfoParam, ) +from databricks.bundles.jobs._models.ai_classify_function import ( + AiClassifyFunction, + AiClassifyFunctionDict, + AiClassifyFunctionParam, +) +from databricks.bundles.jobs._models.ai_classify_function_inline_labels import ( + AiClassifyFunctionInlineLabels, + AiClassifyFunctionInlineLabelsDict, + AiClassifyFunctionInlineLabelsParam, +) +from databricks.bundles.jobs._models.ai_classify_function_label import ( + AiClassifyFunctionLabel, + AiClassifyFunctionLabelDict, + AiClassifyFunctionLabelParam, +) +from databricks.bundles.jobs._models.ai_extract_function import ( + AiExtractFunction, + AiExtractFunctionDict, + AiExtractFunctionParam, +) +from databricks.bundles.jobs._models.ai_extract_function_mode import ( + AiExtractFunctionMode, + AiExtractFunctionModeParam, +) +from databricks.bundles.jobs._models.ai_function_task import ( + AiFunctionTask, + AiFunctionTaskDict, + AiFunctionTaskParam, +) +from databricks.bundles.jobs._models.ai_parse_document_function import ( + AiParseDocumentFunction, + AiParseDocumentFunctionDict, + AiParseDocumentFunctionParam, +) +from databricks.bundles.jobs._models.ai_parse_document_function_description_element_type import ( + AiParseDocumentFunctionDescriptionElementType, + AiParseDocumentFunctionDescriptionElementTypeParam, +) from databricks.bundles.jobs._models.ai_runtime_task import ( AiRuntimeTask, AiRuntimeTaskDict, @@ -504,6 +584,11 @@ DbtPlatformTaskParam, ) from databricks.bundles.jobs._models.dbt_task import DbtTask, DbtTaskDict, DbtTaskParam +from databricks.bundles.jobs._models.delta_table_source import ( + DeltaTableSource, + DeltaTableSourceDict, + DeltaTableSourceParam, +) from databricks.bundles.jobs._models.dependency_mode import ( DependencyMode, DependencyModeParam, @@ -587,6 +672,25 @@ JobClusterDict, JobClusterParam, ) +from databricks.bundles.jobs._models.job_cluster_serverless_compute import ( + JobClusterServerlessCompute, + JobClusterServerlessComputeDict, + JobClusterServerlessComputeParam, +) +from databricks.bundles.jobs._models.job_completion_trigger_configuration import ( + JobCompletionTriggerConfiguration, + JobCompletionTriggerConfigurationDict, + JobCompletionTriggerConfigurationParam, +) +from databricks.bundles.jobs._models.job_completion_trigger_configuration_if_status import ( + JobCompletionTriggerConfigurationIfStatus, + JobCompletionTriggerConfigurationIfStatusParam, +) +from databricks.bundles.jobs._models.job_completion_trigger_configuration_monitored_job import ( + JobCompletionTriggerConfigurationMonitoredJob, + JobCompletionTriggerConfigurationMonitoredJobDict, + JobCompletionTriggerConfigurationMonitoredJobParam, +) from databricks.bundles.jobs._models.job_email_notifications import ( JobEmailNotifications, JobEmailNotificationsDict, @@ -754,6 +858,11 @@ PythonWheelTaskDict, PythonWheelTaskParam, ) +from databricks.bundles.jobs._models.qualified_name import ( + QualifiedName, + QualifiedNameDict, + QualifiedNameParam, +) from databricks.bundles.jobs._models.queue_settings import ( QueueSettings, QueueSettingsDict, @@ -909,6 +1018,11 @@ TriggerSettingsDict, TriggerSettingsParam, ) +from databricks.bundles.jobs._models.volume_source import ( + VolumeSource, + VolumeSourceDict, + VolumeSourceParam, +) from databricks.bundles.jobs._models.volumes_storage_info import ( VolumesStorageInfo, VolumesStorageInfoDict, diff --git a/python/databricks/bundles/jobs/_models/ai_classify_function.py b/python/databricks/bundles/jobs/_models/ai_classify_function.py new file mode 100644 index 00000000000..7698e420781 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/ai_classify_function.py @@ -0,0 +1,128 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 VariableOr, VariableOrOptional +from databricks.bundles.jobs._models.ai_classify_function_inline_labels import ( + AiClassifyFunctionInlineLabels, + AiClassifyFunctionInlineLabelsParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class AiClassifyFunction: + """ + :meta private: [EXPERIMENTAL] + + Configuration for a task that runs the `ai_classify` function. + + The label set comes from exactly one of two places: `inline_labels`, which + holds up to 10 labels, or a Unity Catalog table named by `label_table`. Use + `label_table` for a larger label set. + """ + + version: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The ai_classify function version to invoke (for example, `2.1`). + """ + + enable_confidence_scores: VariableOrOptional[bool] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, includes a per-label confidence score in the response. + """ + + enable_rationales: VariableOrOptional[bool] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, includes a rationale explaining each classification in the response. + """ + + inline_labels: VariableOrOptional[AiClassifyFunctionInlineLabels] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Labels listed inline, for a small label set. + """ + + instructions: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Global description of the task and domain, passed to the model to improve + classification quality. + """ + + multilabel: VariableOrOptional[bool] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, more than one label can be returned for each input. + """ + + @classmethod + def from_dict(cls, value: "AiClassifyFunctionDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "AiClassifyFunctionDict": + return _transform_to_json_value(self) # type:ignore + + +class AiClassifyFunctionDict(TypedDict, total=False): + """""" + + version: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The ai_classify function version to invoke (for example, `2.1`). + """ + + enable_confidence_scores: VariableOrOptional[bool] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, includes a per-label confidence score in the response. + """ + + enable_rationales: VariableOrOptional[bool] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, includes a rationale explaining each classification in the response. + """ + + inline_labels: VariableOrOptional[AiClassifyFunctionInlineLabelsParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Labels listed inline, for a small label set. + """ + + instructions: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Global description of the task and domain, passed to the model to improve + classification quality. + """ + + multilabel: VariableOrOptional[bool] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, more than one label can be returned for each input. + """ + + +AiClassifyFunctionParam = AiClassifyFunctionDict | AiClassifyFunction diff --git a/python/databricks/bundles/jobs/_models/ai_classify_function_inline_labels.py b/python/databricks/bundles/jobs/_models/ai_classify_function_inline_labels.py new file mode 100644 index 00000000000..16c30ab6cd0 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/ai_classify_function_inline_labels.py @@ -0,0 +1,56 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 +from databricks.bundles.jobs._models.ai_classify_function_label import ( + AiClassifyFunctionLabel, + AiClassifyFunctionLabelParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class AiClassifyFunctionInlineLabels: + """ + :meta private: [EXPERIMENTAL] + + A label set listed inline. + """ + + labels: VariableOrList[AiClassifyFunctionLabel] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The labels an input can be classified as. At least two labels are required + unless `multilabel` is true, which also accepts a single label. + """ + + @classmethod + def from_dict(cls, value: "AiClassifyFunctionInlineLabelsDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "AiClassifyFunctionInlineLabelsDict": + return _transform_to_json_value(self) # type:ignore + + +class AiClassifyFunctionInlineLabelsDict(TypedDict, total=False): + """""" + + labels: VariableOrList[AiClassifyFunctionLabelParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The labels an input can be classified as. At least two labels are required + unless `multilabel` is true, which also accepts a single label. + """ + + +AiClassifyFunctionInlineLabelsParam = ( + AiClassifyFunctionInlineLabelsDict | AiClassifyFunctionInlineLabels +) diff --git a/python/databricks/bundles/jobs/_models/ai_classify_function_label.py b/python/databricks/bundles/jobs/_models/ai_classify_function_label.py new file mode 100644 index 00000000000..912a5286625 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/ai_classify_function_label.py @@ -0,0 +1,62 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 VariableOr, VariableOrOptional + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class AiClassifyFunctionLabel: + """ + :meta private: [EXPERIMENTAL] + + One label the input can be classified as. + """ + + name: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The name returned when an input is classified as this label. + """ + + description: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Guidance describing what belongs under this label. + """ + + @classmethod + def from_dict(cls, value: "AiClassifyFunctionLabelDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "AiClassifyFunctionLabelDict": + return _transform_to_json_value(self) # type:ignore + + +class AiClassifyFunctionLabelDict(TypedDict, total=False): + """""" + + name: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The name returned when an input is classified as this label. + """ + + description: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Guidance describing what belongs under this label. + """ + + +AiClassifyFunctionLabelParam = AiClassifyFunctionLabelDict | AiClassifyFunctionLabel diff --git a/python/databricks/bundles/jobs/_models/ai_extract_function.py b/python/databricks/bundles/jobs/_models/ai_extract_function.py new file mode 100644 index 00000000000..1d991f99636 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/ai_extract_function.py @@ -0,0 +1,138 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 VariableOr, VariableOrOptional +from databricks.bundles.jobs._models.ai_extract_function_mode import ( + AiExtractFunctionMode, + AiExtractFunctionModeParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class AiExtractFunction: + """ + :meta private: [EXPERIMENTAL] + + Configuration for a task that runs the `ai_extract` function. + + The fields to extract come from exactly one of two places: an existing AI + Extract agent, named by `agent_id`, or the inline `schema` and `instructions`. + Set `agent_id` or the inline fields, not both. + """ + + version: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The ai_extract function version to invoke (for example, `2.1`). + """ + + enable_citations: VariableOrOptional[bool] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, includes citation metadata locating each extracted value in the + source. + """ + + enable_confidence_scores: VariableOrOptional[bool] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, includes a per-field confidence score in the response. + """ + + instructions: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Global description of the task and domain, passed to the model to improve + extraction quality. + """ + + mode: VariableOrOptional[AiExtractFunctionMode] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The extraction mode. Defaults to standard extraction when unspecified. + """ + + schema: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The extraction schema defining the fields to extract, as a JSON string. + Either an array of field names (e.g. ["company", "valuation"]) or an object + mapping each field name to a type and an optional description. Supported + types are string, integer, number, boolean, enum, object, and array; all + fields are optional. + """ + + @classmethod + def from_dict(cls, value: "AiExtractFunctionDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "AiExtractFunctionDict": + return _transform_to_json_value(self) # type:ignore + + +class AiExtractFunctionDict(TypedDict, total=False): + """""" + + version: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The ai_extract function version to invoke (for example, `2.1`). + """ + + enable_citations: VariableOrOptional[bool] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, includes citation metadata locating each extracted value in the + source. + """ + + enable_confidence_scores: VariableOrOptional[bool] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] When true, includes a per-field confidence score in the response. + """ + + instructions: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Global description of the task and domain, passed to the model to improve + extraction quality. + """ + + mode: VariableOrOptional[AiExtractFunctionModeParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The extraction mode. Defaults to standard extraction when unspecified. + """ + + schema: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The extraction schema defining the fields to extract, as a JSON string. + Either an array of field names (e.g. ["company", "valuation"]) or an object + mapping each field name to a type and an optional description. Supported + types are string, integer, number, boolean, enum, object, and array; all + fields are optional. + """ + + +AiExtractFunctionParam = AiExtractFunctionDict | AiExtractFunction diff --git a/python/databricks/bundles/jobs/_models/ai_extract_function_mode.py b/python/databricks/bundles/jobs/_models/ai_extract_function_mode.py new file mode 100644 index 00000000000..af77c8e9680 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/ai_extract_function_mode.py @@ -0,0 +1,17 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +from enum import Enum +from typing import Literal + + +class AiExtractFunctionMode(Enum): + """ + :meta private: [EXPERIMENTAL] + + The extraction mode. + """ + + MODE_PRECISION = "MODE_PRECISION" + + +AiExtractFunctionModeParam = Literal["MODE_PRECISION"] | AiExtractFunctionMode diff --git a/python/databricks/bundles/jobs/_models/ai_function_task.py b/python/databricks/bundles/jobs/_models/ai_function_task.py new file mode 100644 index 00000000000..8904bbf5986 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/ai_function_task.py @@ -0,0 +1,144 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 VariableOr, VariableOrOptional +from databricks.bundles.jobs._models.ai_classify_function import ( + AiClassifyFunction, + AiClassifyFunctionParam, +) +from databricks.bundles.jobs._models.ai_extract_function import ( + AiExtractFunction, + AiExtractFunctionParam, +) +from databricks.bundles.jobs._models.ai_parse_document_function import ( + AiParseDocumentFunction, + AiParseDocumentFunctionParam, +) +from databricks.bundles.jobs._models.delta_table_source import ( + DeltaTableSource, + DeltaTableSourceParam, +) +from databricks.bundles.jobs._models.qualified_name import ( + QualifiedName, + QualifiedNameParam, +) +from databricks.bundles.jobs._models.volume_source import ( + VolumeSource, + VolumeSourceParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class AiFunctionTask: + """ + :meta private: [EXPERIMENTAL] + + A task that applies an AI function to a set of input documents or rows. + """ + + output: VariableOr[QualifiedName] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Output destination table. When `table` is unset the task generates a stable name from the + function and task identity so a downstream task can reference it. + """ + + ai_classify: VariableOrOptional[AiClassifyFunction] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Classifies each input document or row into one or more labels. + """ + + ai_extract: VariableOrOptional[AiExtractFunction] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Extracts structured fields from the input documents or rows. + """ + + ai_parse_document: VariableOrOptional[AiParseDocumentFunction] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Parses the input documents into structured text. + """ + + delta_table: VariableOrOptional[DeltaTableSource] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] A Unity Catalog Delta table. The function is applied to each row. + """ + + volume: VariableOrOptional[VolumeSource] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] A Unity Catalog volume. The function is applied to each file. + """ + + @classmethod + def from_dict(cls, value: "AiFunctionTaskDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "AiFunctionTaskDict": + return _transform_to_json_value(self) # type:ignore + + +class AiFunctionTaskDict(TypedDict, total=False): + """""" + + output: VariableOr[QualifiedNameParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Output destination table. When `table` is unset the task generates a stable name from the + function and task identity so a downstream task can reference it. + """ + + ai_classify: VariableOrOptional[AiClassifyFunctionParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Classifies each input document or row into one or more labels. + """ + + ai_extract: VariableOrOptional[AiExtractFunctionParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Extracts structured fields from the input documents or rows. + """ + + ai_parse_document: VariableOrOptional[AiParseDocumentFunctionParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Parses the input documents into structured text. + """ + + delta_table: VariableOrOptional[DeltaTableSourceParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] A Unity Catalog Delta table. The function is applied to each row. + """ + + volume: VariableOrOptional[VolumeSourceParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] A Unity Catalog volume. The function is applied to each file. + """ + + +AiFunctionTaskParam = AiFunctionTaskDict | AiFunctionTask diff --git a/python/databricks/bundles/jobs/_models/ai_parse_document_function.py b/python/databricks/bundles/jobs/_models/ai_parse_document_function.py new file mode 100644 index 00000000000..f91dc29dd93 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/ai_parse_document_function.py @@ -0,0 +1,108 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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, + VariableOrList, + VariableOrOptional, +) +from databricks.bundles.jobs._models.ai_parse_document_function_description_element_type import ( + AiParseDocumentFunctionDescriptionElementType, + AiParseDocumentFunctionDescriptionElementTypeParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class AiParseDocumentFunction: + """ + :meta private: [EXPERIMENTAL] + + Configuration for a task that runs the `ai_parse_document` function. + """ + + version: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The ai_parse_document output schema version to invoke (for example, `2.0`). + """ + + description_element_types: VariableOrList[ + AiParseDocumentFunctionDescriptionElementType + ] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Element types to generate AI descriptions for. Leave empty to generate no + descriptions; use ALL for every supported type, or list specific types to + restrict generation to only those. + """ + + image_output_path: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Unity Catalog volume path where rendered page and element images are written. + """ + + page_range: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Pages to parse (1-indexed), as a comma-separated list of page numbers or + ranges (e.g. "1,3,5-10"). + """ + + @classmethod + def from_dict(cls, value: "AiParseDocumentFunctionDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "AiParseDocumentFunctionDict": + return _transform_to_json_value(self) # type:ignore + + +class AiParseDocumentFunctionDict(TypedDict, total=False): + """""" + + version: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] The ai_parse_document output schema version to invoke (for example, `2.0`). + """ + + description_element_types: VariableOrList[ + AiParseDocumentFunctionDescriptionElementTypeParam + ] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Element types to generate AI descriptions for. Leave empty to generate no + descriptions; use ALL for every supported type, or list specific types to + restrict generation to only those. + """ + + image_output_path: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Unity Catalog volume path where rendered page and element images are written. + """ + + page_range: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Pages to parse (1-indexed), as a comma-separated list of page numbers or + ranges (e.g. "1,3,5-10"). + """ + + +AiParseDocumentFunctionParam = AiParseDocumentFunctionDict | AiParseDocumentFunction diff --git a/python/databricks/bundles/jobs/_models/ai_parse_document_function_description_element_type.py b/python/databricks/bundles/jobs/_models/ai_parse_document_function_description_element_type.py new file mode 100644 index 00000000000..5edc65b1477 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/ai_parse_document_function_description_element_type.py @@ -0,0 +1,21 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +from enum import Enum +from typing import Literal + + +class AiParseDocumentFunctionDescriptionElementType(Enum): + """ + :meta private: [EXPERIMENTAL] + + An element type that AI descriptions can be generated for. + """ + + DESCRIPTION_ELEMENT_TYPE_ALL = "DESCRIPTION_ELEMENT_TYPE_ALL" + DESCRIPTION_ELEMENT_TYPE_FIGURE = "DESCRIPTION_ELEMENT_TYPE_FIGURE" + + +AiParseDocumentFunctionDescriptionElementTypeParam = ( + Literal["DESCRIPTION_ELEMENT_TYPE_ALL", "DESCRIPTION_ELEMENT_TYPE_FIGURE"] + | AiParseDocumentFunctionDescriptionElementType +) diff --git a/python/databricks/bundles/jobs/_models/dashboard_task.py b/python/databricks/bundles/jobs/_models/dashboard_task.py index 7d07ea50175..502cdeeb303 100644 --- a/python/databricks/bundles/jobs/_models/dashboard_task.py +++ b/python/databricks/bundles/jobs/_models/dashboard_task.py @@ -6,10 +6,7 @@ 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, VariableOrOptional -from databricks.bundles.jobs._models.subscription import ( - Subscription, - SubscriptionParam, -) +from databricks.bundles.jobs._models.subscription import Subscription, SubscriptionParam if TYPE_CHECKING: from typing_extensions import Self diff --git a/python/databricks/bundles/jobs/_models/delta_table_source.py b/python/databricks/bundles/jobs/_models/delta_table_source.py new file mode 100644 index 00000000000..d82984c459d --- /dev/null +++ b/python/databricks/bundles/jobs/_models/delta_table_source.py @@ -0,0 +1,86 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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, VariableOrList + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class DeltaTableSource: + """ + :meta private: [EXPERIMENTAL] + + A Unity Catalog Delta table input source. The function is applied to each row. + """ + + input_column: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Name of the column holding the content the function is applied to. + """ + + table_name: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Fully qualified three-part name of the source table (catalog.schema.table). + """ + + merge_key_columns: VariableOrList[str] = field(default_factory=list) + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Columns that together identify a row across incremental runs, so results can + be matched back to their source rows. When unset, the task derives an + implicit key from Delta row tracking. If row tracking is also disabled there + is no stable key, so each run reprocesses the entire source (a full refresh) + rather than only the changed rows; set a key column or enable row tracking to + keep runs incremental. + """ + + @classmethod + def from_dict(cls, value: "DeltaTableSourceDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "DeltaTableSourceDict": + return _transform_to_json_value(self) # type:ignore + + +class DeltaTableSourceDict(TypedDict, total=False): + """""" + + input_column: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Name of the column holding the content the function is applied to. + """ + + table_name: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Fully qualified three-part name of the source table (catalog.schema.table). + """ + + merge_key_columns: VariableOrList[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Columns that together identify a row across incremental runs, so results can + be matched back to their source rows. When unset, the task derives an + implicit key from Delta row tracking. If row tracking is also disabled there + is no stable key, so each run reprocesses the entire source (a full refresh) + rather than only the changed rows; set a key column or enable row tracking to + keep runs incremental. + """ + + +DeltaTableSourceParam = DeltaTableSourceDict | DeltaTableSource diff --git a/python/databricks/bundles/jobs/_models/environment.py b/python/databricks/bundles/jobs/_models/environment.py index 19b177bd5bb..aa7b7f97347 100644 --- a/python/databricks/bundles/jobs/_models/environment.py +++ b/python/databricks/bundles/jobs/_models/environment.py @@ -22,13 +22,16 @@ class Environment: """ The base environment this environment is built on top of. A base environment defines the environment version and a list of dependencies for serverless compute. The value can be a file path to a custom `env.yaml` file - (e.g., `/Workspace/path/to/env.yaml`). Support for a Databricks-provided base environment ID + (e.g., `/Workspace/path/to/env.yaml`). + + Support for a Databricks-provided base environment ID (e.g., `workspace-base-environments/databricks_ai_v4`) and workspace base environment ID (e.g., `workspace-base-environments/dbe_b849b66e-b31a-4cb5-b161-1f2b10877fb7`) is in Beta. + Either `environment_version` or `base_environment` can be provided. + For more information about Databricks-provided base environments, see the [list workspace base environments](:method:Environments/ListWorkspaceBaseEnvironments) API. - For more information, see """ client: VariableOrOptional[str] = None @@ -43,14 +46,14 @@ class Environment: environment_version: VariableOrOptional[str] = None """ - Either `environment_version` or `base_environment` needs to be provided. Environment version used by the environment. + The environment version used by this environment. Either `environment_version` or `base_environment` must be provided. Each version comes with a specific Python version and a set of Python packages. The version is a string, consisting of an integer. """ java_dependencies: VariableOrList[str] = field(default_factory=list) """ - List of java dependencies. Each dependency is a string representing a java library path. For example: `/Volumes/path/to/test.jar`. + List of Java dependencies. Each dependency is a string representing a Java library path. For example: `/Volumes/path/to/test.jar`. """ project_environment: VariableOrOptional[str] = None @@ -60,7 +63,6 @@ class Environment: [Beta] Path to the `pyproject.toml` file that defines the project environment. This field cannot be combined with `environment_version`, `base_environment`, dependency fields, or any other environment-source fields. Set the environment version and dependencies in `pyproject.toml` instead. - For more information, see the serverless dependencies documentation. """ @classmethod @@ -78,13 +80,16 @@ class EnvironmentDict(TypedDict, total=False): """ The base environment this environment is built on top of. A base environment defines the environment version and a list of dependencies for serverless compute. The value can be a file path to a custom `env.yaml` file - (e.g., `/Workspace/path/to/env.yaml`). Support for a Databricks-provided base environment ID + (e.g., `/Workspace/path/to/env.yaml`). + + Support for a Databricks-provided base environment ID (e.g., `workspace-base-environments/databricks_ai_v4`) and workspace base environment ID (e.g., `workspace-base-environments/dbe_b849b66e-b31a-4cb5-b161-1f2b10877fb7`) is in Beta. + Either `environment_version` or `base_environment` can be provided. + For more information about Databricks-provided base environments, see the [list workspace base environments](:method:Environments/ListWorkspaceBaseEnvironments) API. - For more information, see """ client: VariableOrOptional[str] @@ -99,14 +104,14 @@ class EnvironmentDict(TypedDict, total=False): environment_version: VariableOrOptional[str] """ - Either `environment_version` or `base_environment` needs to be provided. Environment version used by the environment. + The environment version used by this environment. Either `environment_version` or `base_environment` must be provided. Each version comes with a specific Python version and a set of Python packages. The version is a string, consisting of an integer. """ java_dependencies: VariableOrList[str] """ - List of java dependencies. Each dependency is a string representing a java library path. For example: `/Volumes/path/to/test.jar`. + List of Java dependencies. Each dependency is a string representing a Java library path. For example: `/Volumes/path/to/test.jar`. """ project_environment: VariableOrOptional[str] @@ -116,7 +121,6 @@ class EnvironmentDict(TypedDict, total=False): [Beta] Path to the `pyproject.toml` file that defines the project environment. This field cannot be combined with `environment_version`, `base_environment`, dependency fields, or any other environment-source fields. Set the environment version and dependencies in `pyproject.toml` instead. - For more information, see the serverless dependencies documentation. """ diff --git a/python/databricks/bundles/jobs/_models/job.py b/python/databricks/bundles/jobs/_models/job.py index e38305c7d02..b1fd2187031 100644 --- a/python/databricks/bundles/jobs/_models/job.py +++ b/python/databricks/bundles/jobs/_models/job.py @@ -19,7 +19,10 @@ CronSchedule, CronScheduleParam, ) -from databricks.bundles.jobs._models.git_source import GitSource, GitSourceParam +from databricks.bundles.jobs._models.git_source import ( + GitSource, + GitSourceParam, +) from databricks.bundles.jobs._models.job_cluster import JobCluster, JobClusterParam from databricks.bundles.jobs._models.job_email_notifications import ( JobEmailNotifications, @@ -131,8 +134,9 @@ class Job(Resource): """ A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode. - For notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the environment_key is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment. - For other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using environment_key in the task settings. + For notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the `environment_key` is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment. + + For other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using `environment_key` in the task settings. """ git_source: VariableOrOptional[GitSource] = None @@ -326,8 +330,9 @@ class JobDict(TypedDict, total=False): """ A list of task execution environment specifications that can be referenced by tasks that use serverless compute or a compute resource that uses Environments mode. - For notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the environment_key is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment. - For other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using environment_key in the task settings. + For notebook tasks that use serverless compute or a compute resource that uses Environments mode, if the `environment_key` is not specified, the notebook environment will be used if present. If a jobs environment is specified, it will override the notebook environment. + + For other tasks that use serverless compute or a compute resource that uses Environments mode, the task environment is required to be specified using `environment_key` in the task settings. """ git_source: VariableOrOptional[GitSourceParam] diff --git a/python/databricks/bundles/jobs/_models/job_cluster.py b/python/databricks/bundles/jobs/_models/job_cluster.py index 8c3390db857..3674b325b2e 100644 --- a/python/databricks/bundles/jobs/_models/job_cluster.py +++ b/python/databricks/bundles/jobs/_models/job_cluster.py @@ -7,6 +7,10 @@ from databricks.bundles.core._transform_to_json import _transform_to_json_value from databricks.bundles.core._variable import VariableOr, VariableOrOptional from databricks.bundles.jobs._models.cluster_spec import ClusterSpec, ClusterSpecParam +from databricks.bundles.jobs._models.job_cluster_serverless_compute import ( + JobClusterServerlessCompute, + JobClusterServerlessComputeParam, +) if TYPE_CHECKING: from typing_extensions import Self @@ -27,6 +31,15 @@ class JobCluster: If new_cluster, a description of a cluster that is created for each task. """ + serverless_compute: VariableOrOptional[JobClusterServerlessCompute] = None + """ + :meta private: [EXPERIMENTAL] + + [Beta] Serverless compute settings for this cluster. At most one job cluster per job + may set this field; the rate limit defined on the referenced policy applies + across all tasks bound to this cluster. + """ + serverless_compute_id: VariableOrOptional[str] = None """ :meta private: [EXPERIMENTAL] @@ -58,6 +71,15 @@ class JobClusterDict(TypedDict, total=False): If new_cluster, a description of a cluster that is created for each task. """ + serverless_compute: VariableOrOptional[JobClusterServerlessComputeParam] + """ + :meta private: [EXPERIMENTAL] + + [Beta] Serverless compute settings for this cluster. At most one job cluster per job + may set this field; the rate limit defined on the referenced policy applies + across all tasks bound to this cluster. + """ + serverless_compute_id: VariableOrOptional[str] """ :meta private: [EXPERIMENTAL] diff --git a/python/databricks/bundles/jobs/_models/job_cluster_serverless_compute.py b/python/databricks/bundles/jobs/_models/job_cluster_serverless_compute.py new file mode 100644 index 00000000000..64a5250912b --- /dev/null +++ b/python/databricks/bundles/jobs/_models/job_cluster_serverless_compute.py @@ -0,0 +1,48 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 JobClusterServerlessCompute: + """ + Serverless compute settings for a job cluster. + """ + + policy_id: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Beta] The ID of the serverless compute policy to apply to this cluster. + """ + + @classmethod + def from_dict(cls, value: "JobClusterServerlessComputeDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "JobClusterServerlessComputeDict": + return _transform_to_json_value(self) # type:ignore + + +class JobClusterServerlessComputeDict(TypedDict, total=False): + """""" + + policy_id: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Beta] The ID of the serverless compute policy to apply to this cluster. + """ + + +JobClusterServerlessComputeParam = ( + JobClusterServerlessComputeDict | JobClusterServerlessCompute +) diff --git a/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration.py b/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration.py new file mode 100644 index 00000000000..f99ce7a7517 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration.py @@ -0,0 +1,74 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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.job_completion_trigger_configuration_if_status import ( + JobCompletionTriggerConfigurationIfStatus, + JobCompletionTriggerConfigurationIfStatusParam, +) +from databricks.bundles.jobs._models.job_completion_trigger_configuration_monitored_job import ( + JobCompletionTriggerConfigurationMonitoredJob, + JobCompletionTriggerConfigurationMonitoredJobParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class JobCompletionTriggerConfiguration: + """ + A trigger that starts a run after every upstream job completes with a configured status. + """ + + if_status: VariableOrOptional[JobCompletionTriggerConfigurationIfStatus] = None + """ + :meta private: [EXPERIMENTAL] + + [Beta] The status that all upstream jobs must have before this trigger fires. Defaults to SUCCESS. + """ + + jobs: VariableOrList[JobCompletionTriggerConfigurationMonitoredJob] = field( + default_factory=list + ) + """ + :meta private: [EXPERIMENTAL] + + [Beta] The upstream jobs to monitor. Each job must be in a workspace attached to the same Unity Catalog metastore as + the downstream job. A maximum of 10 jobs can be monitored. + """ + + @classmethod + def from_dict(cls, value: "JobCompletionTriggerConfigurationDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "JobCompletionTriggerConfigurationDict": + return _transform_to_json_value(self) # type:ignore + + +class JobCompletionTriggerConfigurationDict(TypedDict, total=False): + """""" + + if_status: VariableOrOptional[JobCompletionTriggerConfigurationIfStatusParam] + """ + :meta private: [EXPERIMENTAL] + + [Beta] The status that all upstream jobs must have before this trigger fires. Defaults to SUCCESS. + """ + + jobs: VariableOrList[JobCompletionTriggerConfigurationMonitoredJobParam] + """ + :meta private: [EXPERIMENTAL] + + [Beta] The upstream jobs to monitor. Each job must be in a workspace attached to the same Unity Catalog metastore as + the downstream job. A maximum of 10 jobs can be monitored. + """ + + +JobCompletionTriggerConfigurationParam = ( + JobCompletionTriggerConfigurationDict | JobCompletionTriggerConfiguration +) diff --git a/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration_if_status.py b/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration_if_status.py new file mode 100644 index 00000000000..d918092eaaa --- /dev/null +++ b/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration_if_status.py @@ -0,0 +1,19 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +from enum import Enum +from typing import Literal + + +class JobCompletionTriggerConfigurationIfStatus(Enum): + """ + The status that all upstream jobs must have before a job completion trigger fires. + """ + + SUCCESS = "SUCCESS" + FAILED = "FAILED" + DONE = "DONE" + + +JobCompletionTriggerConfigurationIfStatusParam = ( + Literal["SUCCESS", "FAILED", "DONE"] | JobCompletionTriggerConfigurationIfStatus +) diff --git a/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration_monitored_job.py b/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration_monitored_job.py new file mode 100644 index 00000000000..377008f2908 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/job_completion_trigger_configuration_monitored_job.py @@ -0,0 +1,71 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 VariableOr + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class JobCompletionTriggerConfigurationMonitoredJob: + """ + An upstream job to monitor. + """ + + job_id: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Beta] The ID of the upstream job. + """ + + workspace_id: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Beta] The ID of the workspace containing the upstream job. + This can differ from the caller's workspace and downstream services enforce + correct entitlements and CAN_VIEW permissions for the user + job combination. + SDR: https://databricks.atlassian.net/browse/SDR-5267 + """ + + @classmethod + def from_dict( + cls, value: "JobCompletionTriggerConfigurationMonitoredJobDict" + ) -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "JobCompletionTriggerConfigurationMonitoredJobDict": + return _transform_to_json_value(self) # type:ignore + + +class JobCompletionTriggerConfigurationMonitoredJobDict(TypedDict, total=False): + """""" + + job_id: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Beta] The ID of the upstream job. + """ + + workspace_id: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Beta] The ID of the workspace containing the upstream job. + This can differ from the caller's workspace and downstream services enforce + correct entitlements and CAN_VIEW permissions for the user + job combination. + SDR: https://databricks.atlassian.net/browse/SDR-5267 + """ + + +JobCompletionTriggerConfigurationMonitoredJobParam = ( + JobCompletionTriggerConfigurationMonitoredJobDict + | JobCompletionTriggerConfigurationMonitoredJob +) diff --git a/python/databricks/bundles/jobs/_models/qualified_name.py b/python/databricks/bundles/jobs/_models/qualified_name.py new file mode 100644 index 00000000000..34e85a1aca4 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/qualified_name.py @@ -0,0 +1,76 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 QualifiedName: + """ + :meta private: [EXPERIMENTAL] + + A three-level Unity Catalog name (catalog.schema.table); any level may be unset. + """ + + catalog: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Unity Catalog catalog. + """ + + schema: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Unity Catalog schema, within the catalog. + """ + + table: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Table, within the catalog and schema. + """ + + @classmethod + def from_dict(cls, value: "QualifiedNameDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "QualifiedNameDict": + return _transform_to_json_value(self) # type:ignore + + +class QualifiedNameDict(TypedDict, total=False): + """""" + + catalog: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Unity Catalog catalog. + """ + + schema: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Unity Catalog schema, within the catalog. + """ + + table: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Table, within the catalog and schema. + """ + + +QualifiedNameParam = QualifiedNameDict | QualifiedName diff --git a/python/databricks/bundles/jobs/_models/subscription.py b/python/databricks/bundles/jobs/_models/subscription.py index 55de6336d7b..a4720b891e5 100644 --- a/python/databricks/bundles/jobs/_models/subscription.py +++ b/python/databricks/bundles/jobs/_models/subscription.py @@ -25,9 +25,7 @@ class Subscription: attachment: VariableOrOptional[SubscriptionAttachment] = None """ - :meta private: [EXPERIMENTAL] - - [Beta] Optional: The configuration for the files attached to the dashboard snapshot notification. It + [Public Preview] Optional: The configuration for the files attached to the dashboard snapshot notification. It controls the underlying data of dashboard widgets that is attached as data files and which pages are included in the attached PDF. If not specified, the notification is sent with only the default snapshot. @@ -62,9 +60,7 @@ class SubscriptionDict(TypedDict, total=False): attachment: VariableOrOptional[SubscriptionAttachmentParam] """ - :meta private: [EXPERIMENTAL] - - [Beta] Optional: The configuration for the files attached to the dashboard snapshot notification. It + [Public Preview] Optional: The configuration for the files attached to the dashboard snapshot notification. It controls the underlying data of dashboard widgets that is attached as data files and which pages are included in the attached PDF. If not specified, the notification is sent with only the default snapshot. diff --git a/python/databricks/bundles/jobs/_models/subscription_attachment.py b/python/databricks/bundles/jobs/_models/subscription_attachment.py index 0bc23c65229..1ec3ab16427 100644 --- a/python/databricks/bundles/jobs/_models/subscription_attachment.py +++ b/python/databricks/bundles/jobs/_models/subscription_attachment.py @@ -30,17 +30,13 @@ class SubscriptionAttachment: data_attachment: VariableOrOptional[SubscriptionAttachmentDataAttachment] = None """ - :meta private: [EXPERIMENTAL] - - [Beta] Optional: The configuration for the underlying data of dashboard widgets attached as tabular + [Public Preview] Optional: The configuration for the underlying data of dashboard widgets attached as tabular data files. If not specified, no tabular data is attached. """ page_attachment: VariableOrOptional[SubscriptionAttachmentPageAttachment] = None """ - :meta private: [EXPERIMENTAL] - - [Beta] Optional: The selection of dashboard pages included in the attached PDF. If not specified, + [Public Preview] Optional: The selection of dashboard pages included in the attached PDF. If not specified, only the first page is included. """ @@ -57,17 +53,13 @@ class SubscriptionAttachmentDict(TypedDict, total=False): data_attachment: VariableOrOptional[SubscriptionAttachmentDataAttachmentParam] """ - :meta private: [EXPERIMENTAL] - - [Beta] Optional: The configuration for the underlying data of dashboard widgets attached as tabular + [Public Preview] Optional: The configuration for the underlying data of dashboard widgets attached as tabular data files. If not specified, no tabular data is attached. """ page_attachment: VariableOrOptional[SubscriptionAttachmentPageAttachmentParam] """ - :meta private: [EXPERIMENTAL] - - [Beta] Optional: The selection of dashboard pages included in the attached PDF. If not specified, + [Public Preview] Optional: The selection of dashboard pages included in the attached PDF. If not specified, only the first page is included. """ diff --git a/python/databricks/bundles/jobs/_models/subscription_attachment_data_attachment.py b/python/databricks/bundles/jobs/_models/subscription_attachment_data_attachment.py index d998d07d7b6..651a3b0236c 100644 --- a/python/databricks/bundles/jobs/_models/subscription_attachment_data_attachment.py +++ b/python/databricks/bundles/jobs/_models/subscription_attachment_data_attachment.py @@ -33,16 +33,12 @@ class SubscriptionAttachmentDataAttachment: file_format: VariableOr[SubscriptionAttachmentDataAttachmentFileFormat] """ - :meta private: [EXPERIMENTAL] - - [Beta] The file format of the exported tabular data files. + [Public Preview] The file format of the exported tabular data files. """ include_applied_filters: VariableOrOptional[bool] = None """ - :meta private: [EXPERIMENTAL] - - [Beta] When true, the dashboard's applied filter values are included alongside the tabular data as + [Public Preview] When true, the dashboard's applied filter values are included alongside the tabular data as an additional attached file. """ @@ -50,9 +46,7 @@ class SubscriptionAttachmentDataAttachment: default_factory=list ) """ - :meta private: [EXPERIMENTAL] - - [Beta] The widgets whose underlying data is exported. At least one widget must be referenced. + [Public Preview] The widgets whose underlying data is exported. At least one widget must be referenced. """ @classmethod @@ -68,24 +62,18 @@ class SubscriptionAttachmentDataAttachmentDict(TypedDict, total=False): file_format: VariableOr[SubscriptionAttachmentDataAttachmentFileFormatParam] """ - :meta private: [EXPERIMENTAL] - - [Beta] The file format of the exported tabular data files. + [Public Preview] The file format of the exported tabular data files. """ include_applied_filters: VariableOrOptional[bool] """ - :meta private: [EXPERIMENTAL] - - [Beta] When true, the dashboard's applied filter values are included alongside the tabular data as + [Public Preview] When true, the dashboard's applied filter values are included alongside the tabular data as an additional attached file. """ widgets: VariableOrList[SubscriptionAttachmentDataAttachmentWidgetParam] """ - :meta private: [EXPERIMENTAL] - - [Beta] The widgets whose underlying data is exported. At least one widget must be referenced. + [Public Preview] The widgets whose underlying data is exported. At least one widget must be referenced. """ diff --git a/python/databricks/bundles/jobs/_models/subscription_attachment_data_attachment_widget.py b/python/databricks/bundles/jobs/_models/subscription_attachment_data_attachment_widget.py index be802c0e07e..e5db963c65c 100644 --- a/python/databricks/bundles/jobs/_models/subscription_attachment_data_attachment_widget.py +++ b/python/databricks/bundles/jobs/_models/subscription_attachment_data_attachment_widget.py @@ -21,18 +21,14 @@ class SubscriptionAttachmentDataAttachmentWidget: page_id: VariableOr[str] """ - :meta private: [EXPERIMENTAL] - - [Beta] The URL identifier of the page containing the widget. This is the value of the `name` + [Public Preview] The URL identifier of the page containing the widget. This is the value of the `name` field of the corresponding entry under `pages` in the serialized dashboard definition. Format: alphanumeric, hyphen, and underscore characters allowed, max length 63. """ widget_id: VariableOr[str] """ - :meta private: [EXPERIMENTAL] - - [Beta] The URL identifier of the widget. This is the value of the `name` field of the + [Public Preview] The URL identifier of the widget. This is the value of the `name` field of the corresponding widget under that page's `layout` in the serialized dashboard definition. Format: alphanumeric, hyphen, and underscore characters allowed, max length 63. """ @@ -52,18 +48,14 @@ class SubscriptionAttachmentDataAttachmentWidgetDict(TypedDict, total=False): page_id: VariableOr[str] """ - :meta private: [EXPERIMENTAL] - - [Beta] The URL identifier of the page containing the widget. This is the value of the `name` + [Public Preview] The URL identifier of the page containing the widget. This is the value of the `name` field of the corresponding entry under `pages` in the serialized dashboard definition. Format: alphanumeric, hyphen, and underscore characters allowed, max length 63. """ widget_id: VariableOr[str] """ - :meta private: [EXPERIMENTAL] - - [Beta] The URL identifier of the widget. This is the value of the `name` field of the + [Public Preview] The URL identifier of the widget. This is the value of the `name` field of the corresponding widget under that page's `layout` in the serialized dashboard definition. Format: alphanumeric, hyphen, and underscore characters allowed, max length 63. """ diff --git a/python/databricks/bundles/jobs/_models/subscription_attachment_page_attachment.py b/python/databricks/bundles/jobs/_models/subscription_attachment_page_attachment.py index 087c872fad4..e527f7166f7 100644 --- a/python/databricks/bundles/jobs/_models/subscription_attachment_page_attachment.py +++ b/python/databricks/bundles/jobs/_models/subscription_attachment_page_attachment.py @@ -24,9 +24,7 @@ class SubscriptionAttachmentPageAttachment: page_ids: VariableOrList[str] = field(default_factory=list) """ - :meta private: [EXPERIMENTAL] - - [Beta] The identifiers of the pages to include in the PDF. Only specified when `page_selection` is + [Public Preview] The identifiers of the pages to include in the PDF. Only specified when `page_selection` is `PAGE_SELECTION_SUBSET`. Each value is the identifier of a page in the dashboard's serialized definition returned by the Get dashboard API (`serialized_dashboard`): the value of the `name` field of an entry under `pages`. @@ -37,9 +35,7 @@ class SubscriptionAttachmentPageAttachment: SubscriptionAttachmentPageAttachmentPageSelection ] = None """ - :meta private: [EXPERIMENTAL] - - [Beta] How the attached pages are selected. When set to `PAGE_SELECTION_SUBSET`, the pages to + [Public Preview] How the attached pages are selected. When set to `PAGE_SELECTION_SUBSET`, the pages to include are listed in `page_ids`. """ @@ -56,9 +52,7 @@ class SubscriptionAttachmentPageAttachmentDict(TypedDict, total=False): page_ids: VariableOrList[str] """ - :meta private: [EXPERIMENTAL] - - [Beta] The identifiers of the pages to include in the PDF. Only specified when `page_selection` is + [Public Preview] The identifiers of the pages to include in the PDF. Only specified when `page_selection` is `PAGE_SELECTION_SUBSET`. Each value is the identifier of a page in the dashboard's serialized definition returned by the Get dashboard API (`serialized_dashboard`): the value of the `name` field of an entry under `pages`. @@ -69,9 +63,7 @@ class SubscriptionAttachmentPageAttachmentDict(TypedDict, total=False): SubscriptionAttachmentPageAttachmentPageSelectionParam ] """ - :meta private: [EXPERIMENTAL] - - [Beta] How the attached pages are selected. When set to `PAGE_SELECTION_SUBSET`, the pages to + [Public Preview] How the attached pages are selected. When set to `PAGE_SELECTION_SUBSET`, the pages to include are listed in `page_ids`. """ diff --git a/python/databricks/bundles/jobs/_models/task.py b/python/databricks/bundles/jobs/_models/task.py index c459192ba2b..b0e414635fc 100644 --- a/python/databricks/bundles/jobs/_models/task.py +++ b/python/databricks/bundles/jobs/_models/task.py @@ -10,6 +10,10 @@ VariableOrList, VariableOrOptional, ) +from databricks.bundles.jobs._models.ai_function_task import ( + AiFunctionTask, + AiFunctionTaskParam, +) from databricks.bundles.jobs._models.ai_runtime_task import ( AiRuntimeTask, AiRuntimeTaskParam, @@ -34,7 +38,10 @@ DbtPlatformTaskParam, ) from databricks.bundles.jobs._models.dbt_task import DbtTask, DbtTaskParam -from databricks.bundles.jobs._models.for_each_task import ForEachTask, ForEachTaskParam +from databricks.bundles.jobs._models.for_each_task import ( + ForEachTask, + ForEachTaskParam, +) from databricks.bundles.jobs._models.gen_ai_compute_task import ( GenAiComputeTask, GenAiComputeTaskParam, @@ -62,10 +69,7 @@ PythonWheelTaskParam, ) from databricks.bundles.jobs._models.run_if import RunIf, RunIfParam -from databricks.bundles.jobs._models.run_job_task import ( - RunJobTask, - RunJobTaskParam, -) +from databricks.bundles.jobs._models.run_job_task import RunJobTask, RunJobTaskParam from databricks.bundles.jobs._models.spark_jar_task import ( SparkJarTask, SparkJarTaskParam, @@ -111,6 +115,13 @@ class Task: On Update or Reset, this field is used to reference the tasks to be updated or reset. """ + ai_function_task: VariableOrOptional[AiFunctionTask] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Applies an AI function to a set of input documents or rows. + """ + ai_runtime_task: VariableOrOptional[AiRuntimeTask] = None """ [Public Preview] The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify @@ -358,6 +369,13 @@ class TaskDict(TypedDict, total=False): On Update or Reset, this field is used to reference the tasks to be updated or reset. """ + ai_function_task: VariableOrOptional[AiFunctionTaskParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Applies an AI function to a set of input documents or rows. + """ + ai_runtime_task: VariableOrOptional[AiRuntimeTaskParam] """ [Public Preview] The task runs a multi-gpu compute workload on Databricks AI Runtime. Specify diff --git a/python/databricks/bundles/jobs/_models/trigger_configuration.py b/python/databricks/bundles/jobs/_models/trigger_configuration.py index b9663effddc..78f40fc76ae 100644 --- a/python/databricks/bundles/jobs/_models/trigger_configuration.py +++ b/python/databricks/bundles/jobs/_models/trigger_configuration.py @@ -18,6 +18,10 @@ FileArrivalTriggerConfiguration, FileArrivalTriggerConfigurationParam, ) +from databricks.bundles.jobs._models.job_completion_trigger_configuration import ( + JobCompletionTriggerConfiguration, + JobCompletionTriggerConfigurationParam, +) from databricks.bundles.jobs._models.model_trigger_configuration import ( ModelTriggerConfiguration, ModelTriggerConfigurationParam, @@ -63,6 +67,13 @@ class TriggerConfiguration: [Beta] File arrival trigger configuration. """ + job_completion: VariableOrOptional[JobCompletionTriggerConfiguration] = None + """ + :meta private: [EXPERIMENTAL] + + [Beta] Job completion trigger configuration. + """ + model: VariableOrOptional[ModelTriggerConfiguration] = None """ :meta private: [EXPERIMENTAL] @@ -131,6 +142,13 @@ class TriggerConfigurationDict(TypedDict, total=False): [Beta] File arrival trigger configuration. """ + job_completion: VariableOrOptional[JobCompletionTriggerConfigurationParam] + """ + :meta private: [EXPERIMENTAL] + + [Beta] Job completion trigger configuration. + """ + model: VariableOrOptional[ModelTriggerConfigurationParam] """ :meta private: [EXPERIMENTAL] diff --git a/python/databricks/bundles/jobs/_models/trigger_settings.py b/python/databricks/bundles/jobs/_models/trigger_settings.py index 878f45732fa..42044a88493 100644 --- a/python/databricks/bundles/jobs/_models/trigger_settings.py +++ b/python/databricks/bundles/jobs/_models/trigger_settings.py @@ -10,6 +10,10 @@ FileArrivalTriggerConfiguration, FileArrivalTriggerConfigurationParam, ) +from databricks.bundles.jobs._models.job_completion_trigger_configuration import ( + JobCompletionTriggerConfiguration, + JobCompletionTriggerConfigurationParam, +) from databricks.bundles.jobs._models.model_trigger_configuration import ( ModelTriggerConfiguration, ModelTriggerConfigurationParam, @@ -41,6 +45,13 @@ class TriggerSettings: File arrival trigger settings. """ + job_completion: VariableOrOptional[JobCompletionTriggerConfiguration] = None + """ + :meta private: [EXPERIMENTAL] + + [Beta] Job completion trigger settings. + """ + model: VariableOrOptional[ModelTriggerConfiguration] = None """ :meta private: [EXPERIMENTAL] @@ -84,6 +95,13 @@ class TriggerSettingsDict(TypedDict, total=False): File arrival trigger settings. """ + job_completion: VariableOrOptional[JobCompletionTriggerConfigurationParam] + """ + :meta private: [EXPERIMENTAL] + + [Beta] Job completion trigger settings. + """ + model: VariableOrOptional[ModelTriggerConfigurationParam] """ :meta private: [EXPERIMENTAL] diff --git a/python/databricks/bundles/jobs/_models/volume_source.py b/python/databricks/bundles/jobs/_models/volume_source.py new file mode 100644 index 00000000000..e15ceaa7e97 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/volume_source.py @@ -0,0 +1,50 @@ +# Code generated by pydabs-codegen. DO NOT EDIT. + +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 VariableOr + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class VolumeSource: + """ + :meta private: [EXPERIMENTAL] + + A Unity Catalog volume input source. The function is applied to each file. + """ + + volume_path: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Unity Catalog volume path to the input files + (e.g. `/Volumes////...`). + """ + + @classmethod + def from_dict(cls, value: "VolumeSourceDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "VolumeSourceDict": + return _transform_to_json_value(self) # type:ignore + + +class VolumeSourceDict(TypedDict, total=False): + """""" + + volume_path: VariableOr[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Unity Catalog volume path to the input files + (e.g. `/Volumes////...`). + """ + + +VolumeSourceParam = VolumeSourceDict | VolumeSource diff --git a/python/databricks/bundles/mcp_services/_models/privilege.py b/python/databricks/bundles/mcp_services/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/mcp_services/_models/privilege.py +++ b/python/databricks/bundles/mcp_services/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/model_provider_services/_models/privilege.py b/python/databricks/bundles/model_provider_services/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/model_provider_services/_models/privilege.py +++ b/python/databricks/bundles/model_provider_services/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/model_services/_models/privilege.py b/python/databricks/bundles/model_services/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/model_services/_models/privilege.py +++ b/python/databricks/bundles/model_services/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/registered_models/_models/privilege.py b/python/databricks/bundles/registered_models/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/registered_models/_models/privilege.py +++ b/python/databricks/bundles/registered_models/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/schemas/_models/privilege.py b/python/databricks/bundles/schemas/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/schemas/_models/privilege.py +++ b/python/databricks/bundles/schemas/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/secrets/_models/privilege.py b/python/databricks/bundles/secrets/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/secrets/_models/privilege.py +++ b/python/databricks/bundles/secrets/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/sql_warehouses/_models/sql_warehouse.py b/python/databricks/bundles/sql_warehouses/_models/sql_warehouse.py index f3033f894ab..5219f6443cc 100644 --- a/python/databricks/bundles/sql_warehouses/_models/sql_warehouse.py +++ b/python/databricks/bundles/sql_warehouses/_models/sql_warehouse.py @@ -108,8 +108,8 @@ class SqlWarehouse(Resource): :meta private: [EXPERIMENTAL] [Private Preview] Maximum compute capacity of a real-time SQL warehouse, in DBU per hour. - Must be a multiple of 3 between 3 and 960. The effective maximum cannot be - lower than the warehouse's minimum capacity. + Must be at least the minimum DBU for the selected warehouse size and no greater + than the configured DBU limit. Actual capacity may be below this ceiling. """ max_num_clusters: VariableOrOptional[int] = None @@ -275,8 +275,8 @@ class SqlWarehouseDict(TypedDict, total=False): :meta private: [EXPERIMENTAL] [Private Preview] Maximum compute capacity of a real-time SQL warehouse, in DBU per hour. - Must be a multiple of 3 between 3 and 960. The effective maximum cannot be - lower than the warehouse's minimum capacity. + Must be at least the minimum DBU for the selected warehouse size and no greater + than the configured DBU limit. Actual capacity may be below this ceiling. """ max_num_clusters: VariableOrOptional[int] diff --git a/python/databricks/bundles/vector_search_indexes/_models/privilege.py b/python/databricks/bundles/vector_search_indexes/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/vector_search_indexes/_models/privilege.py +++ b/python/databricks/bundles/vector_search_indexes/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege diff --git a/python/databricks/bundles/volumes/_models/privilege.py b/python/databricks/bundles/volumes/_models/privilege.py index df45211a76a..470bedfe94c 100644 --- a/python/databricks/bundles/volumes/_models/privilege.py +++ b/python/databricks/bundles/volumes/_models/privilege.py @@ -56,6 +56,8 @@ class Privilege(Enum): EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK" EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA" READ_METADATA = "READ_METADATA" + CREATE_FEATURE = "CREATE_FEATURE" + READ_FEATURE = "READ_FEATURE" EXTERNAL_USE_LOCATION = "EXTERNAL_USE_LOCATION" @@ -112,6 +114,8 @@ class Privilege(Enum): "EXECUTE_CLEAN_ROOM_TASK", "EXTERNAL_USE_SCHEMA", "READ_METADATA", + "CREATE_FEATURE", + "READ_FEATURE", "EXTERNAL_USE_LOCATION", ] | Privilege From 0d78719d2b17fa474c827bdfa2b7c4137c92a8a9 Mon Sep 17 00:00:00 2001 From: Pieter Noordhuis Date: Tue, 3 Nov 2026 08:34:18 +0100 Subject: [PATCH 3/3] Update help golden for Go SDK v0.193.0 Co-authored-by: Isaac --- acceptance/help/output.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acceptance/help/output.txt b/acceptance/help/output.txt index e8c2c2eed58..632c09ca2c1 100644 --- a/acceptance/help/output.txt +++ b/acceptance/help/output.txt @@ -152,7 +152,7 @@ Data Classification data-classification Manage data classification for Unity Catalog catalogs. Data Quality Monitoring - data-quality *Public Preview* Manage the data quality of Unity Catalog objects (currently support schema and table). + data-quality Manage the data quality of Unity Catalog objects (currently support schema and table). Database Instances database *Public Preview* Database Instances provide access to a database via REST API or direct SQL.