diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index c7cb7b3241a..cad92139214 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -02596aaa1588f0a22727f219c734c2cb867ef717 \ No newline at end of file +fc0241ef3fa690fe0d1bd2238dbdb4c4e58a12ab \ No newline at end of file diff --git a/.codegen/cli.json b/.codegen/cli.json index a924aff60c9..350196a7838 100644 --- a/.codegen/cli.json +++ b/.codegen/cli.json @@ -1312,6 +1312,10 @@ "OUTPUT_ONLY" ] }, + "forward_user_access_token": { + "description": "Forward the user's access token to the app. Requires stopping and starting app compute to take effect.", + "launch_stage": "PRIVATE_PREVIEW" + }, "git_repository": { "description": "Git repository configuration for app deployments. When specified, deployments can\nreference code from this repository by providing only the git reference (branch, tag, or commit).", "ref": "apps.GitRepository", @@ -2197,6 +2201,10 @@ "description": { "launch_stage": "GA" }, + "forward_user_access_token": { + "description": "Forward the user's access token to the app. Requires stopping and starting app compute to take effect.", + "launch_stage": "PRIVATE_PREVIEW" + }, "git_repository": { "ref": "apps.GitRepository", "launch_stage": "GA" @@ -3138,7 +3146,7 @@ "BLOCK_USAGE" ], "enum_launch_stages": { - "BLOCK_USAGE": "PRIVATE_PREVIEW", + "BLOCK_USAGE": "PUBLIC_BETA", "EMAIL_NOTIFICATION": "PUBLIC_PREVIEW" } }, @@ -3154,7 +3162,7 @@ }, "principal_overrides": { "description": "Per-principal threshold overrides for this alert. Only applies to per-user alerts (`scope_type` = `ALERT_CONFIGURATION_SCOPE_TYPE_PER_USER`); ignored for shared alerts.", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "quantity_threshold": { "description": "The threshold for the budget alert to determine if it is in a triggered state. The number is evaluated based on `quantity_type`.", @@ -3168,7 +3176,7 @@ "scope_type": { "description": "How the alert threshold is evaluated. Determines whether spend is tracked in aggregate or per individual user.", "ref": "billing.AlertConfigurationScopeType", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "time_period": { "description": "The time window of usage data for the budget.", @@ -3197,8 +3205,8 @@ "ALERT_CONFIGURATION_SCOPE_TYPE_PER_USER" ], "enum_launch_stages": { - "ALERT_CONFIGURATION_SCOPE_TYPE_PER_USER": "PRIVATE_PREVIEW", - "ALERT_CONFIGURATION_SCOPE_TYPE_SHARED": "PRIVATE_PREVIEW" + "ALERT_CONFIGURATION_SCOPE_TYPE_PER_USER": "PUBLIC_BETA", + "ALERT_CONFIGURATION_SCOPE_TYPE_SHARED": "PUBLIC_BETA" } }, "billing.AlertConfigurationTimePeriod": { @@ -3247,7 +3255,7 @@ "resource_type": { "description": "The resource scope for this budget. Determines whether the budget tracks all resources or a specific resource.", "ref": "billing.BudgetResourceType", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "update_time": { "description": "Update time of this budget configuration.", @@ -3349,8 +3357,8 @@ "BUDGET_RESOURCE_TYPE_UNITY_AI_GATEWAY" ], "enum_launch_stages": { - "BUDGET_RESOURCE_TYPE_ALL_RESOURCES": "PRIVATE_PREVIEW", - "BUDGET_RESOURCE_TYPE_UNITY_AI_GATEWAY": "PRIVATE_PREVIEW" + "BUDGET_RESOURCE_TYPE_ALL_RESOURCES": "PUBLIC_BETA", + "BUDGET_RESOURCE_TYPE_UNITY_AI_GATEWAY": "PUBLIC_BETA" } }, "billing.CreateBillingUsageDashboardRequest": { @@ -3401,7 +3409,7 @@ "resource_type": { "description": "The resource scope for this budget. Determines whether the budget tracks all resources or a specific resource.", "ref": "billing.BudgetResourceType", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -3426,7 +3434,7 @@ }, "principal_overrides": { "description": "Per-principal threshold overrides for this alert. Only applies to per-user alerts (`scope_type` = `ALERT_CONFIGURATION_SCOPE_TYPE_PER_USER`); ignored for shared alerts.", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "quantity_threshold": { "description": "The threshold for the budget alert to determine if it is in a triggered state. The number is evaluated based on `quantity_type`.", @@ -3440,7 +3448,7 @@ "scope_type": { "description": "How the alert threshold is evaluated. Determines whether spend is tracked in aggregate or per individual user.", "ref": "billing.AlertConfigurationScopeType", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "time_period": { "description": "The time window of usage data for the budget.", @@ -3870,11 +3878,11 @@ "fields": { "override_threshold": { "description": "Dollar amount that overrides the parent alert's quantity_threshold for this principal.", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" }, "principal_id": { "description": "Account-level principal id (user, group, or service principal).", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -3931,7 +3939,7 @@ "resource_type": { "description": "The resource scope for this budget. Determines whether the budget tracks all resources or a specific resource.", "ref": "billing.BudgetResourceType", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -4108,7 +4116,7 @@ ] }, "created_by": { - "description": "The user who created the deployment (email or principal name).", + "description": "The user who created the deployment (email or principal name). Empty if authoritative\ndeployment metadata does not identify a creator or the principal cannot be resolved.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OUTPUT_ONLY" @@ -4202,7 +4210,7 @@ ] }, "updated_by": { - "description": "The user who most recently updated the deployment (email or principal name).", + "description": "The user who most recently updated the deployment (email or principal name). Empty if\nauthoritative deployment metadata does not identify a modifier or the principal cannot be\nresolved.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OUTPUT_ONLY" @@ -4336,7 +4344,7 @@ "bundledeployments.ListDeploymentsRequest": { "fields": { "page_size": { - "description": "The maximum number of deployments to return. The service may return\nfewer than this value.\nIf unspecified, at most 20 deployments will be returned.\nThe maximum value is 100; values above 100 will be coerced to 100.", + "description": "The maximum number of deployments to return. The service may return\nfewer than this value.\nIf unspecified, at most 20 deployments will be returned.\nThe maximum value is 1000; values above 1000 will be coerced to 1000.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OPTIONAL" @@ -4510,7 +4518,7 @@ ] }, "resource_id": { - "description": "ID of the actual resource in the workspace (e.g. the job ID, pipeline ID).\nOptional at creation: CREATE and RECREATE operations produce a new resource\nwhose ID is not yet known when the operation is recorded. Mutable: may be\nfilled in (or corrected) later via UpdateOperation once the ID is known.", + "description": "ID of the actual resource in the workspace (e.g. the job ID, pipeline ID).\nRequired whenever `state` is set, because state records a resource that\nexists. A CREATE or RECREATE that has not produced its resource yet records\nneither. Mutable: may be filled in (or corrected) later via UpdateOperation\nonce the ID is known.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OPTIONAL" @@ -4539,7 +4547,7 @@ ] }, "state": { - "description": "Serialized local config state after the operation. Should be unset for\ndelete operations. Mutable: may be updated after creation via\nUpdateOperation. When updating, the caller must echo the last-observed\n`sequence_id` as a concurrency precondition.\n\nOpaque to this service: the string is stored and returned unchanged. This is\ndeliberately not google.protobuf.Value, whose only numeric case is\n`double number_value`, so parsing the client's JSON into it rewrites every\ninteger as a double - `1` reads back as `1.0`, which no longer deserializes\ninto an integer field - and silently loses precision above 2^53, which is\nwithin range for IDs the client records.\n\nA string rather than bytes: the payload is always UTF-8 JSON, and proto3 JSON\nmaps bytes to base64, which inflates every request and response by a third\nand makes state unreadable in logs and API responses. Both generate the same\nOpenAPI schema (\"type\": \"string\"), so the SDKs are identical either way.", + "description": "Serialized local config state after the operation. Its presence records\nwhether the resource still exists, so an operation that records no state\nremoves its resource from the deployment. It may be unset only for an\noperation that left no resource behind: a `DELETE` that succeeded, or a\n`CREATE` or `RECREATE` that failed. It is required otherwise, including for\na failed `DELETE`, whose resource survives.\n\nMutable: may be updated after creation via UpdateOperation. When updating,\nthe caller must echo the last-observed `sequence_id` as a concurrency\nprecondition.\n\nOpaque to this service: the string is stored and returned unchanged. This is\ndeliberately not google.protobuf.Value, whose only numeric case is\n`double number_value`, so parsing the client's JSON into it rewrites every\ninteger as a double - `1` reads back as `1.0`, which no longer deserializes\ninto an integer field - and silently loses precision above 2^53, which is\nwithin range for IDs the client records.\n\nA string rather than bytes: the payload is always UTF-8 JSON, and proto3 JSON\nmaps bytes to base64, which inflates every request and response by a third\nand makes state unreadable in logs and API responses. Both generate the same\nOpenAPI schema (\"type\": \"string\"), so the SDKs are identical either way.", "launch_stage": "PRIVATE_PREVIEW", "behaviors": [ "OPTIONAL" @@ -5762,6 +5770,7 @@ "DATABRICKS", "SALESFORCE", "BIGQUERY", + "NETSUITE", "WORKDAY_RAAS", "HIVE_METASTORE", "GA4_RAW_DATA", @@ -5796,6 +5805,7 @@ "JDBC": "PUBLIC_PREVIEW", "META_MARKETING": "PUBLIC_BETA", "MYSQL": "GA", + "NETSUITE": "GA", "ORACLE": "GA", "OUTLOOK": "PUBLIC_BETA", "POSTGRESQL": "GA", @@ -8446,17 +8456,7 @@ } } }, - "catalog.GetMcpServiceRequest": { - "fields": { - "include_browse": { - "description": "Whether to include MCP services for which the principal can only access\nselective metadata.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] - } - } - }, + "catalog.GetMcpServiceRequest": {}, "catalog.GetMetastoreRequest": {}, "catalog.GetMetastoreSummaryResponse": { "fields": { @@ -8540,28 +8540,8 @@ } } }, - "catalog.GetModelProviderServiceRequest": { - "fields": { - "include_browse": { - "description": "Whether to include provider services for which the principal can only\naccess selective metadata.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] - } - } - }, - "catalog.GetModelServiceRequest": { - "fields": { - "include_browse": { - "description": "Whether to include model services for which the principal can only access\nselective metadata.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] - } - } - }, + "catalog.GetModelProviderServiceRequest": {}, + "catalog.GetModelServiceRequest": {}, "catalog.GetModelVersionRequest": { "fields": { "include_aliases": { @@ -8620,7 +8600,17 @@ } } }, - "catalog.GetSecretRequest": {}, + "catalog.GetSecretRequest": { + "fields": { + "include_value": { + "description": "Whether to include the secret value in the response. Defaults to false. Requires the\n**READ_SECRET** privilege.", + "launch_stage": "GA", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, "catalog.GetStorageCredentialRequest": {}, "catalog.GetTableRequest": { "fields": { @@ -9028,13 +9018,6 @@ }, "catalog.ListMcpServicesRequest": { "fields": { - "include_browse": { - "description": "Whether to include MCP services for which the principal can only access\nselective metadata.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] - }, "page_size": { "description": "Maximum number of MCP services to return. Defaults to 100 when unset or 0;\nthe maximum is 100. Use `next_page_token` to retrieve additional pages.", "launch_stage": "PUBLIC_BETA", @@ -9116,13 +9099,6 @@ }, "catalog.ListModelProviderServicesRequest": { "fields": { - "include_browse": { - "description": "Whether to include provider services for which the principal can only\naccess selective metadata.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] - }, "page_size": { "description": "Maximum number of provider services to return. Defaults to 100 when unset or\n0; the maximum is 100. Use `next_page_token` to retrieve additional pages.", "launch_stage": "PUBLIC_BETA", @@ -9180,13 +9156,6 @@ }, "catalog.ListModelServicesRequest": { "fields": { - "include_browse": { - "description": "Whether to include model services for which the principal can only access\nselective metadata.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] - }, "page_size": { "description": "Maximum number of model services to return. Defaults to 100 when unset or 0;\nthe maximum is 100. Use `next_page_token` to retrieve additional pages.", "launch_stage": "PUBLIC_BETA", @@ -9693,13 +9662,6 @@ "catalog.McpService": { "description": "A governed MCP server registration in Unity Catalog. Acts as a container\nsecurable that references an MCP server -- customer-external via a UC\nConnection, or Databricks-hosted via an internal server -- and\nexposes its tools for discovery, authorization, and invocation.", "fields": { - "browse_only": { - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OUTPUT_ONLY" - ] - }, "comment": { "description": "User-provided description.", "launch_stage": "PUBLIC_BETA", @@ -9924,13 +9886,6 @@ "catalog.ModelProviderService": { "description": "A governed external model-provider connection stored in Unity Catalog (e.g.\nan OpenAI API account, an Azure OpenAI deployment, an Amazon Bedrock\naccount). Owns the provider type and the auth/configuration the platform\nneeds to invoke that provider, and is referenced from\n`ExternalModelConfig.model_provider_service` on a ModelService.\n\nOne ModelProviderService can back many ModelServices (e.g. an `openai_prod`\nprovider serving multiple models); a single ModelService can fan out across\nmultiple ModelProviderServices for traffic split or failover.", "fields": { - "browse_only": { - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OUTPUT_ONLY" - ] - }, "comment": { "description": "User-provided description.", "launch_stage": "PUBLIC_BETA", @@ -10141,7 +10096,7 @@ "description": "Direct form of Amazon Bedrock provider config.\n\nAuthentication is one of two mutually exclusive modes, exactly one of which\nmust be supplied on Create:\n- Access keys: set `aws_access_key`, leave `service_credential` unset.\n- UC service credential: set `service_credential.name` to the AIP-122\nresource-name form `credentials/{name}`, leave `aws_access_key` unset. The\ncredential value lives in UC and is referenced by name, not held on this\nmessage.\nSetting more than one mode is rejected.", "fields": { "aws_access_key": { - "description": "AWS access-key-pair auth. Mutually exclusive with `service_credential`.\nSupersedes the flat `aws_access_key_id` / `aws_secret_access_key` fields.", + "description": "AWS access-key-pair auth. Mutually exclusive with `service_credential`.", "ref": "catalog.ModelProviderServiceConfigAwsAccessKey", "launch_stage": "PUBLIC_BETA", "behaviors": [ @@ -10275,7 +10230,7 @@ ] }, "entra_service_principal": { - "description": "Entra ID (service principal) auth. Mutually exclusive with `api_key` and\n`service_credential`. Supersedes the flat `tenant_id` / `client_id` /\n`client_secret` fields.", + "description": "Entra ID (service principal) auth. Mutually exclusive with `api_key` and\n`service_credential`.", "ref": "catalog.ModelProviderServiceConfigEntraServicePrincipal", "launch_stage": "PUBLIC_BETA", "behaviors": [ @@ -10442,7 +10397,7 @@ ] }, "entra_service_principal": { - "description": "Entra ID (service principal) auth. Mutually exclusive with `api_key` and\n`service_credential`. Supersedes the flat `tenant_id` / `client_id` /\n`client_secret` fields.", + "description": "Entra ID (service principal) auth. Mutually exclusive with `api_key` and\n`service_credential`.", "ref": "catalog.ModelProviderServiceConfigEntraServicePrincipal", "launch_stage": "PUBLIC_BETA", "behaviors": [ @@ -10539,13 +10494,6 @@ "catalog.ModelService": { "description": "A governed AI Gateway endpoint in Unity Catalog that routes inference\nrequests to one or more model destinations (for example a foundation model\nor an external LLM reached through a ModelProviderService). Applies\ncentralized access control, rate limits, guardrails, and auditing to the\ntraffic it serves.", "fields": { - "browse_only": { - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OUTPUT_ONLY" - ] - }, "comment": { "description": "User-provided description.", "launch_stage": "PUBLIC_BETA", @@ -11598,7 +11546,7 @@ ] }, "for_securable_type": { - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "ref": "catalog.SecurableType", "launch_stage": "GA" }, @@ -17738,7 +17686,7 @@ }, "java_dependencies": { "description": "List of java dependencies. Each dependency is a string representing a java library path. For example: `/Volumes/path/to/test.jar`.", - "launch_stage": "PUBLIC_PREVIEW", + "launch_stage": "GA", "behaviors": [ "OPTIONAL" ] @@ -23615,11 +23563,11 @@ "auto_tagging_mode": { "description": "Whether auto-tagging is enabled or disabled for this classification tag.", "ref": "dataclassification.AutoTaggingConfigAutoTaggingMode", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" }, "classification_tag": { "description": "The Classification Tag. For built-in classes this is a system tag (e.g., \"class.name\",\n\"class.location\"); for custom classes it is a user-defined governance tag key.", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" } } }, @@ -23630,8 +23578,8 @@ "AUTO_TAGGING_ENABLED" ], "enum_launch_stages": { - "AUTO_TAGGING_DISABLED": "PUBLIC_BETA", - "AUTO_TAGGING_ENABLED": "PUBLIC_BETA" + "AUTO_TAGGING_DISABLED": "PUBLIC_PREVIEW", + "AUTO_TAGGING_ENABLED": "PUBLIC_PREVIEW" } }, "dataclassification.CatalogConfig": { @@ -23639,7 +23587,7 @@ "fields": { "auto_tag_configs": { "description": "List of auto-tagging configurations for this catalog.\nEmpty list means no auto-tagging is enabled.", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] @@ -23647,7 +23595,7 @@ "excluded_schemas": { "description": "Schemas to exclude from the scan, each named relative to the parent catalog.\nIf specified, all schemas except the specified ones will be scanned.\nMutually exclusive with `included_schemas`: only one may be set per request.\nIf neither `included_schemas` nor `excluded_schemas` is set, all schemas are scanned.", "ref": "dataclassification.CatalogConfigSchemaNames", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] @@ -23655,14 +23603,14 @@ "included_schemas": { "description": "Schemas to include in the scan, each named relative to the parent catalog.\nIf specified, only listed schemas will be scanned.\nMutually exclusive with `excluded_schemas`: only one may be set per request.\nIf neither `included_schemas` nor `excluded_schemas` is set, all schemas are scanned.", "ref": "dataclassification.CatalogConfigSchemaNames", - "launch_stage": "PUBLIC_BETA", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OPTIONAL" ] }, "name": { "description": "Resource name in the format: catalogs/{catalog_name}/config.", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" } } }, @@ -23671,7 +23619,7 @@ "fields": { "names": { "description": "Schema names, each relative to the parent catalog. Must not be empty.", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" } } }, @@ -23680,7 +23628,7 @@ "catalog_config": { "description": "The configuration to create.", "ref": "dataclassification.CatalogConfig", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" } } }, @@ -23691,11 +23639,11 @@ "catalog_config": { "description": "The configuration to apply to the catalog.\nThe name field in catalog_config identifies which resource to update.", "ref": "dataclassification.CatalogConfig", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" }, "update_mask": { "description": "Field mask specifying which fields to update.", - "launch_stage": "PUBLIC_BETA" + "launch_stage": "PUBLIC_PREVIEW" } } }, @@ -27478,24 +27426,19 @@ "account_sp_status": { "description": "The activity status of a service principal in a Databricks account.", "ref": "iamv2.State", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] + "launch_stage": "PUBLIC_BETA" }, "application_id": { - "description": "Application ID of the service principal.", + "description": "Application ID of the service principal. Set at creation time and cannot be changed\nafterwards; when omitted, the server generates one.", "launch_stage": "PUBLIC_BETA", "behaviors": [ + "IMMUTABLE", "OPTIONAL" ] }, "display_name": { "description": "Display name of the service principal.", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] + "launch_stage": "PUBLIC_BETA" }, "external_id": { "description": "ExternalId of the service principal in the customer's IdP.", @@ -27563,10 +27506,7 @@ "account_user_status": { "description": "The activity status of a user in a Databricks account.", "ref": "iamv2.State", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] + "launch_stage": "PUBLIC_BETA" }, "external_id": { "description": "ExternalId of the user in the customer's IdP.", @@ -27577,10 +27517,7 @@ }, "full_name": { "ref": "iamv2.UserFullName", - "launch_stage": "PUBLIC_BETA", - "behaviors": [ - "OPTIONAL" - ] + "launch_stage": "PUBLIC_BETA" }, "user_id": { "description": "Internal userId of the user in Databricks.", @@ -27593,8 +27530,7 @@ "description": "Username/email of the user.", "launch_stage": "PUBLIC_BETA", "behaviors": [ - "IMMUTABLE", - "OPTIONAL" + "IMMUTABLE" ] } } @@ -27763,10 +27699,24 @@ "description": "Deployment specs for this task. Exactly one deployment is currently\nsupported (a single entry where every node runs the same command); this\nis a current-Preview constraint. Role-split workloads (driver + worker,\nparameter server, separate eval node, etc.) with multiple entries are the\neventual intent but not yet supported.", "launch_stage": "PUBLIC_PREVIEW" }, + "docker_image_url": { + "description": "Optional Docker image URL for a custom container image. When set,\nthe task runs on the specified container image instead of the default\nDatabricks client image. Format:\n`{organization}/{repository}:{tag}`", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, "experiment": { "description": "MLflow experiment name for this run. If an experiment with this name\nalready exists under the calling user, the run is appended to it;\notherwise a new experiment is created. To target a specific MLflow\nstorage location (for example, when running as a service principal), set\n`mlflow_experiment_directory`.", "launch_stage": "PUBLIC_PREVIEW" }, + "mlflow_artifact_location": { + "description": "Optional root location for MLflow artifacts logged by the run.\nIf this field isn't specified the default artifact location will be in dbfs\ni.e. `dbfs:/databricks/mlflow-tracking/\u003cexperiment_id\u003e/...`\nIf dbfs access is restricted or UC is preferred this can be a custom location in UC:\n`dbfs:/Volumes/\u003ccatalog\u003e/\u003cschema\u003e/\u003cvolume\u003e/...`\nThe location should be unique for each experiment.", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, "mlflow_experiment_directory": { "description": "Optional workspace directory under which the MLflow experiment named in\n`experiment` is created. Must start with `/Workspace`. Set this when\nrunning as a service principal that has no default user directory; for\nregular users the experiment defaults to the user's home directory.", "launch_stage": "PUBLIC_PREVIEW", @@ -27911,6 +27861,13 @@ "ref": "jobs.JobSettings", "launch_stage": "GA" }, + "trigger_details": { + "description": "Per-trigger runtime information for the multi-trigger surface. Same length\nand order as `JobSettings.triggers`; `trigger_details[i]` corresponds to\n`triggers[i]`. Sub-fields (`state`, `history`) are populated independently\nbased on the `GetJob.include_trigger_state` / `include_trigger_history` flags.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, "trigger_state": { "description": "State of the trigger associated with the job.", "ref": "jobs.TriggerStateProto", @@ -28361,6 +28318,29 @@ } } }, + "jobs.ContinuousTriggerConfiguration": { + "description": "Continuous trigger. Stripped-down counterpart to `ContinuousSettings`: `pause_status` is owned by the enclosing\n`TriggerConfiguration` and intentionally omitted here.", + "fields": { + "task_retry_mode": { + "description": "Whether the continuous job applies task-level retries. Defaults to NEVER.", + "ref": "jobs.TaskRetryMode", + "launch_stage": "PUBLIC_BETA" + } + } + }, + "jobs.ContinuousTriggerState": { + "fields": { + "consecutive_failures": { + "launch_stage": "PUBLIC_BETA" + }, + "is_backing_off": { + "launch_stage": "PUBLIC_BETA" + }, + "next_attempt_ms": { + "launch_stage": "PUBLIC_BETA" + } + } + }, "jobs.CreateJob": { "fields": { "access_control_list": { @@ -28476,6 +28456,13 @@ "ref": "jobs.TriggerSettings", "launch_stage": "GA" }, + "triggers": { + "description": "List of triggers attached to this job. A run starts when any active trigger evaluates to true. Cannot be set in\nthe same request as the legacy `schedule`, `trigger`, or `continuous` fields. The 10-trigger cap is the design's\nhard limit; rollout steps the effective cap 3 -\u003e 5 -\u003e 10 via internal validation during the preview.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, "usage_policy_id": { "description": "The id of the user specified usage policy to use for this job.\nIf not specified, a default usage policy may be applied when creating or modifying the job.\nSee `effective_usage_policy_id` for the usage policy used by this workload.", "launch_stage": "PRIVATE_PREVIEW" @@ -28518,6 +28505,19 @@ } } }, + "jobs.CronTriggerConfiguration": { + "description": "Cron schedule trigger. Stripped-down counterpart to `CronSchedule`: `pause_status` and `sql_condition` are owned\nby the enclosing `TriggerConfiguration` and intentionally omitted here.", + "fields": { + "quartz_cron_expression": { + "description": "A Cron expression using Quartz syntax that describes the schedule for this trigger. See\n[Cron Trigger](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html) for details.", + "launch_stage": "PUBLIC_BETA" + }, + "timezone_id": { + "description": "A Java timezone ID. The schedule is resolved with respect to this timezone. See\n[Java TimeZone](https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html) for details.", + "launch_stage": "PUBLIC_BETA" + } + } + }, "jobs.DashboardPageSnapshot": { "fields": { "page_display_name": { @@ -29178,6 +29178,13 @@ "ref": "jobs.JobSettings", "launch_stage": "GA" }, + "trigger_details": { + "description": "Per-trigger runtime information for the multi-trigger surface. Same length\nand order as `JobSettings.triggers`; `trigger_details[i]` corresponds to\n`triggers[i]`. Sub-fields (`state`, `history`) are populated independently\nbased on the `GetJob.include_trigger_state` / `include_trigger_history` flags.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, "trigger_state": { "description": "State of the trigger associated with the job.", "ref": "jobs.TriggerStateProto", @@ -29579,6 +29586,13 @@ "ref": "jobs.TriggerSettings", "launch_stage": "GA" }, + "triggers": { + "description": "List of triggers attached to this job. A run starts when any active trigger evaluates to true. Cannot be set in\nthe same request as the legacy `schedule`, `trigger`, or `continuous` fields. The 10-trigger cap is the design's\nhard limit; rollout steps the effective cap 3 -\u003e 5 -\u003e 10 via internal validation during the preview.", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, "usage_policy_id": { "description": "The id of the user specified usage policy to use for this job.\nIf not specified, a default usage policy may be applied when creating or modifying the job.\nSee `effective_usage_policy_id` for the usage policy used by this workload.", "launch_stage": "PRIVATE_PREVIEW" @@ -29864,6 +29878,9 @@ "MODEL_VERSION_READY": "PRIVATE_PREVIEW" } }, + "jobs.ModelTriggerState": { + "description": "Runtime state for a model trigger. Currently empty because model triggers do not\nexpose any trigger-specific runtime state." + }, "jobs.NotebookOutput": { "fields": { "result": { @@ -29922,6 +29939,45 @@ "UNPAUSED": "GA" } }, + "jobs.PerTriggerState": { + "description": "Per-trigger runtime state for the multi-trigger surface. Mirrors `TriggerConfiguration`'s\ntrigger-type variants 1:1; each entry sets exactly one variant matching the corresponding\ntrigger's type. Variants with no runtime state today (`schedule`, `model`) are emitted as\nempty messages.", + "fields": { + "continuous": { + "ref": "jobs.ContinuousTriggerState", + "launch_stage": "PUBLIC_BETA" + }, + "file_arrival": { + "ref": "jobs.FileArrivalTriggerState", + "launch_stage": "PUBLIC_BETA" + }, + "model": { + "ref": "jobs.ModelTriggerState", + "launch_stage": "PUBLIC_BETA" + }, + "pause_status": { + "description": "Whether this trigger is paused or not. Mirrors the configured pause_status.", + "ref": "jobs.PauseStatus", + "launch_stage": "PUBLIC_BETA" + }, + "periodic": { + "ref": "jobs.PeriodicTriggerState", + "launch_stage": "PUBLIC_BETA" + }, + "schedule": { + "ref": "jobs.ScheduleTriggerState", + "launch_stage": "PUBLIC_BETA" + }, + "sql_condition": { + "description": "State for SQL condition evaluation, can coexist with other trigger states.", + "ref": "jobs.SqlConditionState", + "launch_stage": "PRIVATE_PREVIEW" + }, + "table_update": { + "ref": "jobs.TableTriggerState", + "launch_stage": "PUBLIC_BETA" + } + } + }, "jobs.PerformanceTarget": { "description": "PerformanceTarget defines how performant (lower latency) or cost efficient the execution of run on serverless compute should be.\nThe performance mode on the job or pipeline should map to a performance setting that is passed to Cluster Manager\n(see cluster-common PerformanceTarget).", "enum": [ @@ -29960,6 +30016,13 @@ "WEEKS": "GA" } }, + "jobs.PeriodicTriggerState": { + "fields": { + "next_run_time": { + "launch_stage": "PUBLIC_BETA" + } + } + }, "jobs.PipelineParams": { "fields": { "full_refresh": { @@ -31369,6 +31432,9 @@ "WORKFLOW_RUN": "Workflow run. A run created with [dbutils.notebook.run](/dev-tools/databricks-utils.html#dbutils-workflow)." } }, + "jobs.ScheduleTriggerState": { + "description": "Runtime state for a schedule trigger. Currently empty because schedule triggers\ndo not expose any trigger-specific runtime state." + }, "jobs.Source": { "description": "Optional location type of the SQL file. When set to `WORKSPACE`, the SQL file will be retrieved\\\nfrom the local Databricks workspace. When set to `GIT`, the SQL file will be retrieved from a Git repository\ndefined in `git_source`. If the value is empty, the task will use `GIT` if `git_source` is defined and `WORKSPACE` otherwise.\n\n* `WORKSPACE`: SQL file is located in Databricks workspace.\n* `GIT`: SQL file is located in cloud Git provider.", "enum": [ @@ -32508,6 +32574,131 @@ "SUCCESS": "The run terminated without any issues" } }, + "jobs.TriggerConfiguration": { + "description": "A single trigger attached to a job via `JobSettings.triggers`. Exactly one of the trigger-type fields\n(`periodic`, `schedule`, `continuous`, `file_arrival`, `table_update`, `model`) must be set; mutual exclusivity\nis enforced in the API handler rather than via `oneof` so that codegen, validation, and JSON serialization\nacross SDKs and Terraform behave consistently.", + "fields": { + "continuous": { + "description": "Continuous trigger configuration.", + "ref": "jobs.ContinuousTriggerConfiguration", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, + "file_arrival": { + "description": "File arrival trigger configuration.", + "ref": "jobs.FileArrivalTriggerConfiguration", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, + "model": { + "description": "Model trigger configuration.", + "ref": "jobs.ModelTriggerConfiguration", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "pause_status": { + "description": "Whether this trigger is paused. Defaults to UNPAUSED when unset; the server always returns an explicit value on read.", + "ref": "jobs.PauseStatus", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, + "periodic": { + "description": "Trigger type: exactly one must be set; mutual exclusivity is enforced in the API handler\nPeriodic trigger configuration.", + "ref": "jobs.PeriodicTriggerConfiguration", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, + "schedule": { + "description": "Cron schedule trigger configuration.", + "ref": "jobs.CronTriggerConfiguration", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + }, + "sql_condition": { + "description": "Optional SQL condition that gates whether this trigger fires.", + "ref": "jobs.SqlConditionConfiguration", + "launch_stage": "PRIVATE_PREVIEW", + "behaviors": [ + "OPTIONAL" + ] + }, + "table_update": { + "description": "Table update trigger configuration.", + "ref": "jobs.TableUpdateTriggerConfiguration", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OPTIONAL" + ] + } + } + }, + "jobs.TriggerDetails": { + "description": "Per-trigger runtime details returned by `GetJob`. Same length and order as\n`JobSettings.triggers`; sub-fields are populated independently based on the\ncorresponding `GetJob.include_trigger_state` / `include_trigger_history` flags.", + "fields": { + "history": { + "description": "Recent evaluation history. Populated when `GetJob.include_trigger_history` is set.", + "ref": "jobs.TriggerHistory", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + }, + "state": { + "description": "Current runtime state. Populated when `GetJob.include_trigger_state` is set.", + "ref": "jobs.PerTriggerState", + "launch_stage": "PUBLIC_BETA", + "behaviors": [ + "OUTPUT_ONLY" + ] + } + } + }, + "jobs.TriggerEvaluation": { + "fields": { + "description": { + "description": "Human-readable description of the trigger evaluation result. Explains why the trigger evaluation triggered or did not trigger a run, or failed.", + "launch_stage": "PUBLIC_BETA" + }, + "run_id": { + "description": "The ID of the run that was triggered by the trigger evaluation. Only returned if a run was triggered.", + "launch_stage": "PUBLIC_BETA" + }, + "timestamp": { + "description": "Timestamp at which the trigger was evaluated.", + "launch_stage": "PUBLIC_BETA" + } + } + }, + "jobs.TriggerHistory": { + "fields": { + "last_failed": { + "description": "The last time the trigger failed to evaluate.", + "ref": "jobs.TriggerEvaluation", + "launch_stage": "PUBLIC_BETA" + }, + "last_not_triggered": { + "description": "The last time the trigger was evaluated but did not trigger a run.", + "ref": "jobs.TriggerEvaluation", + "launch_stage": "PUBLIC_BETA" + }, + "last_triggered": { + "description": "The last time the run was triggered due to a file arrival.", + "ref": "jobs.TriggerEvaluation", + "launch_stage": "PUBLIC_BETA" + } + } + }, "jobs.TriggerInfo": { "description": "Additional details about what triggered the run", "fields": { @@ -41031,6 +41222,24 @@ } } }, + "pipelines.ApiSourceConnectorConfig": { + "description": "Top-level configuration for API Source connectors with arbitrary configuration.", + "fields": { + "configs": { + "description": "Arbitrary key-value configuration values for the API Source connector.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, + "pipelines.ApiSourceConnectorOptions": { + "description": "Options for API Source connectors with arbitrary configuration.", + "fields": { + "options": { + "description": "Arbitrary key-value configuration options for the API Source connector.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, "pipelines.ApplyEnvironmentRequest": {}, "pipelines.ApplyEnvironmentRequestResponse": {}, "pipelines.AutoFullRefreshPolicy": { @@ -41226,6 +41435,11 @@ "pipelines.ConnectorOptions": { "description": "Wrapper message for source-specific options to support multiple connector types", "fields": { + "api_source_connector_options": { + "description": "Connector-specific options for API Source connectors.", + "ref": "pipelines.ApiSourceConnectorOptions", + "launch_stage": "PRIVATE_PREVIEW" + }, "confluence_options": { "ref": "pipelines.ConfluenceConnectorOptions", "launch_stage": "PUBLIC_PREVIEW" @@ -41272,7 +41486,7 @@ }, "zendesk_support_options": { "ref": "pipelines.ZendeskSupportOptions", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -42225,7 +42439,7 @@ "SQLSERVER": "PUBLIC_PREVIEW", "TERADATA": "PUBLIC_PREVIEW", "WORKDAY_RAAS": "PUBLIC_PREVIEW", - "ZENDESK": "PRIVATE_PREVIEW" + "ZENDESK": "PUBLIC_BETA" } }, "pipelines.JiraConnectorOptions": { @@ -43530,6 +43744,11 @@ }, "pipelines.SourceConfig": { "fields": { + "api_source_connector_config": { + "description": "Connector-specific top-level configuration for API Source connectors.", + "ref": "pipelines.ApiSourceConnectorConfig", + "launch_stage": "PRIVATE_PREVIEW" + }, "catalog": { "description": "Catalog-level source configuration parameters", "ref": "pipelines.SourceCatalogConfig", @@ -43859,9 +44078,17 @@ "ref": "pipelines.TransformerFormat", "launch_stage": "PUBLIC_BETA" }, + "input_column": { + "description": "Optional input column to transform. When set, the transformer reads\nfrom this column instead of the default source column.", + "launch_stage": "PRIVATE_PREVIEW" + }, "json_options": { "ref": "pipelines.JsonTransformerOptions", "launch_stage": "PUBLIC_BETA" + }, + "output_column": { + "description": "Optional output column name. When set, the transformed result is\nwritten to this column instead of replacing the input column.", + "launch_stage": "PRIVATE_PREVIEW" } } }, @@ -43924,7 +44151,7 @@ "mode": { "description": "Indicates whether the update is either part of a continuous job run, or running in legacy continuous pipeline mode.\nReturned only for GetUpdate; not populated in ListUpdates responses.", "ref": "pipelines.UpdateMode", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "GA" }, "parameters": { "description": "Key/value map of parameters used to initiate the update", @@ -44009,8 +44236,8 @@ "CONTINUOUS" ], "enum_launch_stages": { - "CONTINUOUS": "PRIVATE_PREVIEW", - "DEFAULT": "PRIVATE_PREVIEW" + "CONTINUOUS": "GA", + "DEFAULT": "GA" } }, "pipelines.UpdateStateInfo": { @@ -44061,7 +44288,7 @@ "fields": { "start_date": { "description": "(Optional) Start date in YYYY-MM-DD format for the initial sync.\nThis determines the earliest date from which to sync historical data.", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_BETA" } } }, @@ -49862,6 +50089,7 @@ "GPU_LARGE", "MULTIGPU_MEDIUM", "CPU_LARGE", + "GPU_XLARGE_8", "GPU_XLARGE", "CPU_MEDIUM" ], @@ -49873,6 +50101,7 @@ "GPU_MEDIUM": "GA", "GPU_SMALL": "GA", "GPU_XLARGE": "PUBLIC_BETA", + "GPU_XLARGE_8": "PUBLIC_BETA", "MULTIGPU_MEDIUM": "GA" } }, @@ -50260,6 +50489,7 @@ "GPU_LARGE", "MULTIGPU_MEDIUM", "CPU_LARGE", + "GPU_XLARGE_8", "GPU_XLARGE", "CPU_MEDIUM" ], @@ -50271,6 +50501,7 @@ "GPU_MEDIUM": "GA", "GPU_SMALL": "GA", "GPU_XLARGE": "PUBLIC_BETA", + "GPU_XLARGE_8": "PUBLIC_BETA", "MULTIGPU_MEDIUM": "GA" } }, @@ -50282,9 +50513,12 @@ "launch_stage": "PUBLIC_PREVIEW" }, "table_names": { - "description": "The Unity Catalog tables to which endpoint telemetry (logs, traces, and metrics) is exported.\nProvide this to create a new telemetry profile for the endpoint from the given tables.", + "description": "The Unity Catalog tables to which endpoint telemetry (logs, traces, and metrics) is exported.\nProvide this to create a new telemetry profile for the endpoint from the given tables.\nThis field selects the tables when writing a telemetry configuration; it is not returned when\nreading one. Responses identify the resulting profile with `telemetry_profile_id` instead.", "ref": "serving.UnityCatalogTableNames", - "launch_stage": "PUBLIC_PREVIEW" + "launch_stage": "PUBLIC_PREVIEW", + "behaviors": [ + "INPUT_ONLY" + ] }, "telemetry_profile_id": { "description": "The ID of an existing telemetry profile to apply to this endpoint. Provide this to reuse a\ntelemetry profile that has already been created, instead of specifying table_names.", @@ -50905,7 +51139,7 @@ }, "gcp_endpoint": { "ref": "settings.GcpEndpoint", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_PREVIEW" }, "group_id": { "description": "Not used by customer-managed private endpoint services.\n\nThe sub-resource type (group ID) of the target resource.\nNote that to connect to workspace root storage (root DBFS), you need two endpoints, one for blob and one for dfs.", @@ -51137,10 +51371,12 @@ "settings.CustomerFacingIngressNetworkPolicyCrossWorkspaceAccessRestrictionMode": { "enum": [ "FULL_ACCESS", - "RESTRICTED_ACCESS" + "RESTRICTED_ACCESS", + "LEGACY_MODE" ], "enum_launch_stages": { "FULL_ACCESS": "PRIVATE_PREVIEW", + "LEGACY_MODE": "PRIVATE_PREVIEW", "RESTRICTED_ACCESS": "PRIVATE_PREVIEW" } }, @@ -52320,16 +52556,25 @@ }, "settings.GcpEndpoint": { "fields": { + "all_vpc_sc_services": { + "description": "All Google APIs that support VPC Service Controls (a subset of all Google APIs).", + "launch_stage": "PRIVATE_PREVIEW" + }, + "google_api_endpoints": { + "description": "Selected Google API hostnames, e.g. \"storage.googleapis.com\", \"bigquery.googleapis.com\".", + "ref": "settings.GoogleApiEndpoints", + "launch_stage": "PRIVATE_PREVIEW" + }, "psc_endpoint_uri": { "description": "Output only. The URI of the created PSC endpoint.", - "launch_stage": "PRIVATE_PREVIEW", + "launch_stage": "PUBLIC_PREVIEW", "behaviors": [ "OUTPUT_ONLY" ] }, "service_attachment": { "description": "The full url of the target service attachment.\nExample:\nprojects/my-gcp-project/regions/us-east4/serviceAttachments/my-service-attachment", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_PREVIEW" } } }, @@ -52574,6 +52819,15 @@ } }, "settings.GetWorkspaceNetworkOptionRequest": {}, + "settings.GoogleApiEndpoints": { + "description": "Wrapper for a list of Google API hostnames. Wrapped in a message because\nproto3 oneof does not support repeated fields directly.", + "fields": { + "endpoints": { + "description": "Google API hostnames, e.g. \"storage.googleapis.com\",\n\"bigquery.googleapis.com\". Use \"googleapis.com\" to cover all Google APIs.", + "launch_stage": "PRIVATE_PREVIEW" + } + } + }, "settings.IpAccessListInfo": { "description": "Definition of an IP Access list", "fields": { @@ -53056,7 +53310,7 @@ }, "gcp_endpoint": { "ref": "settings.GcpEndpoint", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_PREVIEW" }, "group_id": { "description": "Not used by customer-managed private endpoint services.\n\nThe sub-resource type (group ID) of the target resource.\nNote that to connect to workspace root storage (root DBFS), you need two endpoints, one for blob and one for dfs.", @@ -53994,7 +54248,7 @@ }, "gcp_endpoint": { "ref": "settings.GcpEndpoint", - "launch_stage": "PRIVATE_PREVIEW" + "launch_stage": "PUBLIC_PREVIEW" }, "resource_names": { "description": "Only used by private endpoints towards AWS S3 service.\n\nThe globally unique S3 bucket names that will be accessed via the VPC endpoint.\nThe bucket names must be in the same region as the NCC/endpoint service.\nWhen updating this field, we perform full update on this field. Please ensure a full list of desired\nresource_names is provided.", @@ -65814,15 +66068,6 @@ "is_string": true } }, - { - "name": "browse_only", - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "is_output_only": true, - "is_request_body_field": true, - "entity": { - "is_bool": true - } - }, { "name": "comment", "description": "User-provided description.", @@ -66066,15 +66311,6 @@ "is_string": true } }, - { - "name": "browse_only", - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "is_output_only": true, - "is_request_body_field": true, - "entity": { - "is_bool": true - } - }, { "name": "comment", "description": "User-provided description.", @@ -66318,15 +66554,6 @@ "is_string": true } }, - { - "name": "browse_only", - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "is_output_only": true, - "is_request_body_field": true, - "entity": { - "is_bool": true - } - }, { "name": "comment", "description": "User-provided description.", @@ -66712,14 +66939,6 @@ "is_object": true }, "all_fields": [ - { - "name": "include_browse", - "description": "Whether to include MCP services for which the principal can only access\nselective metadata.", - "is_query": true, - "entity": { - "is_bool": true - } - }, { "name": "name", "description": "Resource name of the MCP service.\nFormat: `mcp-services/{catalog}.{schema}.{mcp_service}`.\nEach `{...}` component is capped at 255 characters individually.", @@ -66784,14 +67003,6 @@ "is_object": true }, "all_fields": [ - { - "name": "include_browse", - "description": "Whether to include provider services for which the principal can only\naccess selective metadata.", - "is_query": true, - "entity": { - "is_bool": true - } - }, { "name": "name", "description": "Resource name of the model provider service.\nFormat: `model-provider-services/{catalog}.{schema}.{model_provider_service}`.\nEach `{...}` component is capped at 255 characters individually.", @@ -66856,14 +67067,6 @@ "is_object": true }, "all_fields": [ - { - "name": "include_browse", - "description": "Whether to include model services for which the principal can only access\nselective metadata.", - "is_query": true, - "entity": { - "is_bool": true - } - }, { "name": "name", "description": "Resource name of the model service.\nFormat: `model-services/{catalog}.{schema}.{model_service}`.\nEach `{...}` component is capped at 255 characters individually.", @@ -66905,14 +67108,6 @@ "is_object": true }, "all_fields": [ - { - "name": "include_browse", - "description": "Whether to include MCP services for which the principal can only access\nselective metadata.", - "is_query": true, - "entity": { - "is_bool": true - } - }, { "name": "page_size", "description": "Maximum number of MCP services to return. Defaults to 100 when unset or 0;\nthe maximum is 100. Use `next_page_token` to retrieve additional pages.", @@ -66986,14 +67181,6 @@ "is_object": true }, "all_fields": [ - { - "name": "include_browse", - "description": "Whether to include provider services for which the principal can only\naccess selective metadata.", - "is_query": true, - "entity": { - "is_bool": true - } - }, { "name": "page_size", "description": "Maximum number of provider services to return. Defaults to 100 when unset or\n0; the maximum is 100. Use `next_page_token` to retrieve additional pages.", @@ -67067,14 +67254,6 @@ "is_object": true }, "all_fields": [ - { - "name": "include_browse", - "description": "Whether to include model services for which the principal can only access\nselective metadata.", - "is_query": true, - "entity": { - "is_bool": true - } - }, { "name": "page_size", "description": "Maximum number of model services to return. Defaults to 100 when unset or 0;\nthe maximum is 100. Use `next_page_token` to retrieve additional pages.", @@ -67259,15 +67438,6 @@ "is_field_mask": true } }, - { - "name": "browse_only", - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "is_output_only": true, - "is_request_body_field": true, - "entity": { - "is_bool": true - } - }, { "name": "comment", "description": "User-provided description.", @@ -67519,15 +67689,6 @@ "is_field_mask": true } }, - { - "name": "browse_only", - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "is_output_only": true, - "is_request_body_field": true, - "entity": { - "is_bool": true - } - }, { "name": "comment", "description": "User-provided description.", @@ -67779,15 +67940,6 @@ "is_field_mask": true } }, - { - "name": "browse_only", - "description": "Whether the caller sees only metadata available through the BROWSE\nprivilege.", - "is_output_only": true, - "is_request_body_field": true, - "entity": { - "is_bool": true - } - }, { "name": "comment", "description": "User-provided description.", @@ -73359,6 +73511,14 @@ } } }, + { + "name": "forward_user_access_token", + "description": "Forward the user's access token to the app. Requires stopping and starting app compute to take effect.", + "is_request_body_field": true, + "entity": { + "is_bool": true + } + }, { "name": "git_repository", "description": "Git repository configuration for app deployments. When specified, deployments can\nreference code from this repository by providing only the git reference (branch, tag, or commit).", @@ -75793,6 +75953,14 @@ } } }, + { + "name": "forward_user_access_token", + "description": "Forward the user's access token to the app. Requires stopping and starting app compute to take effect.", + "is_request_body_field": true, + "entity": { + "is_bool": true + } + }, { "name": "git_repository", "description": "Git repository configuration for app deployments. When specified, deployments can\nreference code from this repository by providing only the git reference (branch, tag, or commit).", @@ -79509,7 +79677,7 @@ }, { "name": "created_by", - "description": "The user who created the deployment (email or principal name).", + "description": "The user who created the deployment (email or principal name). Empty if authoritative\ndeployment metadata does not identify a creator or the principal cannot be resolved.", "is_output_only": true, "is_request_body_field": true, "entity": { @@ -79651,7 +79819,7 @@ }, { "name": "updated_by", - "description": "The user who most recently updated the deployment (email or principal name).", + "description": "The user who most recently updated the deployment (email or principal name). Empty if\nauthoritative deployment metadata does not identify a modifier or the principal cannot be\nresolved.", "is_output_only": true, "is_request_body_field": true, "entity": { @@ -79673,7 +79841,7 @@ }, { "name": "CreateOperation", - "description": "Creates a resource operation under a version.\n\nThe caller must provide a `resource_key` which becomes the final\ncomponent of the operation's name. If an operation with the same key\nalready exists under the version, the server returns `ALREADY_EXISTS`.\n\nOn success the server also updates the corresponding deployment-level\nResource (creating it if this is the first operation for that\nresource_key, or removing it if action_type is DELETE).", + "description": "Creates a resource operation under a version.\n\nThe caller must provide a `resource_key` which becomes the final\ncomponent of the operation's name. If an operation with the same key\nalready exists under the version, the server returns `ALREADY_EXISTS`.\n\nOn success the server also updates the corresponding deployment-level\nresource, creating it if this is the first operation for that resource_key\nand removing it if the operation records no `state` (see that field).", "summary": "Create an operation.", "path": "/api/2.0/bundle/{parent=deployments/*/versions/*}/operations", "can_use_json": true, @@ -80216,7 +80384,7 @@ }, { "name": "resource_id", - "description": "ID of the actual resource in the workspace (e.g. the job ID, pipeline ID).\nOptional at creation: CREATE and RECREATE operations produce a new resource\nwhose ID is not yet known when the operation is recorded. Mutable: may be\nfilled in (or corrected) later via UpdateOperation once the ID is known.", + "description": "ID of the actual resource in the workspace (e.g. the job ID, pipeline ID).\nRequired whenever `state` is set, because state records a resource that\nexists. A CREATE or RECREATE that has not produced its resource yet records\nneither. Mutable: may be filled in (or corrected) later via UpdateOperation\nonce the ID is known.", "is_request_body_field": true, "entity": { "is_string": true @@ -80320,7 +80488,7 @@ }, { "name": "state", - "description": "Serialized local config state after the operation. Should be unset for\ndelete operations. Mutable: may be updated after creation via\nUpdateOperation. When updating, the caller must echo the last-observed\n`sequence_id` as a concurrency precondition.\n\nOpaque to this service: the string is stored and returned unchanged. This is\ndeliberately not google.protobuf.Value, whose only numeric case is\n`double number_value`, so parsing the client's JSON into it rewrites every\ninteger as a double - `1` reads back as `1.0`, which no longer deserializes\ninto an integer field - and silently loses precision above 2^53, which is\nwithin range for IDs the client records.\n\nA string rather than bytes: the payload is always UTF-8 JSON, and proto3 JSON\nmaps bytes to base64, which inflates every request and response by a third\nand makes state unreadable in logs and API responses. Both generate the same\nOpenAPI schema (\"type\": \"string\"), so the SDKs are identical either way.", + "description": "Serialized local config state after the operation. Its presence records\nwhether the resource still exists, so an operation that records no state\nremoves its resource from the deployment. It may be unset only for an\noperation that left no resource behind: a `DELETE` that succeeded, or a\n`CREATE` or `RECREATE` that failed. It is required otherwise, including for\na failed `DELETE`, whose resource survives.\n\nMutable: may be updated after creation via UpdateOperation. When updating,\nthe caller must echo the last-observed `sequence_id` as a concurrency\nprecondition.\n\nOpaque to this service: the string is stored and returned unchanged. This is\ndeliberately not google.protobuf.Value, whose only numeric case is\n`double number_value`, so parsing the client's JSON into it rewrites every\ninteger as a double - `1` reads back as `1.0`, which no longer deserializes\ninto an integer field - and silently loses precision above 2^53, which is\nwithin range for IDs the client records.\n\nA string rather than bytes: the payload is always UTF-8 JSON, and proto3 JSON\nmaps bytes to base64, which inflates every request and response by a third\nand makes state unreadable in logs and API responses. Both generate the same\nOpenAPI schema (\"type\": \"string\"), so the SDKs are identical either way.", "is_request_body_field": true, "entity": { "is_string": true @@ -81620,7 +81788,7 @@ "all_fields": [ { "name": "page_size", - "description": "The maximum number of deployments to return. The service may return\nfewer than this value.\nIf unspecified, at most 20 deployments will be returned.\nThe maximum value is 100; values above 100 will be coerced to 100.", + "description": "The maximum number of deployments to return. The service may return\nfewer than this value.\nIf unspecified, at most 20 deployments will be returned.\nThe maximum value is 1000; values above 1000 will be coerced to 1000.", "is_query": true, "entity": { "is_int": true @@ -81920,7 +82088,7 @@ }, { "name": "UpdateOperation", - "description": "Updates a resource operation's mutable fields.\n\n`state`, `error_message`, `resource_id`, and `status` may be updated,\nindependently; `update_mask` must contain only those paths. All other\nfields are immutable. The update is guarded by an optimistic-concurrency\ncheck: the caller sets `operation.sequence_id` to the value it last\nobserved, and the server rejects the update with `ABORTED` if the\noperation has been modified since. On success the server increments\n`sequence_id`; updates to `state` and `resource_id` are mirrored onto the\ncorresponding deployment-level Resource projection. The parent version\nmust be in progress, delete operations cannot be updated, and after the\nupdate is applied a succeeded operation cannot carry an `error_message`.", + "description": "Updates a resource operation's mutable fields.\n\n`state`, `error_message`, `resource_id`, and `status` may be updated,\nindependently; `update_mask` must contain only those paths. All other\nfields are immutable. The update is guarded by an optimistic-concurrency\ncheck: the caller sets `operation.sequence_id` to the value it last\nobserved, and the server rejects the update with `ABORTED` if the\noperation has been modified since. On success the server increments\n`sequence_id`; updates to `state` and `resource_id` are mirrored onto the\ncorresponding deployment-level resource. Listing `state` in `update_mask`\nwith no value clears it, which removes the resource, so a delete that is\nretried until it succeeds must clear `state`. The parent version must be in\nprogress, and after the update is applied a succeeded operation cannot carry\nan `error_message`. See the `state` and `resource_id` fields for the rest.", "summary": "Update an operation.", "path": "/api/2.0/bundle/{name=deployments/*/versions/*/operations/*}", "can_use_json": true, @@ -82466,7 +82634,7 @@ }, { "name": "resource_id", - "description": "ID of the actual resource in the workspace (e.g. the job ID, pipeline ID).\nOptional at creation: CREATE and RECREATE operations produce a new resource\nwhose ID is not yet known when the operation is recorded. Mutable: may be\nfilled in (or corrected) later via UpdateOperation once the ID is known.", + "description": "ID of the actual resource in the workspace (e.g. the job ID, pipeline ID).\nRequired whenever `state` is set, because state records a resource that\nexists. A CREATE or RECREATE that has not produced its resource yet records\nneither. Mutable: may be filled in (or corrected) later via UpdateOperation\nonce the ID is known.", "is_request_body_field": true, "entity": { "is_string": true @@ -82570,7 +82738,7 @@ }, { "name": "state", - "description": "Serialized local config state after the operation. Should be unset for\ndelete operations. Mutable: may be updated after creation via\nUpdateOperation. When updating, the caller must echo the last-observed\n`sequence_id` as a concurrency precondition.\n\nOpaque to this service: the string is stored and returned unchanged. This is\ndeliberately not google.protobuf.Value, whose only numeric case is\n`double number_value`, so parsing the client's JSON into it rewrites every\ninteger as a double - `1` reads back as `1.0`, which no longer deserializes\ninto an integer field - and silently loses precision above 2^53, which is\nwithin range for IDs the client records.\n\nA string rather than bytes: the payload is always UTF-8 JSON, and proto3 JSON\nmaps bytes to base64, which inflates every request and response by a third\nand makes state unreadable in logs and API responses. Both generate the same\nOpenAPI schema (\"type\": \"string\"), so the SDKs are identical either way.", + "description": "Serialized local config state after the operation. Its presence records\nwhether the resource still exists, so an operation that records no state\nremoves its resource from the deployment. It may be unset only for an\noperation that left no resource behind: a `DELETE` that succeeded, or a\n`CREATE` or `RECREATE` that failed. It is required otherwise, including for\na failed `DELETE`, whose resource survives.\n\nMutable: may be updated after creation via UpdateOperation. When updating,\nthe caller must echo the last-observed `sequence_id` as a concurrency\nprecondition.\n\nOpaque to this service: the string is stored and returned unchanged. This is\ndeliberately not google.protobuf.Value, whose only numeric case is\n`double number_value`, so parsing the client's JSON into it rewrites every\ninteger as a double - `1` reads back as `1.0`, which no longer deserializes\ninto an integer field - and silently loses precision above 2^53, which is\nwithin range for IDs the client records.\n\nA string rather than bytes: the payload is always UTF-8 JSON, and proto3 JSON\nmaps bytes to base64, which inflates every request and response by a third\nand makes state unreadable in logs and API responses. Both generate the same\nOpenAPI schema (\"type\": \"string\"), so the SDKs are identical either way.", "is_request_body_field": true, "entity": { "is_string": true @@ -91221,6 +91389,9 @@ { "content": "MYSQL" }, + { + "content": "NETSUITE" + }, { "content": "ORACLE" }, @@ -91341,6 +91512,9 @@ { "content": "MYSQL" }, + { + "content": "NETSUITE" + }, { "content": "ORACLE" }, @@ -91465,6 +91639,9 @@ { "content": "MYSQL" }, + { + "content": "NETSUITE" + }, { "content": "ORACLE" }, @@ -96312,10 +96489,10 @@ "name": "dataclassification" }, "docs_group": "dataclassification", - "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", + "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", "methods": [ { "name": "CreateCatalogConfig", @@ -96325,10 +96502,10 @@ "can_use_json": true, "is_crud_create": true, "has_required_positional_arguments": true, - "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", + "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": "CreateCatalogConfigRequest", "is_object": true, @@ -96471,10 +96648,10 @@ "summary": "Delete config for a catalog.", "path": "/api/data-classification/v1/{name=catalogs/*/config}", "has_required_positional_arguments": true, - "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", + "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": "DeleteCatalogConfigRequest", "is_object": true, @@ -96534,10 +96711,10 @@ "path": "/api/data-classification/v1/{name=catalogs/*/config}", "is_crud_read": true, "has_required_positional_arguments": true, - "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", + "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": "GetCatalogConfigRequest", "is_object": true, @@ -96598,10 +96775,10 @@ "path": "/api/data-classification/v1/{name=catalogs/*/config}", "can_use_json": true, "has_required_positional_arguments": true, - "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", + "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": "UpdateCatalogConfigRequest", "is_object": true, @@ -137795,6 +137972,18 @@ "is_object": true } }, + { + "name": "triggers", + "description": "List of triggers attached to this job. A run starts when any active trigger evaluates to true. Cannot be set in\nthe same request as the legacy `schedule`, `trigger`, or `continuous` fields. The 10-trigger cap is the design's\nhard limit; rollout steps the effective cap 3 -\u003e 5 -\u003e 10 via internal validation during the preview.", + "is_request_body_field": true, + "entity": { + "pascal_name": "TriggerConfigurationList", + "array_value": { + "pascal_name": "TriggerConfiguration", + "is_object": true + } + } + }, { "name": "usage_policy_id", "description": "The id of the user specified usage policy to use for this job.\nIf not specified, a default usage policy may be applied when creating or modifying the job.\nSee `effective_usage_policy_id` for the usage policy used by this workload.", @@ -159203,7 +159392,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -159299,7 +159488,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -159401,7 +159590,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -159497,7 +159686,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -159604,7 +159793,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -159700,7 +159889,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -159834,7 +160023,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -160089,7 +160278,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -160394,7 +160583,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -160490,7 +160679,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -160882,7 +161071,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -160978,7 +161167,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -161080,7 +161269,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -161176,7 +161365,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -161310,7 +161499,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -161406,7 +161595,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -161548,7 +161737,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -161830,7 +162019,7 @@ }, { "name": "for_securable_type", - "description": "Type of securables that the policy should take effect on.\nOnly `TABLE` is supported at this moment.\nRequired on create and optional on update.", + "description": "Type of securables that the policy should take effect on.\nRequired on create and optional on update.", "required": true, "is_request_body_field": true, "entity": { @@ -182084,6 +182273,14 @@ "entity": { "is_string": true } + }, + { + "name": "include_value", + "description": "Whether to include the secret value in the response. Defaults to false. Requires the\n**READ_SECRET** privilege.", + "is_query": true, + "entity": { + "is_bool": true + } } ], "required_positional_arguments": [ diff --git a/.nextchanges/dependency-updates/bump-sdk-0.171.0.md b/.nextchanges/dependency-updates/bump-sdk-0.171.0.md new file mode 100644 index 00000000000..beda8abf12d --- /dev/null +++ b/.nextchanges/dependency-updates/bump-sdk-0.171.0.md @@ -0,0 +1 @@ +Bump `github.com/databricks/databricks-sdk-go` from v0.170.0 to v0.171.0 ([#6320](https://github.com/databricks/cli/pull/6320)). diff --git a/acceptance/bundle/refschema/out.fields.txt b/acceptance/bundle/refschema/out.fields.txt index 49418540acf..3c8ba93ce34 100644 --- a/acceptance/bundle/refschema/out.fields.txt +++ b/acceptance/bundle/refschema/out.fields.txt @@ -117,6 +117,7 @@ resources.apps.*.effective_budget_policy_id string ALL resources.apps.*.effective_usage_policy_id string ALL resources.apps.*.effective_user_api_scopes []string ALL resources.apps.*.effective_user_api_scopes[*] string ALL +resources.apps.*.forward_user_access_token bool ALL resources.apps.*.git_repository *apps.GitRepository ALL resources.apps.*.git_repository.provider string ALL resources.apps.*.git_repository.url string ALL @@ -1112,7 +1113,9 @@ resources.jobs.*.tasks[*].ai_runtime_task.deployments[*].compute jobs.ComputeSpe resources.jobs.*.tasks[*].ai_runtime_task.deployments[*].compute.accelerator_count int ALL resources.jobs.*.tasks[*].ai_runtime_task.deployments[*].compute.accelerator_type jobs.ComputeSpecAcceleratorType ALL resources.jobs.*.tasks[*].ai_runtime_task.deployments[*].name string ALL +resources.jobs.*.tasks[*].ai_runtime_task.docker_image_url string ALL resources.jobs.*.tasks[*].ai_runtime_task.experiment string ALL +resources.jobs.*.tasks[*].ai_runtime_task.mlflow_artifact_location string ALL resources.jobs.*.tasks[*].ai_runtime_task.mlflow_experiment_directory string ALL resources.jobs.*.tasks[*].ai_runtime_task.mlflow_run string ALL resources.jobs.*.tasks[*].alert_task *jobs.AlertTask ALL @@ -1196,7 +1199,9 @@ resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments[*].comp resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments[*].compute.accelerator_count int ALL resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments[*].compute.accelerator_type jobs.ComputeSpecAcceleratorType ALL resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments[*].name string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.docker_image_url string ALL resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.experiment string ALL +resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.mlflow_artifact_location string ALL resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.mlflow_experiment_directory string ALL resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.mlflow_run string ALL resources.jobs.*.tasks[*].for_each_task.task.alert_task *jobs.AlertTask ALL @@ -1872,6 +1877,43 @@ resources.jobs.*.trigger.table_update.min_time_between_triggers_seconds int ALL resources.jobs.*.trigger.table_update.table_names []string ALL resources.jobs.*.trigger.table_update.table_names[*] string ALL resources.jobs.*.trigger.table_update.wait_after_last_change_seconds int ALL +resources.jobs.*.trigger_details []jobs.TriggerDetails REMOTE +resources.jobs.*.trigger_details[*] jobs.TriggerDetails REMOTE +resources.jobs.*.trigger_details[*].history *jobs.TriggerHistory REMOTE +resources.jobs.*.trigger_details[*].history.last_failed *jobs.TriggerEvaluation REMOTE +resources.jobs.*.trigger_details[*].history.last_failed.description string REMOTE +resources.jobs.*.trigger_details[*].history.last_failed.run_id int64 REMOTE +resources.jobs.*.trigger_details[*].history.last_failed.timestamp int64 REMOTE +resources.jobs.*.trigger_details[*].history.last_not_triggered *jobs.TriggerEvaluation REMOTE +resources.jobs.*.trigger_details[*].history.last_not_triggered.description string REMOTE +resources.jobs.*.trigger_details[*].history.last_not_triggered.run_id int64 REMOTE +resources.jobs.*.trigger_details[*].history.last_not_triggered.timestamp int64 REMOTE +resources.jobs.*.trigger_details[*].history.last_triggered *jobs.TriggerEvaluation REMOTE +resources.jobs.*.trigger_details[*].history.last_triggered.description string REMOTE +resources.jobs.*.trigger_details[*].history.last_triggered.run_id int64 REMOTE +resources.jobs.*.trigger_details[*].history.last_triggered.timestamp int64 REMOTE +resources.jobs.*.trigger_details[*].state *jobs.PerTriggerState REMOTE +resources.jobs.*.trigger_details[*].state.continuous *jobs.ContinuousTriggerState REMOTE +resources.jobs.*.trigger_details[*].state.continuous.consecutive_failures int REMOTE +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.model *jobs.ModelTriggerState REMOTE +resources.jobs.*.trigger_details[*].state.pause_status jobs.PauseStatus REMOTE +resources.jobs.*.trigger_details[*].state.periodic *jobs.PeriodicTriggerState REMOTE +resources.jobs.*.trigger_details[*].state.periodic.next_run_time int64 REMOTE +resources.jobs.*.trigger_details[*].state.schedule *jobs.ScheduleTriggerState REMOTE +resources.jobs.*.trigger_details[*].state.sql_condition *jobs.SqlConditionState REMOTE +resources.jobs.*.trigger_details[*].state.sql_condition.latest_condition_evaluation_satisfied bool REMOTE +resources.jobs.*.trigger_details[*].state.sql_condition.latest_condition_evaluation_sql_session_id string REMOTE +resources.jobs.*.trigger_details[*].state.sql_condition.latest_condition_evaluation_sql_statement_id string REMOTE +resources.jobs.*.trigger_details[*].state.table_update *jobs.TableTriggerState REMOTE +resources.jobs.*.trigger_details[*].state.table_update.last_seen_table_states []jobs.TableState REMOTE +resources.jobs.*.trigger_details[*].state.table_update.last_seen_table_states[*] jobs.TableState REMOTE +resources.jobs.*.trigger_details[*].state.table_update.last_seen_table_states[*].has_seen_updates bool REMOTE +resources.jobs.*.trigger_details[*].state.table_update.last_seen_table_states[*].table_name string REMOTE +resources.jobs.*.trigger_details[*].state.table_update.using_scalable_monitoring bool REMOTE 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 @@ -1886,6 +1928,38 @@ resources.jobs.*.trigger_state.table.last_seen_table_states[*] jobs.TableState R resources.jobs.*.trigger_state.table.last_seen_table_states[*].has_seen_updates bool REMOTE resources.jobs.*.trigger_state.table.last_seen_table_states[*].table_name string REMOTE resources.jobs.*.trigger_state.table.using_scalable_monitoring bool REMOTE +resources.jobs.*.triggers []jobs.TriggerConfiguration ALL +resources.jobs.*.triggers[*] jobs.TriggerConfiguration ALL +resources.jobs.*.triggers[*].continuous *jobs.ContinuousTriggerConfiguration ALL +resources.jobs.*.triggers[*].continuous.task_retry_mode jobs.TaskRetryMode ALL +resources.jobs.*.triggers[*].file_arrival *jobs.FileArrivalTriggerConfiguration ALL +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[*].model *jobs.ModelTriggerConfiguration ALL +resources.jobs.*.triggers[*].model.aliases []string ALL +resources.jobs.*.triggers[*].model.aliases[*] string ALL +resources.jobs.*.triggers[*].model.condition jobs.ModelTriggerConfigurationCondition ALL +resources.jobs.*.triggers[*].model.min_time_between_triggers_seconds int ALL +resources.jobs.*.triggers[*].model.securable_name string ALL +resources.jobs.*.triggers[*].model.wait_after_last_change_seconds int ALL +resources.jobs.*.triggers[*].pause_status jobs.PauseStatus ALL +resources.jobs.*.triggers[*].periodic *jobs.PeriodicTriggerConfiguration ALL +resources.jobs.*.triggers[*].periodic.interval int ALL +resources.jobs.*.triggers[*].periodic.unit jobs.PeriodicTriggerConfigurationTimeUnit ALL +resources.jobs.*.triggers[*].schedule *jobs.CronTriggerConfiguration ALL +resources.jobs.*.triggers[*].schedule.quartz_cron_expression string ALL +resources.jobs.*.triggers[*].schedule.timezone_id string ALL +resources.jobs.*.triggers[*].sql_condition *jobs.SqlConditionConfiguration ALL +resources.jobs.*.triggers[*].sql_condition.sql_query_id string ALL +resources.jobs.*.triggers[*].sql_condition.trigger_mode jobs.SqlConditionTriggerMode ALL +resources.jobs.*.triggers[*].sql_condition.warehouse_id string ALL +resources.jobs.*.triggers[*].table_update *jobs.TableUpdateTriggerConfiguration ALL +resources.jobs.*.triggers[*].table_update.condition jobs.Condition ALL +resources.jobs.*.triggers[*].table_update.min_time_between_triggers_seconds int ALL +resources.jobs.*.triggers[*].table_update.table_names []string ALL +resources.jobs.*.triggers[*].table_update.table_names[*] string ALL +resources.jobs.*.triggers[*].table_update.wait_after_last_change_seconds int ALL resources.jobs.*.url string INPUT resources.jobs.*.usage_policy_id string ALL resources.jobs.*.webhook_notifications *jobs.WebhookNotifications ALL @@ -2626,6 +2700,9 @@ resources.pipelines.*.ingestion_definition.objects[*].report.table_configuration resources.pipelines.*.ingestion_definition.objects[*].report.table_configuration.workday_report_parameters.report_parameters[*].value string ALL resources.pipelines.*.ingestion_definition.objects[*].schema *pipelines.SchemaSpec ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options *pipelines.ConnectorOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.api_source_connector_options *pipelines.ApiSourceConnectorOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.api_source_connector_options.options map[string]string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.api_source_connector_options.options.* string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.confluence_options *pipelines.ConfluenceConnectorOptions ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.confluence_options.include_confluence_spaces []string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.confluence_options.include_confluence_spaces[*] string ALL @@ -2669,12 +2746,14 @@ resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.k resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.client_config.* string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer *pipelines.Transformer ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.input_column string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options *pipelines.JsonTransformerOptions ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.as_variant bool ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema_file_path string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.json_options.schema_hints string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.key_transformer.output_column string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.max_offsets_per_trigger int64 ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.starting_offset string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.topic_pattern string ALL @@ -2682,12 +2761,14 @@ resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.k resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.topics[*] string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer *pipelines.Transformer ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.input_column string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options *pipelines.JsonTransformerOptions ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.as_variant bool ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema_file_path string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.json_options.schema_hints string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.kafka_options.value_transformer.output_column string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.meta_ads_options *pipelines.MetaMarketingOptions ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.meta_ads_options.action_attribution_windows []string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.connector_options.meta_ads_options.action_attribution_windows[*] string ALL @@ -2785,12 +2866,14 @@ resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.fano resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms []pipelines.Transformer ALL resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*] pipelines.Transformer ALL resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].input_column string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].json_options *pipelines.JsonTransformerOptions ALL resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].json_options.as_variant bool ALL resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].json_options.schema string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].json_options.schema_file_path string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].json_options.schema_hints string ALL +resources.pipelines.*.ingestion_definition.objects[*].schema.fanout_options.transforms[*].output_column string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.source_catalog string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.source_schema string ALL resources.pipelines.*.ingestion_definition.objects[*].schema.table_configuration *pipelines.TableSpecificConfig ALL @@ -2829,6 +2912,9 @@ resources.pipelines.*.ingestion_definition.objects[*].schema.table_configuration resources.pipelines.*.ingestion_definition.objects[*].schema.table_configuration.workday_report_parameters.report_parameters[*].value string ALL resources.pipelines.*.ingestion_definition.objects[*].table *pipelines.TableSpec ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options *pipelines.ConnectorOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.api_source_connector_options *pipelines.ApiSourceConnectorOptions ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.api_source_connector_options.options map[string]string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.api_source_connector_options.options.* string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.confluence_options *pipelines.ConfluenceConnectorOptions ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.confluence_options.include_confluence_spaces []string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.confluence_options.include_confluence_spaces[*] string ALL @@ -2872,12 +2958,14 @@ resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.ka resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.client_config.* string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer *pipelines.Transformer ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.input_column string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options *pipelines.JsonTransformerOptions ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.as_variant bool ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema_file_path string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.json_options.schema_hints string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.key_transformer.output_column string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.max_offsets_per_trigger int64 ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.starting_offset string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.topic_pattern string ALL @@ -2885,12 +2973,14 @@ resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.ka resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.topics[*] string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer *pipelines.Transformer ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.format pipelines.TransformerFormat ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.input_column string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options *pipelines.JsonTransformerOptions ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.as_variant bool ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema_evolution_mode pipelines.FileIngestionOptionsSchemaEvolutionMode ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema_file_path string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.json_options.schema_hints string ALL +resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.kafka_options.value_transformer.output_column string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.meta_ads_options *pipelines.MetaMarketingOptions ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.meta_ads_options.action_attribution_windows []string ALL resources.pipelines.*.ingestion_definition.objects[*].table.connector_options.meta_ads_options.action_attribution_windows[*] string ALL @@ -3023,6 +3113,9 @@ resources.pipelines.*.ingestion_definition.objects[*].table.table_configuration. resources.pipelines.*.ingestion_definition.objects[*].table.table_configuration.workday_report_parameters.report_parameters[*].value string ALL resources.pipelines.*.ingestion_definition.source_configurations []pipelines.SourceConfig ALL resources.pipelines.*.ingestion_definition.source_configurations[*] pipelines.SourceConfig ALL +resources.pipelines.*.ingestion_definition.source_configurations[*].api_source_connector_config *pipelines.ApiSourceConnectorConfig ALL +resources.pipelines.*.ingestion_definition.source_configurations[*].api_source_connector_config.configs map[string]string ALL +resources.pipelines.*.ingestion_definition.source_configurations[*].api_source_connector_config.configs.* string ALL resources.pipelines.*.ingestion_definition.source_configurations[*].catalog *pipelines.SourceCatalogConfig ALL resources.pipelines.*.ingestion_definition.source_configurations[*].catalog.postgres *pipelines.PostgresCatalogConfig ALL resources.pipelines.*.ingestion_definition.source_configurations[*].catalog.postgres.slot_config *pipelines.PostgresSlotConfig ALL diff --git a/acceptance/bundle/resources/apps/lifecycle-started/output.txt b/acceptance/bundle/resources/apps/lifecycle-started/output.txt index 07fe53a2735..6e0d5e5d7f5 100644 --- a/acceptance/bundle/resources/apps/lifecycle-started/output.txt +++ b/acceptance/bundle/resources/apps/lifecycle-started/output.txt @@ -90,7 +90,7 @@ Resources: 0 created, 1 changed, 0 deleted, 0 unchanged "description": "MY_APP_DESCRIPTION_2", "name": "[UNIQUE_NAME]" }, - "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" + "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,forward_user_access_token,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" } } @@ -117,7 +117,7 @@ Resources: 0 created, 1 changed, 0 deleted, 0 unchanged "description": "MY_APP_DESCRIPTION_3", "name": "[UNIQUE_NAME]" }, - "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" + "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,forward_user_access_token,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" } } { diff --git a/acceptance/bundle/resources/apps/update/out.requests.direct.json b/acceptance/bundle/resources/apps/update/out.requests.direct.json index e68269ec514..faf9c2bbca4 100644 --- a/acceptance/bundle/resources/apps/update/out.requests.direct.json +++ b/acceptance/bundle/resources/apps/update/out.requests.direct.json @@ -17,7 +17,7 @@ "description": "MY_APP_DESCRIPTION", "name": "myappname" }, - "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" + "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,forward_user_access_token,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" } } { diff --git a/acceptance/cmd/workspace/apps/output.txt b/acceptance/cmd/workspace/apps/output.txt index 5b22a4c83a1..16da8b36097 100644 --- a/acceptance/cmd/workspace/apps/output.txt +++ b/acceptance/cmd/workspace/apps/output.txt @@ -94,6 +94,7 @@ Flags: --compute-min-instances int Minimum number of app instances. --compute-size ComputeSize Supported values: [LARGE, MEDIUM, XLARGE] --description string The description of the app. + --forward-user-access-token Forward the user's access token to the app. -h, --help help for update --json JSON either inline JSON string or @path/to/file.json with request body (default JSON (0 bytes)) --space string Name of the space this app belongs to. diff --git a/acceptance/help/output.txt b/acceptance/help/output.txt index a9df8fcc289..2c51131bd3f 100644 --- a/acceptance/help/output.txt +++ b/acceptance/help/output.txt @@ -145,7 +145,7 @@ Quality Monitor quality-monitor-v2 *Beta* Deprecated: Please use the Data Quality Monitoring API instead (REST: /api/data-quality/v1/monitors). Data Classification - data-classification *Beta* Manage data classification for Unity Catalog catalogs. + data-classification *Public Preview* 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). diff --git a/bundle/direct/dresources/app.go b/bundle/direct/dresources/app.go index a567d2259ee..8988d8193b7 100644 --- a/bundle/direct/dresources/app.go +++ b/bundle/direct/dresources/app.go @@ -163,6 +163,7 @@ var UpdateMaskFields = []string{ "usage_policy_id", "resources", "user_api_scopes", + "forward_user_access_token", "compute_size", "compute_min_instances", "compute_max_instances", diff --git a/bundle/direct/dresources/job.go b/bundle/direct/dresources/job.go index 60eab5cf93c..ba2cd8848dd 100644 --- a/bundle/direct/dresources/job.go +++ b/bundle/direct/dresources/job.go @@ -24,6 +24,7 @@ type JobRemote struct { EffectiveUsagePolicyId string `json:"effective_usage_policy_id,omitempty"` JobId int64 `json:"job_id,omitempty"` RunAsUserName string `json:"run_as_user_name,omitempty"` + TriggerDetails []jobs.TriggerDetails `json:"trigger_details,omitempty"` TriggerState *jobs.TriggerStateProto `json:"trigger_state,omitempty"` } @@ -145,6 +146,7 @@ func makeJobRemote(job *jobs.Job) *JobRemote { EffectiveUsagePolicyId: job.EffectiveUsagePolicyId, JobId: job.JobId, RunAsUserName: job.RunAsUserName, + TriggerDetails: job.TriggerDetails, TriggerState: job.TriggerState, } } @@ -206,6 +208,7 @@ func makeCreateJob(config jobs.JobSettings) (jobs.CreateJob, error) { Tasks: config.Tasks, TimeoutSeconds: config.TimeoutSeconds, Trigger: config.Trigger, + Triggers: config.Triggers, UsagePolicyId: config.UsagePolicyId, WebhookNotifications: config.WebhookNotifications, ForceSendFields: utils.FilterFields[jobs.CreateJob](config.ForceSendFields, "AccessControlList"), diff --git a/bundle/direct/dresources/resources.generated.yml b/bundle/direct/dresources/resources.generated.yml index d5fb0d6c98d..9d0fc0f3b45 100644 --- a/bundle/direct/dresources/resources.generated.yml +++ b/bundle/direct/dresources/resources.generated.yml @@ -193,6 +193,9 @@ resources: model_serving_endpoints: ignore_remote_changes: + - field: telemetry_config.table_names + reason: spec:input_only + - field: telemetry_config.inference_table_config.name reason: spec:output_only diff --git a/bundle/direct/dresources/resources.yml b/bundle/direct/dresources/resources.yml index e98a1ac2330..0bc65b0a660 100644 --- a/bundle/direct/dresources/resources.yml +++ b/bundle/direct/dresources/resources.yml @@ -320,9 +320,6 @@ resources: # Accepted on write but not returned by GET. - field: config.served_entities[*].burst_scaling_enabled reason: input_only - # table_names creates a profile and is not returned; inference_table_config round-trips. - - field: telemetry_config.table_names - reason: input_only # Write-only secrets: the backend stores them and returns the reference field, not the plaintext. - field: config.served_entities[*].external_model.ai21labs_config.ai21labs_api_key_plaintext reason: input_only diff --git a/bundle/internal/validation/generated/enum_fields.go b/bundle/internal/validation/generated/enum_fields.go index ecdef3afa24..8ee5c1857f4 100644 --- a/bundle/internal/validation/generated/enum_fields.go +++ b/bundle/internal/validation/generated/enum_fields.go @@ -147,6 +147,12 @@ var EnumFields = map[string][]string{ "resources.jobs.*.trigger.periodic.unit": {"DAYS", "HOURS", "MINUTES", "WEEKS"}, "resources.jobs.*.trigger.sql_condition.trigger_mode": {"QUERY_RETURNS_ROWS", "RESULT_VALUE_CHANGES"}, "resources.jobs.*.trigger.table_update.condition": {"ALL_UPDATED", "ANY_UPDATED"}, + "resources.jobs.*.triggers[*].continuous.task_retry_mode": {"NEVER", "ON_FAILURE"}, + "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"}, + "resources.jobs.*.triggers[*].sql_condition.trigger_mode": {"QUERY_RETURNS_ROWS", "RESULT_VALUE_CHANGES"}, + "resources.jobs.*.triggers[*].table_update.condition": {"ALL_UPDATED", "ANY_UPDATED"}, "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"}, @@ -154,8 +160,8 @@ var EnumFields = map[string][]string{ "resources.model_serving_endpoints.*.ai_gateway.rate_limits[*].renewal_period": {"minute"}, "resources.model_serving_endpoints.*.config.served_entities[*].external_model.amazon_bedrock_config.bedrock_provider": {"ai21labs", "amazon", "anthropic", "cohere"}, "resources.model_serving_endpoints.*.config.served_entities[*].external_model.provider": {"ai21labs", "amazon-bedrock", "anthropic", "cohere", "custom", "databricks-model-serving", "google-cloud-vertex-ai", "openai", "palm"}, - "resources.model_serving_endpoints.*.config.served_entities[*].workload_type": {"CPU", "CPU_LARGE", "CPU_MEDIUM", "GPU_LARGE", "GPU_MEDIUM", "GPU_SMALL", "GPU_XLARGE", "MULTIGPU_MEDIUM"}, - "resources.model_serving_endpoints.*.config.served_models[*].workload_type": {"CPU", "CPU_LARGE", "CPU_MEDIUM", "GPU_LARGE", "GPU_MEDIUM", "GPU_SMALL", "GPU_XLARGE", "MULTIGPU_MEDIUM"}, + "resources.model_serving_endpoints.*.config.served_entities[*].workload_type": {"CPU", "CPU_LARGE", "CPU_MEDIUM", "GPU_LARGE", "GPU_MEDIUM", "GPU_SMALL", "GPU_XLARGE", "GPU_XLARGE_8", "MULTIGPU_MEDIUM"}, + "resources.model_serving_endpoints.*.config.served_models[*].workload_type": {"CPU", "CPU_LARGE", "CPU_MEDIUM", "GPU_LARGE", "GPU_MEDIUM", "GPU_SMALL", "GPU_XLARGE", "GPU_XLARGE_8", "MULTIGPU_MEDIUM"}, "resources.model_serving_endpoints.*.permissions[*].level": {"CAN_MANAGE", "CAN_QUERY", "CAN_VIEW"}, "resources.model_serving_endpoints.*.rate_limits[*].key": {"endpoint", "user"}, "resources.model_serving_endpoints.*.rate_limits[*].renewal_period": {"minute"}, diff --git a/bundle/internal/validation/generated/required_fields.go b/bundle/internal/validation/generated/required_fields.go index 9268be0985f..6247dafc726 100644 --- a/bundle/internal/validation/generated/required_fields.go +++ b/bundle/internal/validation/generated/required_fields.go @@ -183,6 +183,12 @@ var RequiredFields = map[string][]string{ "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[*].file_arrival": {"url"}, + "resources.jobs.*.triggers[*].model": {"condition"}, + "resources.jobs.*.triggers[*].periodic": {"interval", "unit"}, + "resources.jobs.*.triggers[*].schedule": {"quartz_cron_expression", "timezone_id"}, + "resources.jobs.*.triggers[*].sql_condition": {"sql_query_id", "warehouse_id"}, + "resources.jobs.*.triggers[*].table_update": {"table_names"}, "resources.jobs.*.webhook_notifications.on_duration_warning_threshold_exceeded[*]": {"id"}, "resources.jobs.*.webhook_notifications.on_failure[*]": {"id"}, "resources.jobs.*.webhook_notifications.on_start[*]": {"id"}, diff --git a/bundle/schema/jsonschema.json b/bundle/schema/jsonschema.json index e0c710428a3..f848f61b43f 100644 --- a/bundle/schema/jsonschema.json +++ b/bundle/schema/jsonschema.json @@ -188,6 +188,12 @@ "description": "The description of the app.", "$ref": "#/$defs/string" }, + "forward_user_access_token": { + "description": "[Private Preview] Forward the user's access token to the app. Requires stopping and starting app compute to take effect.", + "$ref": "#/$defs/bool", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, "git_repository": { "description": "Git repository configuration for app deployments. When specified, deployments can\nreference code from this repository by providing only the git reference (branch, tag, or commit).", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.GitRepository" @@ -1116,6 +1122,10 @@ "description": "A configuration to trigger a run when certain conditions are met. The default behavior is that the job runs only when triggered by clicking “Run Now” in the Jobs UI or sending an API request to `runNow`.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.TriggerSettings" }, + "triggers": { + "description": "[Beta] List of triggers attached to this job. A run starts when any active trigger evaluates to true. Cannot be set in\nthe same request as the legacy `schedule`, `trigger`, or `continuous` fields. The 10-trigger cap is the design's\nhard limit; rollout steps the effective cap 3 -\u003e 5 -\u003e 10 via internal validation during the preview.", + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.TriggerConfiguration" + }, "usage_policy_id": { "description": "[Private Preview] The id of the user specified usage policy to use for this job.\nIf not specified, a default usage policy may be applied when creating or modifying the job.\nSee `effective_usage_policy_id` for the usage policy used by this workload.", "$ref": "#/$defs/string", @@ -5876,7 +5886,7 @@ "$ref": "#/$defs/string" }, "java_dependencies": { - "description": "[Public Preview] 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" } }, @@ -7031,10 +7041,20 @@ "description": "[Public Preview] Deployment specs for this task. Exactly one deployment is currently\nsupported (a single entry where every node runs the same command); this\nis a current-Preview constraint. Role-split workloads (driver + worker,\nparameter server, separate eval node, etc.) with multiple entries are the\neventual intent but not yet supported.", "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.DeploymentSpec" }, + "docker_image_url": { + "description": "[Beta] Optional Docker image URL for a custom container image. When set,\nthe task runs on the specified container image instead of the default\nDatabricks client image. Format:\n`{organization}/{repository}:{tag}`", + "$ref": "#/$defs/string" + }, "experiment": { "description": "[Public Preview] MLflow experiment name for this run. If an experiment with this name\nalready exists under the calling user, the run is appended to it;\notherwise a new experiment is created. To target a specific MLflow\nstorage location (for example, when running as a service principal), set\n`mlflow_experiment_directory`.", "$ref": "#/$defs/string" }, + "mlflow_artifact_location": { + "description": "[Private Preview] Optional root location for MLflow artifacts logged by the run.\nIf this field isn't specified the default artifact location will be in dbfs\ni.e. `dbfs:/databricks/mlflow-tracking/\u003cexperiment_id\u003e/...`\nIf dbfs access is restricted or UC is preferred this can be a custom location in UC:\n`dbfs:/Volumes/\u003ccatalog\u003e/\u003cschema\u003e/\u003cvolume\u003e/...`\nThe location should be unique for each experiment.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, "mlflow_experiment_directory": { "description": "[Public Preview] Optional workspace directory under which the MLflow experiment named in\n`experiment` is created. Must start with `/Workspace`. Set this when\nrunning as a service principal that has no default user directory; for\nregular users the experiment defaults to the user's home directory.", "$ref": "#/$defs/string" @@ -7353,6 +7373,25 @@ } ] }, + "jobs.ContinuousTriggerConfiguration": { + "oneOf": [ + { + "type": "object", + "description": "Continuous trigger. Stripped-down counterpart to `ContinuousSettings`: `pause_status` is owned by the enclosing\n`TriggerConfiguration` and intentionally omitted here.", + "properties": { + "task_retry_mode": { + "description": "[Beta] Whether the continuous job applies task-level retries. Defaults to NEVER.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.TaskRetryMode" + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.CronSchedule": { "oneOf": [ { @@ -7389,6 +7428,33 @@ } ] }, + "jobs.CronTriggerConfiguration": { + "oneOf": [ + { + "type": "object", + "description": "Cron schedule trigger. Stripped-down counterpart to `CronSchedule`: `pause_status` and `sql_condition` are owned\nby the enclosing `TriggerConfiguration` and intentionally omitted here.", + "properties": { + "quartz_cron_expression": { + "description": "[Beta] A Cron expression using Quartz syntax that describes the schedule for this trigger. See\n[Cron Trigger](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html) for details.", + "$ref": "#/$defs/string" + }, + "timezone_id": { + "description": "[Beta] A Java timezone ID. The schedule is resolved with respect to this timezone. See\n[Java TimeZone](https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html) for details.", + "$ref": "#/$defs/string" + } + }, + "additionalProperties": false, + "required": [ + "quartz_cron_expression", + "timezone_id" + ] + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.DashboardTask": { "oneOf": [ { @@ -9493,6 +9559,57 @@ } ] }, + "jobs.TriggerConfiguration": { + "oneOf": [ + { + "type": "object", + "description": "A single trigger attached to a job via `JobSettings.triggers`. Exactly one of the trigger-type fields\n(`periodic`, `schedule`, `continuous`, `file_arrival`, `table_update`, `model`) must be set; mutual exclusivity\nis enforced in the API handler rather than via `oneof` so that codegen, validation, and JSON serialization\nacross SDKs and Terraform behave consistently.", + "properties": { + "continuous": { + "description": "[Beta] Continuous trigger configuration.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.ContinuousTriggerConfiguration" + }, + "file_arrival": { + "description": "[Beta] File arrival trigger configuration.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.FileArrivalTriggerConfiguration" + }, + "model": { + "description": "[Private Preview] Model trigger configuration.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.ModelTriggerConfiguration", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "pause_status": { + "description": "[Beta] Whether this trigger is paused. Defaults to UNPAUSED when unset; the server always returns an explicit value on read.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PauseStatus" + }, + "periodic": { + "description": "[Beta] Trigger type: exactly one must be set; mutual exclusivity is enforced in the API handler\nPeriodic trigger configuration.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PeriodicTriggerConfiguration" + }, + "schedule": { + "description": "[Beta] Cron schedule trigger configuration.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.CronTriggerConfiguration" + }, + "sql_condition": { + "description": "[Private Preview] Optional SQL condition that gates whether this trigger fires.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.SqlConditionConfiguration", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, + "table_update": { + "description": "[Beta] Table update trigger configuration.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.TableUpdateTriggerConfiguration" + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.TriggerSettings": { "oneOf": [ { @@ -9728,6 +9845,48 @@ } ] }, + "pipelines.ApiSourceConnectorConfig": { + "oneOf": [ + { + "type": "object", + "description": "Top-level configuration for API Source connectors with arbitrary configuration.", + "properties": { + "configs": { + "description": "[Private Preview] Arbitrary key-value configuration values for the API Source connector.", + "$ref": "#/$defs/map/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, + "pipelines.ApiSourceConnectorOptions": { + "oneOf": [ + { + "type": "object", + "description": "Options for API Source connectors with arbitrary configuration.", + "properties": { + "options": { + "description": "[Private Preview] Arbitrary key-value configuration options for the API Source connector.", + "$ref": "#/$defs/map/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + } + }, + "additionalProperties": false + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "pipelines.AutoFullRefreshPolicy": { "oneOf": [ { @@ -9799,6 +9958,12 @@ "type": "object", "description": "Wrapper message for source-specific options to support multiple connector types", "properties": { + "api_source_connector_options": { + "description": "[Private Preview] Connector-specific options for API Source connectors.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ApiSourceConnectorOptions", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, "confluence_options": { "description": "[Public Preview] Confluence specific options for ingestion", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ConfluenceConnectorOptions" @@ -9858,10 +10023,8 @@ "doNotSuggest": true }, "zendesk_support_options": { - "description": "[Private Preview] Zendesk Support specific options for ingestion", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ZendeskSupportOptions", - "x-databricks-launch-stage": "PRIVATE_PREVIEW", - "doNotSuggest": true + "description": "[Beta] Zendesk Support specific options for ingestion", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ZendeskSupportOptions" } }, "additionalProperties": false @@ -10677,7 +10840,7 @@ "[Beta]", "[Public Preview]", "[Beta]", - "[Private Preview]", + "[Beta]", "[Private Preview]" ] }, @@ -11743,6 +11906,12 @@ { "type": "object", "properties": { + "api_source_connector_config": { + "description": "[Private Preview] Connector-specific top-level configuration for API Source connectors.", + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.ApiSourceConnectorConfig", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, "catalog": { "description": "[Public Preview] Catalog-level source configuration parameters", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.SourceCatalogConfig" @@ -12091,9 +12260,21 @@ "description": "[Beta] Required: the wire format of the data.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TransformerFormat" }, + "input_column": { + "description": "[Private Preview] Optional input column to transform. When set, the transformer reads\nfrom this column instead of the default source column.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true + }, "json_options": { "description": "[Beta]", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.JsonTransformerOptions" + }, + "output_column": { + "description": "[Private Preview] Optional output column name. When set, the transformed result is\nwritten to this column instead of replacing the input column.", + "$ref": "#/$defs/string", + "x-databricks-launch-stage": "PRIVATE_PREVIEW", + "doNotSuggest": true } }, "additionalProperties": false @@ -12130,10 +12311,8 @@ "description": "Zendesk Support specific options for ingestion", "properties": { "start_date": { - "description": "[Private Preview] (Optional) Start date in YYYY-MM-DD format for the initial sync.\nThis determines the earliest date from which to sync historical data.", - "$ref": "#/$defs/string", - "x-databricks-launch-stage": "PRIVATE_PREVIEW", - "doNotSuggest": true + "description": "[Beta] (Optional) Start date in YYYY-MM-DD format for the initial sync.\nThis determines the earliest date from which to sync historical data.", + "$ref": "#/$defs/string" } }, "additionalProperties": false @@ -13618,6 +13797,7 @@ "GPU_LARGE", "MULTIGPU_MEDIUM", "CPU_LARGE", + "GPU_XLARGE_8", "GPU_XLARGE", "CPU_MEDIUM" ], @@ -13629,6 +13809,7 @@ "", "[Beta]", "[Beta]", + "[Beta]", "[Beta]" ] }, @@ -13667,6 +13848,7 @@ "GPU_LARGE", "MULTIGPU_MEDIUM", "CPU_LARGE", + "GPU_XLARGE_8", "GPU_XLARGE", "CPU_MEDIUM" ], @@ -13678,6 +13860,7 @@ "", "[Beta]", "[Beta]", + "[Beta]", "[Beta]" ] }, @@ -13697,7 +13880,7 @@ "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/serving.TelemetryInferenceTableConfig" }, "table_names": { - "description": "[Public Preview] The Unity Catalog tables to which endpoint telemetry (logs, traces, and metrics) is exported.\nProvide this to create a new telemetry profile for the endpoint from the given tables.", + "description": "[Public Preview] The Unity Catalog tables to which endpoint telemetry (logs, traces, and metrics) is exported.\nProvide this to create a new telemetry profile for the endpoint from the given tables.\nThis field selects the tables when writing a telemetry configuration; it is not returned when\nreading one. Responses identify the resulting profile with `telemetry_profile_id` instead.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/serving.UnityCatalogTableNames" }, "telemetry_profile_id": { @@ -15694,6 +15877,20 @@ } ] }, + "jobs.TriggerConfiguration": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.TriggerConfiguration" + } + }, + { + "type": "string", + "pattern": "\\$\\{(var(\\.\\p{L}+([-_]*[\\p{L}\\p{N}]+)*(\\[[0-9]+\\])*)+)\\}" + } + ] + }, "jobs.Webhook": { "oneOf": [ { diff --git a/bundle/terraform_dabs_map/generated.go b/bundle/terraform_dabs_map/generated.go index 84fed76d30c..af281cf440b 100644 --- a/bundle/terraform_dabs_map/generated.go +++ b/bundle/terraform_dabs_map/generated.go @@ -4,7 +4,7 @@ package terraform_dabs_map // alerts / databricks_alert_v2: 5 dabs-only // alerts / databricks_alert_v2: 3 tf-only -// apps / databricks_app: 16 dabs-only +// apps / databricks_app: 17 dabs-only // apps / databricks_app: 1 tf-only // clusters / databricks_cluster: 1 dabs-only // clusters / databricks_cluster: 25 tf-only @@ -13,13 +13,13 @@ package terraform_dabs_map // experiments / databricks_mlflow_experiment: 6 dabs-only // experiments / databricks_mlflow_experiment: 1 tf-only // jobs / databricks_job: 11 renames -// jobs / databricks_job: 20 dabs-only +// jobs / databricks_job: 53 dabs-only // jobs / databricks_job: 258 tf-only // model_serving_endpoints / databricks_model_serving: 6 dabs-only // model_serving_endpoints / databricks_model_serving: 2 tf-only // models / databricks_mlflow_model: 1 renames // pipelines / databricks_pipeline: 3 renames -// pipelines / databricks_pipeline: 68 dabs-only +// pipelines / databricks_pipeline: 87 dabs-only // pipelines / databricks_pipeline: 2 tf-only // postgres_branches / databricks_postgres_branch: 1 unwraps // postgres_catalogs / databricks_postgres_catalog: 1 unwraps @@ -108,6 +108,7 @@ var DABsOnlyFields = map[string]FieldSet{ "value_from": {}, // apps.*.config.env.value_from }, }, + "forward_user_access_token": {}, "git_source": { "branch": {}, // apps.*.git_source.branch "commit": {}, // apps.*.git_source.commit @@ -151,8 +152,16 @@ var DABsOnlyFields = map[string]FieldSet{ }, }, "tasks": { + "ai_runtime_task": { + "docker_image_url": {}, // jobs.*.tasks.ai_runtime_task.docker_image_url + "mlflow_artifact_location": {}, // jobs.*.tasks.ai_runtime_task.mlflow_artifact_location + }, "for_each_task": { "task": { + "ai_runtime_task": { + "docker_image_url": {}, // jobs.*.tasks.for_each_task.task.ai_runtime_task.docker_image_url + "mlflow_artifact_location": {}, // jobs.*.tasks.for_each_task.task.ai_runtime_task.mlflow_artifact_location + }, "for_each_task": { "concurrency": {}, // jobs.*.tasks.for_each_task.task.for_each_task.concurrency "inputs": {}, // jobs.*.tasks.for_each_task.task.for_each_task.inputs @@ -176,6 +185,43 @@ var DABsOnlyFields = map[string]FieldSet{ "warehouse_id": {}, // jobs.*.trigger.sql_condition.warehouse_id }, }, + "triggers": { + "continuous": { + "task_retry_mode": {}, // jobs.*.triggers.continuous.task_retry_mode + }, + "file_arrival": { + "min_time_between_triggers_seconds": {}, // jobs.*.triggers.file_arrival.min_time_between_triggers_seconds + "url": {}, // jobs.*.triggers.file_arrival.url + "wait_after_last_change_seconds": {}, // jobs.*.triggers.file_arrival.wait_after_last_change_seconds + }, + "model": { + "aliases": {}, // jobs.*.triggers.model.aliases + "condition": {}, // jobs.*.triggers.model.condition + "min_time_between_triggers_seconds": {}, // jobs.*.triggers.model.min_time_between_triggers_seconds + "securable_name": {}, // jobs.*.triggers.model.securable_name + "wait_after_last_change_seconds": {}, // jobs.*.triggers.model.wait_after_last_change_seconds + }, + "pause_status": {}, // jobs.*.triggers.pause_status + "periodic": { + "interval": {}, // jobs.*.triggers.periodic.interval + "unit": {}, // jobs.*.triggers.periodic.unit + }, + "schedule": { + "quartz_cron_expression": {}, // jobs.*.triggers.schedule.quartz_cron_expression + "timezone_id": {}, // jobs.*.triggers.schedule.timezone_id + }, + "sql_condition": { + "sql_query_id": {}, // jobs.*.triggers.sql_condition.sql_query_id + "trigger_mode": {}, // jobs.*.triggers.sql_condition.trigger_mode + "warehouse_id": {}, // jobs.*.triggers.sql_condition.warehouse_id + }, + "table_update": { + "condition": {}, // jobs.*.triggers.table_update.condition + "min_time_between_triggers_seconds": {}, // jobs.*.triggers.table_update.min_time_between_triggers_seconds + "table_names": {}, // jobs.*.triggers.table_update.table_names + "wait_after_last_change_seconds": {}, // jobs.*.triggers.table_update.wait_after_last_change_seconds + }, + }, }, "model_serving_endpoints": { "telemetry_config": { @@ -206,6 +252,11 @@ var DABsOnlyFields = map[string]FieldSet{ }, "schema": { "connector_options": { + "api_source_connector_options": { + "options": { + "*": {}, // pipelines.*.ingestion_definition.objects.schema.connector_options.api_source_connector_options.options.* + }, + }, "google_ads_options": { "custom_report_options": { "metrics": {}, // pipelines.*.ingestion_definition.objects.schema.connector_options.google_ads_options.custom_report_options.metrics @@ -214,6 +265,16 @@ var DABsOnlyFields = map[string]FieldSet{ "segments": {}, // pipelines.*.ingestion_definition.objects.schema.connector_options.google_ads_options.custom_report_options.segments }, }, + "kafka_options": { + "key_transformer": { + "input_column": {}, // pipelines.*.ingestion_definition.objects.schema.connector_options.kafka_options.key_transformer.input_column + "output_column": {}, // pipelines.*.ingestion_definition.objects.schema.connector_options.kafka_options.key_transformer.output_column + }, + "value_transformer": { + "input_column": {}, // pipelines.*.ingestion_definition.objects.schema.connector_options.kafka_options.value_transformer.input_column + "output_column": {}, // pipelines.*.ingestion_definition.objects.schema.connector_options.kafka_options.value_transformer.output_column + }, + }, "meta_ads_options": { "custom_report_options": { "action_attribution_windows": {}, // pipelines.*.ingestion_definition.objects.schema.connector_options.meta_ads_options.custom_report_options.action_attribution_windows @@ -245,7 +306,8 @@ var DABsOnlyFields = map[string]FieldSet{ "fanout_options": { "fanout_by": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.fanout_by "transforms": { - "format": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.transforms.format + "format": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.transforms.format + "input_column": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.transforms.input_column "json_options": { "as_variant": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.transforms.json_options.as_variant "schema": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.transforms.json_options.schema @@ -253,6 +315,7 @@ var DABsOnlyFields = map[string]FieldSet{ "schema_file_path": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.transforms.json_options.schema_file_path "schema_hints": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.transforms.json_options.schema_hints }, + "output_column": {}, // pipelines.*.ingestion_definition.objects.schema.fanout_options.transforms.output_column }, }, "table_configuration": { @@ -261,6 +324,11 @@ var DABsOnlyFields = map[string]FieldSet{ }, "table": { "connector_options": { + "api_source_connector_options": { + "options": { + "*": {}, // pipelines.*.ingestion_definition.objects.table.connector_options.api_source_connector_options.options.* + }, + }, "google_ads_options": { "custom_report_options": { "metrics": {}, // pipelines.*.ingestion_definition.objects.table.connector_options.google_ads_options.custom_report_options.metrics @@ -269,6 +337,16 @@ var DABsOnlyFields = map[string]FieldSet{ "segments": {}, // pipelines.*.ingestion_definition.objects.table.connector_options.google_ads_options.custom_report_options.segments }, }, + "kafka_options": { + "key_transformer": { + "input_column": {}, // pipelines.*.ingestion_definition.objects.table.connector_options.kafka_options.key_transformer.input_column + "output_column": {}, // pipelines.*.ingestion_definition.objects.table.connector_options.kafka_options.key_transformer.output_column + }, + "value_transformer": { + "input_column": {}, // pipelines.*.ingestion_definition.objects.table.connector_options.kafka_options.value_transformer.input_column + "output_column": {}, // pipelines.*.ingestion_definition.objects.table.connector_options.kafka_options.value_transformer.output_column + }, + }, "meta_ads_options": { "custom_report_options": { "action_attribution_windows": {}, // pipelines.*.ingestion_definition.objects.table.connector_options.meta_ads_options.custom_report_options.action_attribution_windows @@ -302,6 +380,13 @@ var DABsOnlyFields = map[string]FieldSet{ }, }, }, + "source_configurations": { + "api_source_connector_config": { + "configs": { + "*": {}, // pipelines.*.ingestion_definition.source_configurations.api_source_connector_config.configs.* + }, + }, + }, "table_configuration": { "source_metadata_column": {}, // pipelines.*.ingestion_definition.table_configuration.source_metadata_column }, diff --git a/cmd/workspace/ai-gateway/ai-gateway.go b/cmd/workspace/ai-gateway/ai-gateway.go index 5d5d76fe1da..0bcefe6e8f9 100644 --- a/cmd/workspace/ai-gateway/ai-gateway.go +++ b/cmd/workspace/ai-gateway/ai-gateway.go @@ -567,8 +567,6 @@ func newGetMcpService() *cobra.Command { var getMcpServiceReq catalog.GetMcpServiceRequest - cmd.Flags().BoolVar(&getMcpServiceReq.IncludeBrowse, "include-browse", getMcpServiceReq.IncludeBrowse, `Whether to include MCP services for which the principal can only access selective metadata.`) - cmd.Use = "get-mcp-service NAME" cmd.Short = `*Beta* Get an MCP service.` cmd.Long = `This command is in Beta and may change without notice. @@ -636,8 +634,6 @@ func newGetModelProviderService() *cobra.Command { var getModelProviderServiceReq catalog.GetModelProviderServiceRequest - cmd.Flags().BoolVar(&getModelProviderServiceReq.IncludeBrowse, "include-browse", getModelProviderServiceReq.IncludeBrowse, `Whether to include provider services for which the principal can only access selective metadata.`) - cmd.Use = "get-model-provider-service NAME" cmd.Short = `*Beta* Get a model provider service.` cmd.Long = `This command is in Beta and may change without notice. @@ -705,8 +701,6 @@ func newGetModelService() *cobra.Command { var getModelServiceReq catalog.GetModelServiceRequest - cmd.Flags().BoolVar(&getModelServiceReq.IncludeBrowse, "include-browse", getModelServiceReq.IncludeBrowse, `Whether to include model services for which the principal can only access selective metadata.`) - cmd.Use = "get-model-service NAME" cmd.Short = `*Beta* Get a model service.` cmd.Long = `This command is in Beta and may change without notice. @@ -778,7 +772,6 @@ func newListMcpServices() *cobra.Command { // branches, so the method-call path is always reached. var listMcpServicesLimit int - cmd.Flags().BoolVar(&listMcpServicesReq.IncludeBrowse, "include-browse", listMcpServicesReq.IncludeBrowse, `Whether to include MCP services for which the principal can only access selective metadata.`) cmd.Flags().IntVar(&listMcpServicesReq.PageSize, "page-size", listMcpServicesReq.PageSize, `Maximum number of MCP services to return.`) cmd.Flags().StringVar(&listMcpServicesReq.Parent, "parent", listMcpServicesReq.Parent, `Resource name of the parent schema to list within, as schemas/{catalog}.{schema}.`) cmd.Flags().Var(&listMcpServicesReq.View, "view", `View selector controlling which fields are populated per row. Supported values: [BASIC, FULL]`) @@ -859,7 +852,6 @@ func newListModelProviderServices() *cobra.Command { // branches, so the method-call path is always reached. var listModelProviderServicesLimit int - cmd.Flags().BoolVar(&listModelProviderServicesReq.IncludeBrowse, "include-browse", listModelProviderServicesReq.IncludeBrowse, `Whether to include provider services for which the principal can only access selective metadata.`) cmd.Flags().IntVar(&listModelProviderServicesReq.PageSize, "page-size", listModelProviderServicesReq.PageSize, `Maximum number of provider services to return.`) cmd.Flags().StringVar(&listModelProviderServicesReq.Parent, "parent", listModelProviderServicesReq.Parent, `Resource name of the parent schema to list within, as schemas/{catalog}.{schema}.`) cmd.Flags().Var(&listModelProviderServicesReq.View, "view", `View selector controlling which fields are populated per row. Supported values: [BASIC, FULL]`) @@ -940,7 +932,6 @@ func newListModelServices() *cobra.Command { // branches, so the method-call path is always reached. var listModelServicesLimit int - cmd.Flags().BoolVar(&listModelServicesReq.IncludeBrowse, "include-browse", listModelServicesReq.IncludeBrowse, `Whether to include model services for which the principal can only access selective metadata.`) cmd.Flags().IntVar(&listModelServicesReq.PageSize, "page-size", listModelServicesReq.PageSize, `Maximum number of model services to return.`) cmd.Flags().StringVar(&listModelServicesReq.Parent, "parent", listModelServicesReq.Parent, `Resource name of the parent schema to list within, as schemas/{catalog}.{schema}.`) cmd.Flags().Var(&listModelServicesReq.View, "view", `View selector controlling which fields are populated per row. Supported values: [BASIC, FULL]`) diff --git a/cmd/workspace/apps/apps.go b/cmd/workspace/apps/apps.go index c06e20fa301..8a40af446e3 100644 --- a/cmd/workspace/apps/apps.go +++ b/cmd/workspace/apps/apps.go @@ -105,6 +105,7 @@ func newCreate() *cobra.Command { // TODO: complex arg: compute_status cmd.Flags().StringVar(&createReq.App.Description, "description", createReq.App.Description, `The description of the app.`) // TODO: array: effective_user_api_scopes + cmd.Flags().BoolVar(&createReq.App.ForwardUserAccessToken, "forward-user-access-token", createReq.App.ForwardUserAccessToken, `Forward the user's access token to the app.`) // TODO: complex arg: git_repository // TODO: complex arg: pending_deployment // TODO: array: resources @@ -1700,6 +1701,7 @@ func newUpdate() *cobra.Command { // TODO: complex arg: compute_status cmd.Flags().StringVar(&updateReq.App.Description, "description", updateReq.App.Description, `The description of the app.`) // TODO: array: effective_user_api_scopes + cmd.Flags().BoolVar(&updateReq.App.ForwardUserAccessToken, "forward-user-access-token", updateReq.App.ForwardUserAccessToken, `Forward the user's access token to the app.`) // TODO: complex arg: git_repository // TODO: complex arg: pending_deployment // TODO: array: resources diff --git a/cmd/workspace/bundle-deployments/bundle-deployments.go b/cmd/workspace/bundle-deployments/bundle-deployments.go index 3d209b53643..9dba5470c05 100644 --- a/cmd/workspace/bundle-deployments/bundle-deployments.go +++ b/cmd/workspace/bundle-deployments/bundle-deployments.go @@ -262,9 +262,9 @@ func newCreateOperation() *cobra.Command { the operation's name. If an operation with the same key already exists under the version, the server returns ALREADY_EXISTS. - On success the server also updates the corresponding deployment-level Resource - (creating it if this is the first operation for that resource_key, or removing - it if action_type is DELETE). + On success the server also updates the corresponding deployment-level + resource, creating it if this is the first operation for that resource_key and + removing it if the operation records no state (see that field). Arguments: PARENT: The parent version where this operation will be recorded. Format: @@ -1135,10 +1135,12 @@ func newUpdateOperation() *cobra.Command { caller sets operation.sequence_id to the value it last observed, and the server rejects the update with ABORTED if the operation has been modified since. On success the server increments sequence_id; updates to state and - resource_id are mirrored onto the corresponding deployment-level Resource - projection. The parent version must be in progress, delete operations cannot - be updated, and after the update is applied a succeeded operation cannot carry - an error_message. + resource_id are mirrored onto the corresponding deployment-level resource. + Listing state in update_mask with no value clears it, which removes the + resource, so a delete that is retried until it succeeds must clear state. + The parent version must be in progress, and after the update is applied a + succeeded operation cannot carry an error_message. See the state and + resource_id fields for the rest. Arguments: NAME: Resource name of the operation. Format: diff --git a/cmd/workspace/data-classification/data-classification.go b/cmd/workspace/data-classification/data-classification.go index 36a25aac8b5..1bf8212d360 100644 --- a/cmd/workspace/data-classification/data-classification.go +++ b/cmd/workspace/data-classification/data-classification.go @@ -21,8 +21,8 @@ var cmdOverrides []func(*cobra.Command) func New() *cobra.Command { cmd := &cobra.Command{ Use: "data-classification", - Short: `*Beta* Manage data classification for Unity Catalog catalogs.`, - Long: `This command is in Beta and may change without notice. + Short: `*Public Preview* Manage data classification for Unity Catalog catalogs.`, + Long: `This command is in Public Preview and may change without notice. Manage data classification for Unity Catalog catalogs. Data classification automatically identifies and tags sensitive data (PII) in Unity Catalog @@ -33,8 +33,8 @@ Manage data classification for Unity Catalog catalogs. Data classification } cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" // Add methods cmd.AddCommand(newCreateCatalogConfig()) @@ -74,8 +74,8 @@ func newCreateCatalogConfig() *cobra.Command { cmd.Flags().StringVar(&createCatalogConfigReq.CatalogConfig.Name, "name", createCatalogConfigReq.CatalogConfig.Name, `Resource name in the format: catalogs/{catalog_name}/config.`) cmd.Use = "create-catalog-config PARENT" - cmd.Short = `*Beta* Create config for a catalog.` - cmd.Long = `This command is in Beta and may change without notice. + cmd.Short = `*Public Preview* Create config for a catalog.` + cmd.Long = `This command is in Public Preview and may change without notice. Create config for a catalog. @@ -88,8 +88,8 @@ Create config for a catalog. PARENT: Parent resource in the format: catalogs/{catalog_name}` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -150,8 +150,8 @@ func newDeleteCatalogConfig() *cobra.Command { var deleteCatalogConfigReq dataclassification.DeleteCatalogConfigRequest cmd.Use = "delete-catalog-config NAME" - cmd.Short = `*Beta* Delete config for a catalog.` - cmd.Long = `This command is in Beta and may change without notice. + cmd.Short = `*Public Preview* Delete config for a catalog.` + cmd.Long = `This command is in Public Preview and may change without notice. Delete config for a catalog. @@ -161,8 +161,8 @@ Delete config for a catalog. NAME: Resource name in the format: catalogs/{catalog_name}/config` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -210,8 +210,8 @@ func newGetCatalogConfig() *cobra.Command { var getCatalogConfigReq dataclassification.GetCatalogConfigRequest cmd.Use = "get-catalog-config NAME" - cmd.Short = `*Beta* Get config for a catalog.` - cmd.Long = `This command is in Beta and may change without notice. + cmd.Short = `*Public Preview* Get config for a catalog.` + cmd.Long = `This command is in Public Preview and may change without notice. Get config for a catalog. @@ -221,8 +221,8 @@ Get config for a catalog. NAME: Resource name in the format: catalogs/{catalog_name}/config` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -280,8 +280,8 @@ func newUpdateCatalogConfig() *cobra.Command { cmd.Flags().StringVar(&updateCatalogConfigReq.CatalogConfig.Name, "name", updateCatalogConfigReq.CatalogConfig.Name, `Resource name in the format: catalogs/{catalog_name}/config.`) cmd.Use = "update-catalog-config NAME UPDATE_MASK" - cmd.Short = `*Beta* Update config for a catalog.` - cmd.Long = `This command is in Beta and may change without notice. + cmd.Short = `*Public Preview* Update config for a catalog.` + cmd.Long = `This command is in Public Preview and may change without notice. Update config for a catalog. @@ -294,8 +294,8 @@ Update config for a catalog. UPDATE_MASK: Field mask specifying which fields to update.` cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PUBLIC_BETA" - cmd.Annotations["launch_stage_display"] = "Beta" + cmd.Annotations["launch_stage"] = "PUBLIC_PREVIEW" + cmd.Annotations["launch_stage_display"] = "Public Preview" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(2) diff --git a/cmd/workspace/policies/policies.go b/cmd/workspace/policies/policies.go index a919e6b0c13..7c3e903a20c 100644 --- a/cmd/workspace/policies/policies.go +++ b/cmd/workspace/policies/policies.go @@ -110,8 +110,8 @@ func newCreatePolicy() *cobra.Command { Arguments: TO_PRINCIPALS: List of user or group names that the policy applies to. Required on create and optional on update. - FOR_SECURABLE_TYPE: Type of securables that the policy should take effect on. Only TABLE is - supported at this moment. Required on create and optional on update. + FOR_SECURABLE_TYPE: Type of securables that the policy should take effect on. Required on + create and optional on update. Supported values: [ CATALOG, CLEAN_ROOM, @@ -481,8 +481,8 @@ func newUpdatePolicy() *cobra.Command { NAME: Required. The name of the policy to update. TO_PRINCIPALS: List of user or group names that the policy applies to. Required on create and optional on update. - FOR_SECURABLE_TYPE: Type of securables that the policy should take effect on. Only TABLE is - supported at this moment. Required on create and optional on update. + FOR_SECURABLE_TYPE: Type of securables that the policy should take effect on. Required on + create and optional on update. Supported values: [ CATALOG, CLEAN_ROOM, diff --git a/cmd/workspace/secrets-uc/secrets-uc.go b/cmd/workspace/secrets-uc/secrets-uc.go index 2c1d14b5fb0..d2609bc1d86 100644 --- a/cmd/workspace/secrets-uc/secrets-uc.go +++ b/cmd/workspace/secrets-uc/secrets-uc.go @@ -252,6 +252,8 @@ func newGetSecret() *cobra.Command { var getSecretReq catalog.GetSecretRequest + cmd.Flags().BoolVar(&getSecretReq.IncludeValue, "include-value", getSecretReq.IncludeValue, `Whether to include the secret value in the response.`) + cmd.Use = "get-secret FULL_NAME" cmd.Short = `Get a secret.` cmd.Long = `Get a secret. diff --git a/go.mod b/go.mod index bfc4c9b3da0..7c9dd35515d 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.7 // MIT - github.com/databricks/databricks-sdk-go v0.170.0 // Apache-2.0 + github.com/databricks/databricks-sdk-go v0.171.0 // Apache-2.0 github.com/google/jsonschema-go v0.4.3 // MIT github.com/google/uuid v1.6.0 // BSD-3-Clause github.com/gorilla/websocket v1.5.3 // BSD-2-Clause diff --git a/go.sum b/go.sum index 621c08589b4..175390a393a 100644 --- a/go.sum +++ b/go.sum @@ -69,8 +69,8 @@ github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22r github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= github.com/danieljoos/wincred v1.2.3/go.mod h1:6qqX0WNrS4RzPZ1tnroDzq9kY3fu1KwE7MRLQK4X0bs= -github.com/databricks/databricks-sdk-go v0.170.0 h1:ZfnkoS6xPKFm7WO0Ic+WIb3CA434srwcS797xPvPlLo= -github.com/databricks/databricks-sdk-go v0.170.0/go.mod h1:C5LNgGe6hGuRrTwoxFmuup3XtQQEaqtq0e+K8IFDIS4= +github.com/databricks/databricks-sdk-go v0.171.0 h1:5Of+RBTSyIH7Sn5NeAzg/um64eh3UeX92stuJyP4Hxk= +github.com/databricks/databricks-sdk-go v0.171.0/go.mod h1:C5LNgGe6hGuRrTwoxFmuup3XtQQEaqtq0e+K8IFDIS4= github.com/databricks/sdk-go/auth v0.0.0-dev h1:SyRGZvExH5TG9ynZEqNn+m+xTY42VOXr2GOxgNOQexk= github.com/databricks/sdk-go/auth v0.0.0-dev/go.mod h1:Tj09W13MScUaix94cR0He9msAwe40JAQKuS2jP/ofQA= github.com/databricks/sdk-go/core v0.0.1-dev h1:sIA1hCEJyl8/012vOBUIkDjsycNCD8RwfP76SCM0QbQ= diff --git a/python/databricks/bundles/jobs/__init__.py b/python/databricks/bundles/jobs/__init__.py index d215d5ce889..338bc69c013 100644 --- a/python/databricks/bundles/jobs/__init__.py +++ b/python/databricks/bundles/jobs/__init__.py @@ -61,9 +61,15 @@ "Continuous", "ContinuousDict", "ContinuousParam", + "ContinuousTriggerConfiguration", + "ContinuousTriggerConfigurationDict", + "ContinuousTriggerConfigurationParam", "CronSchedule", "CronScheduleDict", "CronScheduleParam", + "CronTriggerConfiguration", + "CronTriggerConfigurationDict", + "CronTriggerConfigurationParam", "DashboardTask", "DashboardTaskDict", "DashboardTaskParam", @@ -299,6 +305,9 @@ "TaskParam", "TaskRetryMode", "TaskRetryModeParam", + "TriggerConfiguration", + "TriggerConfigurationDict", + "TriggerConfigurationParam", "TriggerSettings", "TriggerSettingsDict", "TriggerSettingsParam", @@ -421,11 +430,21 @@ ContinuousDict, ContinuousParam, ) +from databricks.bundles.jobs._models.continuous_trigger_configuration import ( + ContinuousTriggerConfiguration, + ContinuousTriggerConfigurationDict, + ContinuousTriggerConfigurationParam, +) from databricks.bundles.jobs._models.cron_schedule import ( CronSchedule, CronScheduleDict, CronScheduleParam, ) +from databricks.bundles.jobs._models.cron_trigger_configuration import ( + CronTriggerConfiguration, + CronTriggerConfigurationDict, + CronTriggerConfigurationParam, +) from databricks.bundles.jobs._models.dashboard_task import ( DashboardTask, DashboardTaskDict, @@ -793,6 +812,11 @@ TaskRetryMode, TaskRetryModeParam, ) +from databricks.bundles.jobs._models.trigger_configuration import ( + TriggerConfiguration, + TriggerConfigurationDict, + TriggerConfigurationParam, +) from databricks.bundles.jobs._models.trigger_settings import ( TriggerSettings, TriggerSettingsDict, diff --git a/python/databricks/bundles/jobs/_models/ai_runtime_task.py b/python/databricks/bundles/jobs/_models/ai_runtime_task.py index e116071327b..7b7608eb19c 100644 --- a/python/databricks/bundles/jobs/_models/ai_runtime_task.py +++ b/python/databricks/bundles/jobs/_models/ai_runtime_task.py @@ -57,6 +57,26 @@ class AiRuntimeTask: eventual intent but not yet supported. """ + docker_image_url: VariableOrOptional[str] = None + """ + [Beta] Optional Docker image URL for a custom container image. When set, + the task runs on the specified container image instead of the default + Databricks client image. Format: + `{organization}/{repository}:{tag}` + """ + + mlflow_artifact_location: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Optional root location for MLflow artifacts logged by the run. + If this field isn't specified the default artifact location will be in dbfs + i.e. `dbfs:/databricks/mlflow-tracking//...` + If dbfs access is restricted or UC is preferred this can be a custom location in UC: + `dbfs:/Volumes////...` + The location should be unique for each experiment. + """ + mlflow_experiment_directory: VariableOrOptional[str] = None """ [Public Preview] Optional workspace directory under which the MLflow experiment named in @@ -109,6 +129,26 @@ class AiRuntimeTaskDict(TypedDict, total=False): eventual intent but not yet supported. """ + docker_image_url: VariableOrOptional[str] + """ + [Beta] Optional Docker image URL for a custom container image. When set, + the task runs on the specified container image instead of the default + Databricks client image. Format: + `{organization}/{repository}:{tag}` + """ + + mlflow_artifact_location: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Optional root location for MLflow artifacts logged by the run. + If this field isn't specified the default artifact location will be in dbfs + i.e. `dbfs:/databricks/mlflow-tracking//...` + If dbfs access is restricted or UC is preferred this can be a custom location in UC: + `dbfs:/Volumes////...` + The location should be unique for each experiment. + """ + mlflow_experiment_directory: VariableOrOptional[str] """ [Public Preview] Optional workspace directory under which the MLflow experiment named in diff --git a/python/databricks/bundles/jobs/_models/continuous_trigger_configuration.py b/python/databricks/bundles/jobs/_models/continuous_trigger_configuration.py new file mode 100644 index 00000000000..e6de0bfc48e --- /dev/null +++ b/python/databricks/bundles/jobs/_models/continuous_trigger_configuration.py @@ -0,0 +1,47 @@ +from dataclasses import dataclass +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import VariableOrOptional +from databricks.bundles.jobs._models.task_retry_mode import ( + TaskRetryMode, + TaskRetryModeParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class ContinuousTriggerConfiguration: + """ + Continuous trigger. Stripped-down counterpart to `ContinuousSettings`: `pause_status` is owned by the enclosing + `TriggerConfiguration` and intentionally omitted here. + """ + + task_retry_mode: VariableOrOptional[TaskRetryMode] = None + """ + [Beta] Whether the continuous job applies task-level retries. Defaults to NEVER. + """ + + @classmethod + def from_dict(cls, value: "ContinuousTriggerConfigurationDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "ContinuousTriggerConfigurationDict": + return _transform_to_json_value(self) # type:ignore + + +class ContinuousTriggerConfigurationDict(TypedDict, total=False): + """""" + + task_retry_mode: VariableOrOptional[TaskRetryModeParam] + """ + [Beta] Whether the continuous job applies task-level retries. Defaults to NEVER. + """ + + +ContinuousTriggerConfigurationParam = ( + ContinuousTriggerConfigurationDict | ContinuousTriggerConfiguration +) diff --git a/python/databricks/bundles/jobs/_models/cron_trigger_configuration.py b/python/databricks/bundles/jobs/_models/cron_trigger_configuration.py new file mode 100644 index 00000000000..01d7d004183 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/cron_trigger_configuration.py @@ -0,0 +1,55 @@ +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 CronTriggerConfiguration: + """ + Cron schedule trigger. Stripped-down counterpart to `CronSchedule`: `pause_status` and `sql_condition` are owned + by the enclosing `TriggerConfiguration` and intentionally omitted here. + """ + + quartz_cron_expression: VariableOr[str] + """ + [Beta] A Cron expression using Quartz syntax that describes the schedule for this trigger. See + [Cron Trigger](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html) for details. + """ + + timezone_id: VariableOr[str] + """ + [Beta] A Java timezone ID. The schedule is resolved with respect to this timezone. See + [Java TimeZone](https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html) for details. + """ + + @classmethod + def from_dict(cls, value: "CronTriggerConfigurationDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "CronTriggerConfigurationDict": + return _transform_to_json_value(self) # type:ignore + + +class CronTriggerConfigurationDict(TypedDict, total=False): + """""" + + quartz_cron_expression: VariableOr[str] + """ + [Beta] A Cron expression using Quartz syntax that describes the schedule for this trigger. See + [Cron Trigger](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html) for details. + """ + + timezone_id: VariableOr[str] + """ + [Beta] A Java timezone ID. The schedule is resolved with respect to this timezone. See + [Java TimeZone](https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html) for details. + """ + + +CronTriggerConfigurationParam = CronTriggerConfigurationDict | CronTriggerConfiguration diff --git a/python/databricks/bundles/jobs/_models/environment.py b/python/databricks/bundles/jobs/_models/environment.py index 35ae5e747ed..dc2e5132d7f 100644 --- a/python/databricks/bundles/jobs/_models/environment.py +++ b/python/databricks/bundles/jobs/_models/environment.py @@ -48,7 +48,7 @@ class Environment: java_dependencies: VariableOrList[str] = field(default_factory=list) """ - [Public Preview] 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`. """ @classmethod @@ -94,7 +94,7 @@ class EnvironmentDict(TypedDict, total=False): java_dependencies: VariableOrList[str] """ - [Public Preview] 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`. """ diff --git a/python/databricks/bundles/jobs/_models/job.py b/python/databricks/bundles/jobs/_models/job.py index 331f49b9991..23a426decb1 100644 --- a/python/databricks/bundles/jobs/_models/job.py +++ b/python/databricks/bundles/jobs/_models/job.py @@ -17,10 +17,7 @@ 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, @@ -57,6 +54,10 @@ QueueSettingsParam, ) from databricks.bundles.jobs._models.task import Task, TaskParam +from databricks.bundles.jobs._models.trigger_configuration import ( + TriggerConfiguration, + TriggerConfigurationParam, +) from databricks.bundles.jobs._models.trigger_settings import ( TriggerSettings, TriggerSettingsParam, @@ -212,6 +213,13 @@ class Job(Resource): A configuration to trigger a run when certain conditions are met. The default behavior is that the job runs only when triggered by clicking “Run Now” in the Jobs UI or sending an API request to `runNow`. """ + triggers: VariableOrList[TriggerConfiguration] = field(default_factory=list) + """ + [Beta] List of triggers attached to this job. A run starts when any active trigger evaluates to true. Cannot be set in + the same request as the legacy `schedule`, `trigger`, or `continuous` fields. The 10-trigger cap is the design's + hard limit; rollout steps the effective cap 3 -> 5 -> 10 via internal validation during the preview. + """ + usage_policy_id: VariableOrOptional[str] = None """ :meta private: [EXPERIMENTAL] @@ -375,6 +383,13 @@ class JobDict(TypedDict, total=False): A configuration to trigger a run when certain conditions are met. The default behavior is that the job runs only when triggered by clicking “Run Now” in the Jobs UI or sending an API request to `runNow`. """ + triggers: VariableOrList[TriggerConfigurationParam] + """ + [Beta] List of triggers attached to this job. A run starts when any active trigger evaluates to true. Cannot be set in + the same request as the legacy `schedule`, `trigger`, or `continuous` fields. The 10-trigger cap is the design's + hard limit; rollout steps the effective cap 3 -> 5 -> 10 via internal validation during the preview. + """ + usage_policy_id: VariableOrOptional[str] """ :meta private: [EXPERIMENTAL] diff --git a/python/databricks/bundles/jobs/_models/trigger_configuration.py b/python/databricks/bundles/jobs/_models/trigger_configuration.py new file mode 100644 index 00000000000..155080b5e55 --- /dev/null +++ b/python/databricks/bundles/jobs/_models/trigger_configuration.py @@ -0,0 +1,152 @@ +from dataclasses import dataclass +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import VariableOrOptional +from databricks.bundles.jobs._models.continuous_trigger_configuration import ( + ContinuousTriggerConfiguration, + ContinuousTriggerConfigurationParam, +) +from databricks.bundles.jobs._models.cron_trigger_configuration import ( + CronTriggerConfiguration, + CronTriggerConfigurationParam, +) +from databricks.bundles.jobs._models.file_arrival_trigger_configuration import ( + FileArrivalTriggerConfiguration, + FileArrivalTriggerConfigurationParam, +) +from databricks.bundles.jobs._models.model_trigger_configuration import ( + ModelTriggerConfiguration, + ModelTriggerConfigurationParam, +) +from databricks.bundles.jobs._models.pause_status import PauseStatus, PauseStatusParam +from databricks.bundles.jobs._models.periodic_trigger_configuration import ( + PeriodicTriggerConfiguration, + PeriodicTriggerConfigurationParam, +) +from databricks.bundles.jobs._models.sql_condition_configuration import ( + SqlConditionConfiguration, + SqlConditionConfigurationParam, +) +from databricks.bundles.jobs._models.table_update_trigger_configuration import ( + TableUpdateTriggerConfiguration, + TableUpdateTriggerConfigurationParam, +) + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class TriggerConfiguration: + """ + A single trigger attached to a job via `JobSettings.triggers`. Exactly one of the trigger-type fields + (`periodic`, `schedule`, `continuous`, `file_arrival`, `table_update`, `model`) must be set; mutual exclusivity + is enforced in the API handler rather than via `oneof` so that codegen, validation, and JSON serialization + across SDKs and Terraform behave consistently. + """ + + continuous: VariableOrOptional[ContinuousTriggerConfiguration] = None + """ + [Beta] Continuous trigger configuration. + """ + + file_arrival: VariableOrOptional[FileArrivalTriggerConfiguration] = None + """ + [Beta] File arrival trigger configuration. + """ + + model: VariableOrOptional[ModelTriggerConfiguration] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Model trigger configuration. + """ + + pause_status: VariableOrOptional[PauseStatus] = None + """ + [Beta] Whether this trigger is paused. Defaults to UNPAUSED when unset; the server always returns an explicit value on read. + """ + + periodic: VariableOrOptional[PeriodicTriggerConfiguration] = None + """ + [Beta] Trigger type: exactly one must be set; mutual exclusivity is enforced in the API handler + Periodic trigger configuration. + """ + + schedule: VariableOrOptional[CronTriggerConfiguration] = None + """ + [Beta] Cron schedule trigger configuration. + """ + + sql_condition: VariableOrOptional[SqlConditionConfiguration] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Optional SQL condition that gates whether this trigger fires. + """ + + table_update: VariableOrOptional[TableUpdateTriggerConfiguration] = None + """ + [Beta] Table update trigger configuration. + """ + + @classmethod + def from_dict(cls, value: "TriggerConfigurationDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "TriggerConfigurationDict": + return _transform_to_json_value(self) # type:ignore + + +class TriggerConfigurationDict(TypedDict, total=False): + """""" + + continuous: VariableOrOptional[ContinuousTriggerConfigurationParam] + """ + [Beta] Continuous trigger configuration. + """ + + file_arrival: VariableOrOptional[FileArrivalTriggerConfigurationParam] + """ + [Beta] File arrival trigger configuration. + """ + + model: VariableOrOptional[ModelTriggerConfigurationParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Model trigger configuration. + """ + + pause_status: VariableOrOptional[PauseStatusParam] + """ + [Beta] Whether this trigger is paused. Defaults to UNPAUSED when unset; the server always returns an explicit value on read. + """ + + periodic: VariableOrOptional[PeriodicTriggerConfigurationParam] + """ + [Beta] Trigger type: exactly one must be set; mutual exclusivity is enforced in the API handler + Periodic trigger configuration. + """ + + schedule: VariableOrOptional[CronTriggerConfigurationParam] + """ + [Beta] Cron schedule trigger configuration. + """ + + sql_condition: VariableOrOptional[SqlConditionConfigurationParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Optional SQL condition that gates whether this trigger fires. + """ + + table_update: VariableOrOptional[TableUpdateTriggerConfigurationParam] + """ + [Beta] Table update trigger configuration. + """ + + +TriggerConfigurationParam = TriggerConfigurationDict | TriggerConfiguration diff --git a/python/databricks/bundles/pipelines/__init__.py b/python/databricks/bundles/pipelines/__init__.py index 8992142276e..2b74f8c6c6d 100644 --- a/python/databricks/bundles/pipelines/__init__.py +++ b/python/databricks/bundles/pipelines/__init__.py @@ -2,6 +2,12 @@ "Adlsgen2Info", "Adlsgen2InfoDict", "Adlsgen2InfoParam", + "ApiSourceConnectorConfig", + "ApiSourceConnectorConfigDict", + "ApiSourceConnectorConfigParam", + "ApiSourceConnectorOptions", + "ApiSourceConnectorOptionsDict", + "ApiSourceConnectorOptionsParam", "AutoFullRefreshPolicy", "AutoFullRefreshPolicyDict", "AutoFullRefreshPolicyParam", @@ -252,6 +258,16 @@ Adlsgen2InfoDict, Adlsgen2InfoParam, ) +from databricks.bundles.pipelines._models.api_source_connector_config import ( + ApiSourceConnectorConfig, + ApiSourceConnectorConfigDict, + ApiSourceConnectorConfigParam, +) +from databricks.bundles.pipelines._models.api_source_connector_options import ( + ApiSourceConnectorOptions, + ApiSourceConnectorOptionsDict, + ApiSourceConnectorOptionsParam, +) from databricks.bundles.pipelines._models.auto_full_refresh_policy import ( AutoFullRefreshPolicy, AutoFullRefreshPolicyDict, diff --git a/python/databricks/bundles/pipelines/_models/api_source_connector_config.py b/python/databricks/bundles/pipelines/_models/api_source_connector_config.py new file mode 100644 index 00000000000..69c3047f100 --- /dev/null +++ b/python/databricks/bundles/pipelines/_models/api_source_connector_config.py @@ -0,0 +1,46 @@ +from dataclasses import dataclass, field +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import VariableOrDict + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class ApiSourceConnectorConfig: + """ + :meta private: [EXPERIMENTAL] + + Top-level configuration for API Source connectors with arbitrary configuration. + """ + + configs: VariableOrDict[str] = field(default_factory=dict) + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Arbitrary key-value configuration values for the API Source connector. + """ + + @classmethod + def from_dict(cls, value: "ApiSourceConnectorConfigDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "ApiSourceConnectorConfigDict": + return _transform_to_json_value(self) # type:ignore + + +class ApiSourceConnectorConfigDict(TypedDict, total=False): + """""" + + configs: VariableOrDict[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Arbitrary key-value configuration values for the API Source connector. + """ + + +ApiSourceConnectorConfigParam = ApiSourceConnectorConfigDict | ApiSourceConnectorConfig diff --git a/python/databricks/bundles/pipelines/_models/api_source_connector_options.py b/python/databricks/bundles/pipelines/_models/api_source_connector_options.py new file mode 100644 index 00000000000..f44041c7b0a --- /dev/null +++ b/python/databricks/bundles/pipelines/_models/api_source_connector_options.py @@ -0,0 +1,48 @@ +from dataclasses import dataclass, field +from typing import TYPE_CHECKING, TypedDict + +from databricks.bundles.core._transform import _transform +from databricks.bundles.core._transform_to_json import _transform_to_json_value +from databricks.bundles.core._variable import VariableOrDict + +if TYPE_CHECKING: + from typing_extensions import Self + + +@dataclass(kw_only=True) +class ApiSourceConnectorOptions: + """ + :meta private: [EXPERIMENTAL] + + Options for API Source connectors with arbitrary configuration. + """ + + options: VariableOrDict[str] = field(default_factory=dict) + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Arbitrary key-value configuration options for the API Source connector. + """ + + @classmethod + def from_dict(cls, value: "ApiSourceConnectorOptionsDict") -> "Self": + return _transform(cls, value) + + def as_dict(self) -> "ApiSourceConnectorOptionsDict": + return _transform_to_json_value(self) # type:ignore + + +class ApiSourceConnectorOptionsDict(TypedDict, total=False): + """""" + + options: VariableOrDict[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Arbitrary key-value configuration options for the API Source connector. + """ + + +ApiSourceConnectorOptionsParam = ( + ApiSourceConnectorOptionsDict | ApiSourceConnectorOptions +) diff --git a/python/databricks/bundles/pipelines/_models/connector_options.py b/python/databricks/bundles/pipelines/_models/connector_options.py index 0ed8fe28732..f2997f027a9 100644 --- a/python/databricks/bundles/pipelines/_models/connector_options.py +++ b/python/databricks/bundles/pipelines/_models/connector_options.py @@ -4,6 +4,10 @@ from databricks.bundles.core._transform import _transform from databricks.bundles.core._transform_to_json import _transform_to_json_value from databricks.bundles.core._variable import VariableOrOptional +from databricks.bundles.pipelines._models.api_source_connector_options import ( + ApiSourceConnectorOptions, + ApiSourceConnectorOptionsParam, +) from databricks.bundles.pipelines._models.confluence_connector_options import ( ConfluenceConnectorOptions, ConfluenceConnectorOptionsParam, @@ -63,6 +67,13 @@ class ConnectorOptions: Wrapper message for source-specific options to support multiple connector types """ + api_source_connector_options: VariableOrOptional[ApiSourceConnectorOptions] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Connector-specific options for API Source connectors. + """ + confluence_options: VariableOrOptional[ConfluenceConnectorOptions] = None """ [Public Preview] Confluence specific options for ingestion @@ -136,9 +147,7 @@ class ConnectorOptions: zendesk_support_options: VariableOrOptional[ZendeskSupportOptions] = None """ - :meta private: [EXPERIMENTAL] - - [Private Preview] Zendesk Support specific options for ingestion + [Beta] Zendesk Support specific options for ingestion """ @classmethod @@ -152,6 +161,13 @@ def as_dict(self) -> "ConnectorOptionsDict": class ConnectorOptionsDict(TypedDict, total=False): """""" + api_source_connector_options: VariableOrOptional[ApiSourceConnectorOptionsParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Connector-specific options for API Source connectors. + """ + confluence_options: VariableOrOptional[ConfluenceConnectorOptionsParam] """ [Public Preview] Confluence specific options for ingestion @@ -225,9 +241,7 @@ class ConnectorOptionsDict(TypedDict, total=False): zendesk_support_options: VariableOrOptional[ZendeskSupportOptionsParam] """ - :meta private: [EXPERIMENTAL] - - [Private Preview] Zendesk Support specific options for ingestion + [Beta] Zendesk Support specific options for ingestion """ diff --git a/python/databricks/bundles/pipelines/_models/source_config.py b/python/databricks/bundles/pipelines/_models/source_config.py index afd2bae632f..d5fbf3800ae 100644 --- a/python/databricks/bundles/pipelines/_models/source_config.py +++ b/python/databricks/bundles/pipelines/_models/source_config.py @@ -4,6 +4,10 @@ from databricks.bundles.core._transform import _transform from databricks.bundles.core._transform_to_json import _transform_to_json_value from databricks.bundles.core._variable import VariableOrOptional +from databricks.bundles.pipelines._models.api_source_connector_config import ( + ApiSourceConnectorConfig, + ApiSourceConnectorConfigParam, +) from databricks.bundles.pipelines._models.google_ads_config import ( GoogleAdsConfig, GoogleAdsConfigParam, @@ -21,6 +25,13 @@ class SourceConfig: """""" + api_source_connector_config: VariableOrOptional[ApiSourceConnectorConfig] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Connector-specific top-level configuration for API Source connectors. + """ + catalog: VariableOrOptional[SourceCatalogConfig] = None """ [Public Preview] Catalog-level source configuration parameters @@ -44,6 +55,13 @@ def as_dict(self) -> "SourceConfigDict": class SourceConfigDict(TypedDict, total=False): """""" + api_source_connector_config: VariableOrOptional[ApiSourceConnectorConfigParam] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Connector-specific top-level configuration for API Source connectors. + """ + catalog: VariableOrOptional[SourceCatalogConfigParam] """ [Public Preview] Catalog-level source configuration parameters diff --git a/python/databricks/bundles/pipelines/_models/transformer.py b/python/databricks/bundles/pipelines/_models/transformer.py index a913e0e6cee..af403056d30 100644 --- a/python/databricks/bundles/pipelines/_models/transformer.py +++ b/python/databricks/bundles/pipelines/_models/transformer.py @@ -28,11 +28,27 @@ class Transformer: [Beta] Required: the wire format of the data. """ + input_column: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Optional input column to transform. When set, the transformer reads + from this column instead of the default source column. + """ + json_options: VariableOrOptional[JsonTransformerOptions] = None """ [Beta] """ + output_column: VariableOrOptional[str] = None + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Optional output column name. When set, the transformed result is + written to this column instead of replacing the input column. + """ + @classmethod def from_dict(cls, value: "TransformerDict") -> "Self": return _transform(cls, value) @@ -49,10 +65,26 @@ class TransformerDict(TypedDict, total=False): [Beta] Required: the wire format of the data. """ + input_column: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Optional input column to transform. When set, the transformer reads + from this column instead of the default source column. + """ + json_options: VariableOrOptional[JsonTransformerOptionsParam] """ [Beta] """ + output_column: VariableOrOptional[str] + """ + :meta private: [EXPERIMENTAL] + + [Private Preview] Optional output column name. When set, the transformed result is + written to this column instead of replacing the input column. + """ + TransformerParam = TransformerDict | Transformer diff --git a/python/databricks/bundles/pipelines/_models/zendesk_support_options.py b/python/databricks/bundles/pipelines/_models/zendesk_support_options.py index 21339a398eb..b84bb2dc261 100644 --- a/python/databricks/bundles/pipelines/_models/zendesk_support_options.py +++ b/python/databricks/bundles/pipelines/_models/zendesk_support_options.py @@ -12,16 +12,12 @@ @dataclass(kw_only=True) class ZendeskSupportOptions: """ - :meta private: [EXPERIMENTAL] - Zendesk Support specific options for ingestion """ start_date: VariableOrOptional[str] = None """ - :meta private: [EXPERIMENTAL] - - [Private Preview] (Optional) Start date in YYYY-MM-DD format for the initial sync. + [Beta] (Optional) Start date in YYYY-MM-DD format for the initial sync. This determines the earliest date from which to sync historical data. """ @@ -38,9 +34,7 @@ class ZendeskSupportOptionsDict(TypedDict, total=False): start_date: VariableOrOptional[str] """ - :meta private: [EXPERIMENTAL] - - [Private Preview] (Optional) Start date in YYYY-MM-DD format for the initial sync. + [Beta] (Optional) Start date in YYYY-MM-DD format for the initial sync. This determines the earliest date from which to sync historical data. """