databricks-sdk 0.49.0__tar.gz → 0.50.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of databricks-sdk might be problematic. Click here for more details.

Files changed (82) hide show
  1. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/CHANGELOG.md +31 -0
  2. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/PKG-INFO +1 -1
  3. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/__init__.py +5 -3
  4. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/billing.py +9 -0
  5. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/catalog.py +22 -0
  6. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/compute.py +20 -1
  7. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/dashboards.py +244 -28
  8. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/jobs.py +539 -75
  9. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/ml.py +408 -72
  10. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/pipelines.py +0 -32
  11. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/serving.py +15 -12
  12. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/settings.py +472 -4
  13. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/sql.py +11 -0
  14. databricks_sdk-0.50.0/databricks/sdk/version.py +1 -0
  15. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks_sdk.egg-info/PKG-INFO +1 -1
  16. databricks_sdk-0.49.0/databricks/sdk/version.py +0 -1
  17. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/CONTRIBUTING.md +0 -0
  18. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/DCO +0 -0
  19. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/LICENSE +0 -0
  20. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/MANIFEST.in +0 -0
  21. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/Makefile +0 -0
  22. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/NOTICE +0 -0
  23. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/README.md +0 -0
  24. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/SECURITY.md +0 -0
  25. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/__init__.py +0 -0
  26. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/_base_client.py +0 -0
  27. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/_property.py +0 -0
  28. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/_widgets/__init__.py +0 -0
  29. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/_widgets/default_widgets_utils.py +0 -0
  30. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/_widgets/ipywidgets_utils.py +0 -0
  31. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/azure.py +0 -0
  32. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/casing.py +0 -0
  33. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/clock.py +0 -0
  34. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/config.py +0 -0
  35. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/core.py +0 -0
  36. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/credentials_provider.py +0 -0
  37. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/data_plane.py +0 -0
  38. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/dbutils.py +0 -0
  39. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/environments.py +0 -0
  40. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/__init__.py +0 -0
  41. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/base.py +0 -0
  42. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/customizer.py +0 -0
  43. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/deserializer.py +0 -0
  44. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/details.py +0 -0
  45. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/mapper.py +0 -0
  46. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/overrides.py +0 -0
  47. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/parser.py +0 -0
  48. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/platform.py +0 -0
  49. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/private_link.py +0 -0
  50. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/errors/sdk.py +0 -0
  51. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/logger/__init__.py +0 -0
  52. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/logger/round_trip_logger.py +0 -0
  53. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/mixins/__init__.py +0 -0
  54. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/mixins/compute.py +0 -0
  55. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/mixins/files.py +0 -0
  56. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/mixins/jobs.py +0 -0
  57. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/mixins/open_ai_client.py +0 -0
  58. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/mixins/workspace.py +0 -0
  59. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/oauth.py +0 -0
  60. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/py.typed +0 -0
  61. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/retries.py +0 -0
  62. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/runtime/__init__.py +0 -0
  63. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/runtime/dbutils_stub.py +0 -0
  64. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/__init__.py +0 -0
  65. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/_internal.py +0 -0
  66. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/apps.py +0 -0
  67. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/cleanrooms.py +0 -0
  68. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/files.py +0 -0
  69. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/iam.py +0 -0
  70. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/marketplace.py +0 -0
  71. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/oauth2.py +0 -0
  72. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/provisioning.py +0 -0
  73. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/sharing.py +0 -0
  74. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/vectorsearch.py +0 -0
  75. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/service/workspace.py +0 -0
  76. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks/sdk/useragent.py +0 -0
  77. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks_sdk.egg-info/SOURCES.txt +0 -0
  78. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks_sdk.egg-info/dependency_links.txt +0 -0
  79. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks_sdk.egg-info/requires.txt +0 -0
  80. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/databricks_sdk.egg-info/top_level.txt +0 -0
  81. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/pyproject.toml +0 -0
  82. {databricks_sdk-0.49.0 → databricks_sdk-0.50.0}/setup.cfg +0 -0
@@ -1,5 +1,36 @@
1
1
  # Version changelog
2
2
 
3
+ ## Release v0.50.0
4
+
5
+ ### API Changes
6
+ * Added [w.enable_export_notebook](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/settings/settings/enable_export_notebook.html) workspace-level service, [w.enable_notebook_table_clipboard](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/settings/settings/enable_notebook_table_clipboard.html) workspace-level service and [w.enable_results_downloading](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/settings/settings/enable_results_downloading.html) workspace-level service.
7
+ * Added `get_credentials_for_trace_data_download()` and `get_credentials_for_trace_data_upload()` methods for [w.experiments](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/ml/experiments.html) workspace-level service.
8
+ * Added `get_download_full_query_result()` method for [w.genie](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/dashboards/genie.html) workspace-level service.
9
+ * Added `get_published_dashboard_token_info()` method for [w.lakeview_embedded](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/dashboards/lakeview_embedded.html) workspace-level service.
10
+ * Added `binding_workspace_ids` field for `databricks.sdk.service.billing.BudgetPolicy`.
11
+ * Added `download_id` field for `databricks.sdk.service.dashboards.GenieGenerateDownloadFullQueryResultResponse`.
12
+ * Added `dashboard_output` field for `databricks.sdk.service.jobs.RunOutput`.
13
+ * Added `dashboard_task` and `power_bi_task` fields for `databricks.sdk.service.jobs.RunTask`.
14
+ * Added `dashboard_task` and `power_bi_task` fields for `databricks.sdk.service.jobs.SubmitTask`.
15
+ * Added `dashboard_task` and `power_bi_task` fields for `databricks.sdk.service.jobs.Task`.
16
+ * Added `include_features` field for `databricks.sdk.service.ml.CreateForecastingExperimentRequest`.
17
+ * Added `models` field for `databricks.sdk.service.ml.LogInputs`.
18
+ * Added `dataset_digest`, `dataset_name` and `model_id` fields for `databricks.sdk.service.ml.LogMetric`.
19
+ * Added `dataset_digest`, `dataset_name`, `model_id` and `run_id` fields for `databricks.sdk.service.ml.Metric`.
20
+ * Added `model_inputs` field for `databricks.sdk.service.ml.RunInputs`.
21
+ * Added `client_application` field for `databricks.sdk.service.sql.QueryInfo`.
22
+ * Added `geography` and `geometry` enum values for `databricks.sdk.service.catalog.ColumnTypeName`.
23
+ * Added `allocation_timeout_no_healthy_and_warmed_up_clusters`, `docker_container_creation_exception`, `docker_image_too_large_for_instance_exception` and `docker_invalid_os_exception` enum values for `databricks.sdk.service.compute.TerminationReasonCode`.
24
+ * Added `standard` enum value for `databricks.sdk.service.jobs.PerformanceTarget`.
25
+ * Added `can_view` enum value for `databricks.sdk.service.sql.WarehousePermissionLevel`.
26
+ * [Breaking] Changed `generate_download_full_query_result()` method for [w.genie](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/dashboards/genie.html) workspace-level service . Method path has changed.
27
+ * [Breaking] Changed waiter for [CommandExecutionAPI.create](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/compute/command_execution.html#databricks.sdk.service.compute.CommandExecutionAPI.create) method.
28
+ * [Breaking] Changed waiter for [CommandExecutionAPI.execute](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/compute/command_execution.html#databricks.sdk.service.compute.CommandExecutionAPI.execute) method.
29
+ * [Breaking] Removed `error`, `status` and `transient_statement_id` fields for `databricks.sdk.service.dashboards.GenieGenerateDownloadFullQueryResultResponse`.
30
+ * [Breaking] Removed `balanced` and `cost_optimized` enum values for `databricks.sdk.service.jobs.PerformanceTarget`.
31
+ * [Breaking] Removed [PipelinesAPI.wait_get_pipeline_running](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/pipelines/pipelines.html#databricks.sdk.service.pipelines.PipelinesAPI.wait_get_pipeline_running) method.
32
+
33
+
3
34
  ## Release v0.49.0
4
35
 
5
36
  ### API Changes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databricks-sdk
3
- Version: 0.49.0
3
+ Version: 0.50.0
4
4
  Summary: Databricks SDK for Python (Beta)
5
5
  Project-URL: Documentation, https://databricks-sdk-py.readthedocs.io
6
6
  Keywords: databricks,sdk
@@ -86,9 +86,11 @@ from databricks.sdk.service.settings import (
86
86
  AibiDashboardEmbeddingApprovedDomainsAPI, AutomaticClusterUpdateAPI,
87
87
  ComplianceSecurityProfileAPI, CredentialsManagerAPI,
88
88
  CspEnablementAccountAPI, DefaultNamespaceAPI, DisableLegacyAccessAPI,
89
- DisableLegacyDbfsAPI, DisableLegacyFeaturesAPI, EnableIpAccessListsAPI,
90
- EnhancedSecurityMonitoringAPI, EsmEnablementAccountAPI, IpAccessListsAPI,
91
- NetworkConnectivityAPI, NotificationDestinationsAPI, PersonalComputeAPI,
89
+ DisableLegacyDbfsAPI, DisableLegacyFeaturesAPI, EnableExportNotebookAPI,
90
+ EnableIpAccessListsAPI, EnableNotebookTableClipboardAPI,
91
+ EnableResultsDownloadingAPI, EnhancedSecurityMonitoringAPI,
92
+ EsmEnablementAccountAPI, IpAccessListsAPI, NetworkConnectivityAPI,
93
+ NotificationDestinationsAPI, PersonalComputeAPI,
92
94
  RestrictWorkspaceAdminsAPI, SettingsAPI, TokenManagementAPI, TokensAPI,
93
95
  WorkspaceConfAPI)
94
96
  from databricks.sdk.service.sharing import (ProvidersAPI,
@@ -364,6 +364,10 @@ class BudgetConfigurationFilterWorkspaceIdClause:
364
364
  class BudgetPolicy:
365
365
  """Contains the BudgetPolicy details."""
366
366
 
367
+ binding_workspace_ids: Optional[List[int]] = None
368
+ """List of workspaces that this budget policy will be exclusively bound to. An empty binding
369
+ implies that this budget policy is open to any workspace in the account."""
370
+
367
371
  custom_tags: Optional[List[compute.CustomPolicyTag]] = None
368
372
  """A list of tags defined by the customer. At most 20 entries are allowed per policy."""
369
373
 
@@ -378,6 +382,8 @@ class BudgetPolicy:
378
382
  def as_dict(self) -> dict:
379
383
  """Serializes the BudgetPolicy into a dictionary suitable for use as a JSON request body."""
380
384
  body = {}
385
+ if self.binding_workspace_ids:
386
+ body["binding_workspace_ids"] = [v for v in self.binding_workspace_ids]
381
387
  if self.custom_tags:
382
388
  body["custom_tags"] = [v.as_dict() for v in self.custom_tags]
383
389
  if self.policy_id is not None:
@@ -389,6 +395,8 @@ class BudgetPolicy:
389
395
  def as_shallow_dict(self) -> dict:
390
396
  """Serializes the BudgetPolicy into a shallow dictionary of its immediate attributes."""
391
397
  body = {}
398
+ if self.binding_workspace_ids:
399
+ body["binding_workspace_ids"] = self.binding_workspace_ids
392
400
  if self.custom_tags:
393
401
  body["custom_tags"] = self.custom_tags
394
402
  if self.policy_id is not None:
@@ -401,6 +409,7 @@ class BudgetPolicy:
401
409
  def from_dict(cls, d: Dict[str, Any]) -> BudgetPolicy:
402
410
  """Deserializes the BudgetPolicy from a dictionary."""
403
411
  return cls(
412
+ binding_workspace_ids=d.get("binding_workspace_ids", None),
404
413
  custom_tags=_repeated_dict(d, "custom_tags", compute.CustomPolicyTag),
405
414
  policy_id=d.get("policy_id", None),
406
415
  policy_name=d.get("policy_name", None),
@@ -1271,6 +1271,8 @@ class ColumnTypeName(Enum):
1271
1271
  DECIMAL = "DECIMAL"
1272
1272
  DOUBLE = "DOUBLE"
1273
1273
  FLOAT = "FLOAT"
1274
+ GEOGRAPHY = "GEOGRAPHY"
1275
+ GEOMETRY = "GEOMETRY"
1274
1276
  INT = "INT"
1275
1277
  INTERVAL = "INTERVAL"
1276
1278
  LONG = "LONG"
@@ -2592,6 +2594,11 @@ class CreateVolumeRequestContent:
2592
2594
  """The name of the volume"""
2593
2595
 
2594
2596
  volume_type: VolumeType
2597
+ """The type of the volume. An external volume is located in the specified external location. A
2598
+ managed volume is located in the default location which is specified by the parent schema, or
2599
+ the parent catalog, or the Metastore. [Learn more]
2600
+
2601
+ [Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external"""
2595
2602
 
2596
2603
  comment: Optional[str] = None
2597
2604
  """The comment attached to the volume"""
@@ -9835,6 +9842,11 @@ class VolumeInfo:
9835
9842
  """The unique identifier of the volume"""
9836
9843
 
9837
9844
  volume_type: Optional[VolumeType] = None
9845
+ """The type of the volume. An external volume is located in the specified external location. A
9846
+ managed volume is located in the default location which is specified by the parent schema, or
9847
+ the parent catalog, or the Metastore. [Learn more]
9848
+
9849
+ [Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external"""
9838
9850
 
9839
9851
  def as_dict(self) -> dict:
9840
9852
  """Serializes the VolumeInfo into a dictionary suitable for use as a JSON request body."""
@@ -9939,6 +9951,11 @@ class VolumeInfo:
9939
9951
 
9940
9952
 
9941
9953
  class VolumeType(Enum):
9954
+ """The type of the volume. An external volume is located in the specified external location. A
9955
+ managed volume is located in the default location which is specified by the parent schema, or
9956
+ the parent catalog, or the Metastore. [Learn more]
9957
+
9958
+ [Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external"""
9942
9959
 
9943
9960
  EXTERNAL = "EXTERNAL"
9944
9961
  MANAGED = "MANAGED"
@@ -14270,6 +14287,11 @@ class VolumesAPI:
14270
14287
  :param name: str
14271
14288
  The name of the volume
14272
14289
  :param volume_type: :class:`VolumeType`
14290
+ The type of the volume. An external volume is located in the specified external location. A managed
14291
+ volume is located in the default location which is specified by the parent schema, or the parent
14292
+ catalog, or the Metastore. [Learn more]
14293
+
14294
+ [Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external
14273
14295
  :param comment: str (optional)
14274
14296
  The comment attached to the volume
14275
14297
  :param storage_location: str (optional)
@@ -4788,6 +4788,10 @@ class Environment:
4788
4788
  Databricks), <vcs project url> E.g. dependencies: ["foo==0.0.1", "-r
4789
4789
  /Workspace/test/requirements.txt"]"""
4790
4790
 
4791
+ jar_dependencies: Optional[List[str]] = None
4792
+ """List of jar dependencies, should be string representing volume paths. For example:
4793
+ `/Volumes/path/to/test.jar`."""
4794
+
4791
4795
  def as_dict(self) -> dict:
4792
4796
  """Serializes the Environment into a dictionary suitable for use as a JSON request body."""
4793
4797
  body = {}
@@ -4795,6 +4799,8 @@ class Environment:
4795
4799
  body["client"] = self.client
4796
4800
  if self.dependencies:
4797
4801
  body["dependencies"] = [v for v in self.dependencies]
4802
+ if self.jar_dependencies:
4803
+ body["jar_dependencies"] = [v for v in self.jar_dependencies]
4798
4804
  return body
4799
4805
 
4800
4806
  def as_shallow_dict(self) -> dict:
@@ -4804,12 +4810,18 @@ class Environment:
4804
4810
  body["client"] = self.client
4805
4811
  if self.dependencies:
4806
4812
  body["dependencies"] = self.dependencies
4813
+ if self.jar_dependencies:
4814
+ body["jar_dependencies"] = self.jar_dependencies
4807
4815
  return body
4808
4816
 
4809
4817
  @classmethod
4810
4818
  def from_dict(cls, d: Dict[str, Any]) -> Environment:
4811
4819
  """Deserializes the Environment from a dictionary."""
4812
- return cls(client=d.get("client", None), dependencies=d.get("dependencies", None))
4820
+ return cls(
4821
+ client=d.get("client", None),
4822
+ dependencies=d.get("dependencies", None),
4823
+ jar_dependencies=d.get("jar_dependencies", None),
4824
+ )
4813
4825
 
4814
4826
 
4815
4827
  @dataclass
@@ -7667,6 +7679,9 @@ class LogSyncStatus:
7667
7679
  return cls(last_attempted=d.get("last_attempted", None), last_exception=d.get("last_exception", None))
7668
7680
 
7669
7681
 
7682
+ MapAny = Dict[str, Any]
7683
+
7684
+
7670
7685
  @dataclass
7671
7686
  class MavenLibrary:
7672
7687
  coordinates: str
@@ -8937,6 +8952,7 @@ class TerminationReasonCode(Enum):
8937
8952
  ACCESS_TOKEN_FAILURE = "ACCESS_TOKEN_FAILURE"
8938
8953
  ALLOCATION_TIMEOUT = "ALLOCATION_TIMEOUT"
8939
8954
  ALLOCATION_TIMEOUT_NODE_DAEMON_NOT_READY = "ALLOCATION_TIMEOUT_NODE_DAEMON_NOT_READY"
8955
+ ALLOCATION_TIMEOUT_NO_HEALTHY_AND_WARMED_UP_CLUSTERS = "ALLOCATION_TIMEOUT_NO_HEALTHY_AND_WARMED_UP_CLUSTERS"
8940
8956
  ALLOCATION_TIMEOUT_NO_HEALTHY_CLUSTERS = "ALLOCATION_TIMEOUT_NO_HEALTHY_CLUSTERS"
8941
8957
  ALLOCATION_TIMEOUT_NO_MATCHED_CLUSTERS = "ALLOCATION_TIMEOUT_NO_MATCHED_CLUSTERS"
8942
8958
  ALLOCATION_TIMEOUT_NO_READY_CLUSTERS = "ALLOCATION_TIMEOUT_NO_READY_CLUSTERS"
@@ -8989,7 +9005,10 @@ class TerminationReasonCode(Enum):
8989
9005
  DATA_ACCESS_CONFIG_CHANGED = "DATA_ACCESS_CONFIG_CHANGED"
8990
9006
  DBFS_COMPONENT_UNHEALTHY = "DBFS_COMPONENT_UNHEALTHY"
8991
9007
  DISASTER_RECOVERY_REPLICATION = "DISASTER_RECOVERY_REPLICATION"
9008
+ DOCKER_CONTAINER_CREATION_EXCEPTION = "DOCKER_CONTAINER_CREATION_EXCEPTION"
8992
9009
  DOCKER_IMAGE_PULL_FAILURE = "DOCKER_IMAGE_PULL_FAILURE"
9010
+ DOCKER_IMAGE_TOO_LARGE_FOR_INSTANCE_EXCEPTION = "DOCKER_IMAGE_TOO_LARGE_FOR_INSTANCE_EXCEPTION"
9011
+ DOCKER_INVALID_OS_EXCEPTION = "DOCKER_INVALID_OS_EXCEPTION"
8993
9012
  DRIVER_EVICTION = "DRIVER_EVICTION"
8994
9013
  DRIVER_LAUNCH_TIMEOUT = "DRIVER_LAUNCH_TIMEOUT"
8995
9014
  DRIVER_NODE_UNREACHABLE = "DRIVER_NODE_UNREACHABLE"
@@ -21,6 +21,87 @@ from databricks.sdk.service import sql
21
21
  # all definitions in this file are in alphabetical order
22
22
 
23
23
 
24
+ @dataclass
25
+ class AuthorizationDetails:
26
+ grant_rules: Optional[List[AuthorizationDetailsGrantRule]] = None
27
+ """Represents downscoped permission rules with specific access rights. This field is specific to
28
+ `workspace_rule_set` constraint."""
29
+
30
+ resource_legacy_acl_path: Optional[str] = None
31
+ """The acl path of the tree store resource resource."""
32
+
33
+ resource_name: Optional[str] = None
34
+ """The resource name to which the authorization rule applies. This field is specific to
35
+ `workspace_rule_set` constraint. Format: `workspaces/{workspace_id}/dashboards/{dashboard_id}`"""
36
+
37
+ type: Optional[str] = None
38
+ """The type of authorization downscoping policy. Ex: `workspace_rule_set` defines access rules for
39
+ a specific workspace resource"""
40
+
41
+ def as_dict(self) -> dict:
42
+ """Serializes the AuthorizationDetails into a dictionary suitable for use as a JSON request body."""
43
+ body = {}
44
+ if self.grant_rules:
45
+ body["grant_rules"] = [v.as_dict() for v in self.grant_rules]
46
+ if self.resource_legacy_acl_path is not None:
47
+ body["resource_legacy_acl_path"] = self.resource_legacy_acl_path
48
+ if self.resource_name is not None:
49
+ body["resource_name"] = self.resource_name
50
+ if self.type is not None:
51
+ body["type"] = self.type
52
+ return body
53
+
54
+ def as_shallow_dict(self) -> dict:
55
+ """Serializes the AuthorizationDetails into a shallow dictionary of its immediate attributes."""
56
+ body = {}
57
+ if self.grant_rules:
58
+ body["grant_rules"] = self.grant_rules
59
+ if self.resource_legacy_acl_path is not None:
60
+ body["resource_legacy_acl_path"] = self.resource_legacy_acl_path
61
+ if self.resource_name is not None:
62
+ body["resource_name"] = self.resource_name
63
+ if self.type is not None:
64
+ body["type"] = self.type
65
+ return body
66
+
67
+ @classmethod
68
+ def from_dict(cls, d: Dict[str, Any]) -> AuthorizationDetails:
69
+ """Deserializes the AuthorizationDetails from a dictionary."""
70
+ return cls(
71
+ grant_rules=_repeated_dict(d, "grant_rules", AuthorizationDetailsGrantRule),
72
+ resource_legacy_acl_path=d.get("resource_legacy_acl_path", None),
73
+ resource_name=d.get("resource_name", None),
74
+ type=d.get("type", None),
75
+ )
76
+
77
+
78
+ @dataclass
79
+ class AuthorizationDetailsGrantRule:
80
+ permission_set: Optional[str] = None
81
+ """Permission sets for dashboard are defined in
82
+ iam-common/rbac-common/permission-sets/definitions/TreeStoreBasePermissionSets Ex:
83
+ `permissionSets/dashboard.runner`"""
84
+
85
+ def as_dict(self) -> dict:
86
+ """Serializes the AuthorizationDetailsGrantRule into a dictionary suitable for use as a JSON request body."""
87
+ body = {}
88
+ if self.permission_set is not None:
89
+ body["permission_set"] = self.permission_set
90
+ return body
91
+
92
+ def as_shallow_dict(self) -> dict:
93
+ """Serializes the AuthorizationDetailsGrantRule into a shallow dictionary of its immediate attributes."""
94
+ body = {}
95
+ if self.permission_set is not None:
96
+ body["permission_set"] = self.permission_set
97
+ return body
98
+
99
+ @classmethod
100
+ def from_dict(cls, d: Dict[str, Any]) -> AuthorizationDetailsGrantRule:
101
+ """Deserializes the AuthorizationDetailsGrantRule from a dictionary."""
102
+ return cls(permission_set=d.get("permission_set", None))
103
+
104
+
24
105
  @dataclass
25
106
  class CancelQueryExecutionResponse:
26
107
  status: Optional[List[CancelQueryExecutionResponseStatus]] = None
@@ -531,45 +612,53 @@ class GenieCreateConversationMessageRequest:
531
612
 
532
613
  @dataclass
533
614
  class GenieGenerateDownloadFullQueryResultResponse:
534
- error: Optional[str] = None
535
- """Error message if Genie failed to download the result"""
536
-
537
- status: Optional[MessageStatus] = None
538
- """Download result status"""
539
-
540
- transient_statement_id: Optional[str] = None
541
- """Transient Statement ID. Use this ID to track the download request in subsequent polling calls"""
615
+ download_id: Optional[str] = None
616
+ """Download ID. Use this ID to track the download request in subsequent polling calls"""
542
617
 
543
618
  def as_dict(self) -> dict:
544
619
  """Serializes the GenieGenerateDownloadFullQueryResultResponse into a dictionary suitable for use as a JSON request body."""
545
620
  body = {}
546
- if self.error is not None:
547
- body["error"] = self.error
548
- if self.status is not None:
549
- body["status"] = self.status.value
550
- if self.transient_statement_id is not None:
551
- body["transient_statement_id"] = self.transient_statement_id
621
+ if self.download_id is not None:
622
+ body["download_id"] = self.download_id
552
623
  return body
553
624
 
554
625
  def as_shallow_dict(self) -> dict:
555
626
  """Serializes the GenieGenerateDownloadFullQueryResultResponse into a shallow dictionary of its immediate attributes."""
556
627
  body = {}
557
- if self.error is not None:
558
- body["error"] = self.error
559
- if self.status is not None:
560
- body["status"] = self.status
561
- if self.transient_statement_id is not None:
562
- body["transient_statement_id"] = self.transient_statement_id
628
+ if self.download_id is not None:
629
+ body["download_id"] = self.download_id
563
630
  return body
564
631
 
565
632
  @classmethod
566
633
  def from_dict(cls, d: Dict[str, Any]) -> GenieGenerateDownloadFullQueryResultResponse:
567
634
  """Deserializes the GenieGenerateDownloadFullQueryResultResponse from a dictionary."""
568
- return cls(
569
- error=d.get("error", None),
570
- status=_enum(d, "status", MessageStatus),
571
- transient_statement_id=d.get("transient_statement_id", None),
572
- )
635
+ return cls(download_id=d.get("download_id", None))
636
+
637
+
638
+ @dataclass
639
+ class GenieGetDownloadFullQueryResultResponse:
640
+ statement_response: Optional[sql.StatementResponse] = None
641
+ """SQL Statement Execution response. See [Get status, manifest, and result first
642
+ chunk](:method:statementexecution/getstatement) for more details."""
643
+
644
+ def as_dict(self) -> dict:
645
+ """Serializes the GenieGetDownloadFullQueryResultResponse into a dictionary suitable for use as a JSON request body."""
646
+ body = {}
647
+ if self.statement_response:
648
+ body["statement_response"] = self.statement_response.as_dict()
649
+ return body
650
+
651
+ def as_shallow_dict(self) -> dict:
652
+ """Serializes the GenieGetDownloadFullQueryResultResponse into a shallow dictionary of its immediate attributes."""
653
+ body = {}
654
+ if self.statement_response:
655
+ body["statement_response"] = self.statement_response
656
+ return body
657
+
658
+ @classmethod
659
+ def from_dict(cls, d: Dict[str, Any]) -> GenieGetDownloadFullQueryResultResponse:
660
+ """Deserializes the GenieGetDownloadFullQueryResultResponse from a dictionary."""
661
+ return cls(statement_response=_from_dict(d, "statement_response", sql.StatementResponse))
573
662
 
574
663
 
575
664
  @dataclass
@@ -972,6 +1061,52 @@ class GetPublishedDashboardEmbeddedResponse:
972
1061
  return cls()
973
1062
 
974
1063
 
1064
+ @dataclass
1065
+ class GetPublishedDashboardTokenInfoResponse:
1066
+ authorization_details: Optional[List[AuthorizationDetails]] = None
1067
+ """Authorization constraints for accessing the published dashboard. Currently includes
1068
+ `workspace_rule_set` and could be enriched with `unity_catalog_privileges` before oAuth token
1069
+ generation."""
1070
+
1071
+ custom_claim: Optional[str] = None
1072
+ """Custom claim generated from external_value and external_viewer_id. Format:
1073
+ `urn:aibi:external_data:<external_value>:<external_viewer_id>:<dashboard_id>`"""
1074
+
1075
+ scope: Optional[str] = None
1076
+ """Scope defining access permissions."""
1077
+
1078
+ def as_dict(self) -> dict:
1079
+ """Serializes the GetPublishedDashboardTokenInfoResponse into a dictionary suitable for use as a JSON request body."""
1080
+ body = {}
1081
+ if self.authorization_details:
1082
+ body["authorization_details"] = [v.as_dict() for v in self.authorization_details]
1083
+ if self.custom_claim is not None:
1084
+ body["custom_claim"] = self.custom_claim
1085
+ if self.scope is not None:
1086
+ body["scope"] = self.scope
1087
+ return body
1088
+
1089
+ def as_shallow_dict(self) -> dict:
1090
+ """Serializes the GetPublishedDashboardTokenInfoResponse into a shallow dictionary of its immediate attributes."""
1091
+ body = {}
1092
+ if self.authorization_details:
1093
+ body["authorization_details"] = self.authorization_details
1094
+ if self.custom_claim is not None:
1095
+ body["custom_claim"] = self.custom_claim
1096
+ if self.scope is not None:
1097
+ body["scope"] = self.scope
1098
+ return body
1099
+
1100
+ @classmethod
1101
+ def from_dict(cls, d: Dict[str, Any]) -> GetPublishedDashboardTokenInfoResponse:
1102
+ """Deserializes the GetPublishedDashboardTokenInfoResponse from a dictionary."""
1103
+ return cls(
1104
+ authorization_details=_repeated_dict(d, "authorization_details", AuthorizationDetails),
1105
+ custom_claim=d.get("custom_claim", None),
1106
+ scope=d.get("scope", None),
1107
+ )
1108
+
1109
+
975
1110
  class LifecycleState(Enum):
976
1111
 
977
1112
  ACTIVE = "ACTIVE"
@@ -2037,8 +2172,12 @@ class GenieAPI:
2037
2172
  ) -> GenieGenerateDownloadFullQueryResultResponse:
2038
2173
  """Generate full query result download.
2039
2174
 
2040
- Initiate full SQL query result download and obtain a transient ID for tracking the download progress.
2041
- This call initiates a new SQL execution to generate the query result.
2175
+ Initiate full SQL query result download and obtain a `download_id` to track the download progress.
2176
+ This call initiates a new SQL execution to generate the query result. The result is stored in an
2177
+ external link can be retrieved using the [Get Download Full Query
2178
+ Result](:method:genie/getdownloadfullqueryresult) API. Warning: Databricks strongly recommends that
2179
+ you protect the URLs that are returned by the `EXTERNAL_LINKS` disposition. See [Execute
2180
+ Statement](:method:statementexecution/executestatement) for more details.
2042
2181
 
2043
2182
  :param space_id: str
2044
2183
  Space ID
@@ -2058,11 +2197,52 @@ class GenieAPI:
2058
2197
 
2059
2198
  res = self._api.do(
2060
2199
  "POST",
2061
- f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/attachments/{attachment_id}/generate-download",
2200
+ f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/attachments/{attachment_id}/downloads",
2062
2201
  headers=headers,
2063
2202
  )
2064
2203
  return GenieGenerateDownloadFullQueryResultResponse.from_dict(res)
2065
2204
 
2205
+ def get_download_full_query_result(
2206
+ self, space_id: str, conversation_id: str, message_id: str, attachment_id: str, download_id: str
2207
+ ) -> GenieGetDownloadFullQueryResultResponse:
2208
+ """Get download full query result.
2209
+
2210
+ After [Generating a Full Query Result Download](:method:genie/getdownloadfullqueryresult) and
2211
+ successfully receiving a `download_id`, use this API to Poll download progress and retrieve the SQL
2212
+ query result external link(s) upon completion. Warning: Databricks strongly recommends that you
2213
+ protect the URLs that are returned by the `EXTERNAL_LINKS` disposition. When you use the
2214
+ `EXTERNAL_LINKS` disposition, a short-lived, presigned URL is generated, which can be used to download
2215
+ the results directly from Amazon S3. As a short-lived access credential is embedded in this presigned
2216
+ URL, you should protect the URL. Because presigned URLs are already generated with embedded temporary
2217
+ access credentials, you must not set an Authorization header in the download requests. See [Execute
2218
+ Statement](:method:statementexecution/executestatement) for more details.
2219
+
2220
+ :param space_id: str
2221
+ Space ID
2222
+ :param conversation_id: str
2223
+ Conversation ID
2224
+ :param message_id: str
2225
+ Message ID
2226
+ :param attachment_id: str
2227
+ Attachment ID
2228
+ :param download_id: str
2229
+ Download ID. This ID is provided by the [Generate Download
2230
+ endpoint](:method:genie/generateDownloadFullQueryResult)
2231
+
2232
+ :returns: :class:`GenieGetDownloadFullQueryResultResponse`
2233
+ """
2234
+
2235
+ headers = {
2236
+ "Accept": "application/json",
2237
+ }
2238
+
2239
+ res = self._api.do(
2240
+ "GET",
2241
+ f"/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/attachments/{attachment_id}/downloads/{download_id}",
2242
+ headers=headers,
2243
+ )
2244
+ return GenieGetDownloadFullQueryResultResponse.from_dict(res)
2245
+
2066
2246
  def get_message(self, space_id: str, conversation_id: str, message_id: str) -> GenieMessage:
2067
2247
  """Get conversation message.
2068
2248
 
@@ -2739,6 +2919,42 @@ class LakeviewEmbeddedAPI:
2739
2919
 
2740
2920
  self._api.do("GET", f"/api/2.0/lakeview/dashboards/{dashboard_id}/published/embedded", headers=headers)
2741
2921
 
2922
+ def get_published_dashboard_token_info(
2923
+ self, dashboard_id: str, *, external_value: Optional[str] = None, external_viewer_id: Optional[str] = None
2924
+ ) -> GetPublishedDashboardTokenInfoResponse:
2925
+ """Read an information of a published dashboard to mint an OAuth token.
2926
+
2927
+ Get a required authorization details and scopes of a published dashboard to mint an OAuth token. The
2928
+ `authorization_details` can be enriched to apply additional restriction.
2929
+
2930
+ Example: Adding the following `authorization_details` object to downscope the viewer permission to
2931
+ specific table ``` { type: "unity_catalog_privileges", privileges: ["SELECT"], object_type: "TABLE",
2932
+ object_full_path: "main.default.testdata" } ```
2933
+
2934
+ :param dashboard_id: str
2935
+ UUID identifying the published dashboard.
2936
+ :param external_value: str (optional)
2937
+ Provided external value to be included in the custom claim.
2938
+ :param external_viewer_id: str (optional)
2939
+ Provided external viewer id to be included in the custom claim.
2940
+
2941
+ :returns: :class:`GetPublishedDashboardTokenInfoResponse`
2942
+ """
2943
+
2944
+ query = {}
2945
+ if external_value is not None:
2946
+ query["external_value"] = external_value
2947
+ if external_viewer_id is not None:
2948
+ query["external_viewer_id"] = external_viewer_id
2949
+ headers = {
2950
+ "Accept": "application/json",
2951
+ }
2952
+
2953
+ res = self._api.do(
2954
+ "GET", f"/api/2.0/lakeview/dashboards/{dashboard_id}/published/tokeninfo", query=query, headers=headers
2955
+ )
2956
+ return GetPublishedDashboardTokenInfoResponse.from_dict(res)
2957
+
2742
2958
 
2743
2959
  class QueryExecutionAPI:
2744
2960
  """Query execution APIs for AI / BI Dashboards"""