databricks-sdk 0.65.0__py3-none-any.whl → 0.66.0__py3-none-any.whl
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.
- databricks/sdk/__init__.py +89 -28
- databricks/sdk/credentials_provider.py +6 -5
- databricks/sdk/mixins/sharing.py +44 -0
- databricks/sdk/service/catalog.py +12 -6
- databricks/sdk/service/compute.py +11 -0
- databricks/sdk/service/dashboards.py +88 -16
- databricks/sdk/service/database.py +24 -38
- databricks/sdk/service/iam.py +2557 -492
- databricks/sdk/service/iamv2.py +643 -0
- databricks/sdk/service/jobs.py +22 -59
- databricks/sdk/service/ml.py +392 -0
- databricks/sdk/service/oauth2.py +3 -3
- databricks/sdk/service/pipelines.py +105 -0
- databricks/sdk/service/settingsv2.py +13 -65
- databricks/sdk/service/sharing.py +13 -1
- databricks/sdk/service/sql.py +15 -3
- databricks/sdk/service/tags.py +25 -6
- databricks/sdk/version.py +1 -1
- {databricks_sdk-0.65.0.dist-info → databricks_sdk-0.66.0.dist-info}/METADATA +1 -1
- {databricks_sdk-0.65.0.dist-info → databricks_sdk-0.66.0.dist-info}/RECORD +24 -22
- {databricks_sdk-0.65.0.dist-info → databricks_sdk-0.66.0.dist-info}/WHEEL +0 -0
- {databricks_sdk-0.65.0.dist-info → databricks_sdk-0.66.0.dist-info}/licenses/LICENSE +0 -0
- {databricks_sdk-0.65.0.dist-info → databricks_sdk-0.66.0.dist-info}/licenses/NOTICE +0 -0
- {databricks_sdk-0.65.0.dist-info → databricks_sdk-0.66.0.dist-info}/top_level.txt +0 -0
|
@@ -610,6 +610,10 @@ class IngestionPipelineDefinition:
|
|
|
610
610
|
"""Immutable. Identifier for the gateway that is used by this ingestion pipeline to communicate
|
|
611
611
|
with the source database. This is used with connectors to databases like SQL Server."""
|
|
612
612
|
|
|
613
|
+
netsuite_jar_path: Optional[str] = None
|
|
614
|
+
"""Netsuite only configuration. When the field is set for a netsuite connector, the jar stored in
|
|
615
|
+
the field will be validated and added to the classpath of pipeline's cluster."""
|
|
616
|
+
|
|
613
617
|
objects: Optional[List[IngestionConfig]] = None
|
|
614
618
|
"""Required. Settings specifying tables to replicate and the destination for the replicated tables."""
|
|
615
619
|
|
|
@@ -631,6 +635,8 @@ class IngestionPipelineDefinition:
|
|
|
631
635
|
body["connection_name"] = self.connection_name
|
|
632
636
|
if self.ingestion_gateway_id is not None:
|
|
633
637
|
body["ingestion_gateway_id"] = self.ingestion_gateway_id
|
|
638
|
+
if self.netsuite_jar_path is not None:
|
|
639
|
+
body["netsuite_jar_path"] = self.netsuite_jar_path
|
|
634
640
|
if self.objects:
|
|
635
641
|
body["objects"] = [v.as_dict() for v in self.objects]
|
|
636
642
|
if self.source_configurations:
|
|
@@ -648,6 +654,8 @@ class IngestionPipelineDefinition:
|
|
|
648
654
|
body["connection_name"] = self.connection_name
|
|
649
655
|
if self.ingestion_gateway_id is not None:
|
|
650
656
|
body["ingestion_gateway_id"] = self.ingestion_gateway_id
|
|
657
|
+
if self.netsuite_jar_path is not None:
|
|
658
|
+
body["netsuite_jar_path"] = self.netsuite_jar_path
|
|
651
659
|
if self.objects:
|
|
652
660
|
body["objects"] = self.objects
|
|
653
661
|
if self.source_configurations:
|
|
@@ -664,6 +672,7 @@ class IngestionPipelineDefinition:
|
|
|
664
672
|
return cls(
|
|
665
673
|
connection_name=d.get("connection_name", None),
|
|
666
674
|
ingestion_gateway_id=d.get("ingestion_gateway_id", None),
|
|
675
|
+
netsuite_jar_path=d.get("netsuite_jar_path", None),
|
|
667
676
|
objects=_repeated_dict(d, "objects", IngestionConfig),
|
|
668
677
|
source_configurations=_repeated_dict(d, "source_configurations", SourceConfig),
|
|
669
678
|
source_type=_enum(d, "source_type", IngestionSourceType),
|
|
@@ -730,11 +739,97 @@ class IngestionPipelineDefinitionTableSpecificConfigQueryBasedConnectorConfig:
|
|
|
730
739
|
)
|
|
731
740
|
|
|
732
741
|
|
|
742
|
+
@dataclass
|
|
743
|
+
class IngestionPipelineDefinitionWorkdayReportParameters:
|
|
744
|
+
incremental: Optional[bool] = None
|
|
745
|
+
"""(Optional) Marks the report as incremental. This field is deprecated and should not be used. Use
|
|
746
|
+
`parameters` instead. The incremental behavior is now controlled by the `parameters` field."""
|
|
747
|
+
|
|
748
|
+
parameters: Optional[Dict[str, str]] = None
|
|
749
|
+
"""Parameters for the Workday report. Each key represents the parameter name (e.g., "start_date",
|
|
750
|
+
"end_date"), and the corresponding value is a SQL-like expression used to compute the parameter
|
|
751
|
+
value at runtime. Example: { "start_date": "{ coalesce(current_offset(), date(\"2025-02-01\"))
|
|
752
|
+
}", "end_date": "{ current_date() - INTERVAL 1 DAY }" }"""
|
|
753
|
+
|
|
754
|
+
report_parameters: Optional[List[IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue]] = None
|
|
755
|
+
"""(Optional) Additional custom parameters for Workday Report This field is deprecated and should
|
|
756
|
+
not be used. Use `parameters` instead."""
|
|
757
|
+
|
|
758
|
+
def as_dict(self) -> dict:
|
|
759
|
+
"""Serializes the IngestionPipelineDefinitionWorkdayReportParameters into a dictionary suitable for use as a JSON request body."""
|
|
760
|
+
body = {}
|
|
761
|
+
if self.incremental is not None:
|
|
762
|
+
body["incremental"] = self.incremental
|
|
763
|
+
if self.parameters:
|
|
764
|
+
body["parameters"] = self.parameters
|
|
765
|
+
if self.report_parameters:
|
|
766
|
+
body["report_parameters"] = [v.as_dict() for v in self.report_parameters]
|
|
767
|
+
return body
|
|
768
|
+
|
|
769
|
+
def as_shallow_dict(self) -> dict:
|
|
770
|
+
"""Serializes the IngestionPipelineDefinitionWorkdayReportParameters into a shallow dictionary of its immediate attributes."""
|
|
771
|
+
body = {}
|
|
772
|
+
if self.incremental is not None:
|
|
773
|
+
body["incremental"] = self.incremental
|
|
774
|
+
if self.parameters:
|
|
775
|
+
body["parameters"] = self.parameters
|
|
776
|
+
if self.report_parameters:
|
|
777
|
+
body["report_parameters"] = self.report_parameters
|
|
778
|
+
return body
|
|
779
|
+
|
|
780
|
+
@classmethod
|
|
781
|
+
def from_dict(cls, d: Dict[str, Any]) -> IngestionPipelineDefinitionWorkdayReportParameters:
|
|
782
|
+
"""Deserializes the IngestionPipelineDefinitionWorkdayReportParameters from a dictionary."""
|
|
783
|
+
return cls(
|
|
784
|
+
incremental=d.get("incremental", None),
|
|
785
|
+
parameters=d.get("parameters", None),
|
|
786
|
+
report_parameters=_repeated_dict(
|
|
787
|
+
d, "report_parameters", IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue
|
|
788
|
+
),
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
@dataclass
|
|
793
|
+
class IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue:
|
|
794
|
+
key: Optional[str] = None
|
|
795
|
+
"""Key for the report parameter, can be a column name or other metadata"""
|
|
796
|
+
|
|
797
|
+
value: Optional[str] = None
|
|
798
|
+
"""Value for the report parameter. Possible values it can take are these sql functions: 1.
|
|
799
|
+
coalesce(current_offset(), date("YYYY-MM-DD")) -> if current_offset() is null, then the passed
|
|
800
|
+
date, else current_offset() 2. current_date() 3. date_sub(current_date(), x) -> subtract x (some
|
|
801
|
+
non-negative integer) days from current date"""
|
|
802
|
+
|
|
803
|
+
def as_dict(self) -> dict:
|
|
804
|
+
"""Serializes the IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue into a dictionary suitable for use as a JSON request body."""
|
|
805
|
+
body = {}
|
|
806
|
+
if self.key is not None:
|
|
807
|
+
body["key"] = self.key
|
|
808
|
+
if self.value is not None:
|
|
809
|
+
body["value"] = self.value
|
|
810
|
+
return body
|
|
811
|
+
|
|
812
|
+
def as_shallow_dict(self) -> dict:
|
|
813
|
+
"""Serializes the IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue into a shallow dictionary of its immediate attributes."""
|
|
814
|
+
body = {}
|
|
815
|
+
if self.key is not None:
|
|
816
|
+
body["key"] = self.key
|
|
817
|
+
if self.value is not None:
|
|
818
|
+
body["value"] = self.value
|
|
819
|
+
return body
|
|
820
|
+
|
|
821
|
+
@classmethod
|
|
822
|
+
def from_dict(cls, d: Dict[str, Any]) -> IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue:
|
|
823
|
+
"""Deserializes the IngestionPipelineDefinitionWorkdayReportParametersQueryKeyValue from a dictionary."""
|
|
824
|
+
return cls(key=d.get("key", None), value=d.get("value", None))
|
|
825
|
+
|
|
826
|
+
|
|
733
827
|
class IngestionSourceType(Enum):
|
|
734
828
|
|
|
735
829
|
BIGQUERY = "BIGQUERY"
|
|
736
830
|
CONFLUENCE = "CONFLUENCE"
|
|
737
831
|
DYNAMICS365 = "DYNAMICS365"
|
|
832
|
+
FOREIGN_CATALOG = "FOREIGN_CATALOG"
|
|
738
833
|
GA4_RAW_DATA = "GA4_RAW_DATA"
|
|
739
834
|
MANAGED_POSTGRESQL = "MANAGED_POSTGRESQL"
|
|
740
835
|
META_MARKETING = "META_MARKETING"
|
|
@@ -2871,6 +2966,9 @@ class TableSpecificConfig:
|
|
|
2871
2966
|
"""The column names specifying the logical order of events in the source data. Delta Live Tables
|
|
2872
2967
|
uses this sequencing to handle change events that arrive out of order."""
|
|
2873
2968
|
|
|
2969
|
+
workday_report_parameters: Optional[IngestionPipelineDefinitionWorkdayReportParameters] = None
|
|
2970
|
+
"""(Optional) Additional custom parameters for Workday Report"""
|
|
2971
|
+
|
|
2874
2972
|
def as_dict(self) -> dict:
|
|
2875
2973
|
"""Serializes the TableSpecificConfig into a dictionary suitable for use as a JSON request body."""
|
|
2876
2974
|
body = {}
|
|
@@ -2888,6 +2986,8 @@ class TableSpecificConfig:
|
|
|
2888
2986
|
body["scd_type"] = self.scd_type.value
|
|
2889
2987
|
if self.sequence_by:
|
|
2890
2988
|
body["sequence_by"] = [v for v in self.sequence_by]
|
|
2989
|
+
if self.workday_report_parameters:
|
|
2990
|
+
body["workday_report_parameters"] = self.workday_report_parameters.as_dict()
|
|
2891
2991
|
return body
|
|
2892
2992
|
|
|
2893
2993
|
def as_shallow_dict(self) -> dict:
|
|
@@ -2907,6 +3007,8 @@ class TableSpecificConfig:
|
|
|
2907
3007
|
body["scd_type"] = self.scd_type
|
|
2908
3008
|
if self.sequence_by:
|
|
2909
3009
|
body["sequence_by"] = self.sequence_by
|
|
3010
|
+
if self.workday_report_parameters:
|
|
3011
|
+
body["workday_report_parameters"] = self.workday_report_parameters
|
|
2910
3012
|
return body
|
|
2911
3013
|
|
|
2912
3014
|
@classmethod
|
|
@@ -2924,6 +3026,9 @@ class TableSpecificConfig:
|
|
|
2924
3026
|
salesforce_include_formula_fields=d.get("salesforce_include_formula_fields", None),
|
|
2925
3027
|
scd_type=_enum(d, "scd_type", TableSpecificConfigScdType),
|
|
2926
3028
|
sequence_by=d.get("sequence_by", None),
|
|
3029
|
+
workday_report_parameters=_from_dict(
|
|
3030
|
+
d, "workday_report_parameters", IngestionPipelineDefinitionWorkdayReportParameters
|
|
3031
|
+
),
|
|
2927
3032
|
)
|
|
2928
3033
|
|
|
2929
3034
|
|
|
@@ -322,44 +322,6 @@ class ClusterAutoRestartMessageMaintenanceWindowWindowStartTime:
|
|
|
322
322
|
return cls(hours=d.get("hours", None), minutes=d.get("minutes", None))
|
|
323
323
|
|
|
324
324
|
|
|
325
|
-
@dataclass
|
|
326
|
-
class DefaultDataSecurityModeMessage:
|
|
327
|
-
"""Changes the behaviour of Jobs service when creating job clusters.
|
|
328
|
-
|
|
329
|
-
Before this setting is introduced, all workspaces with metastore attached had behaviour matching
|
|
330
|
-
SINGLE_USER setting.
|
|
331
|
-
|
|
332
|
-
See: - go/defaultdatasecuritymode - go/defaultdatasecuritymode/setting - go/datasecuritymode"""
|
|
333
|
-
|
|
334
|
-
status: DefaultDataSecurityModeMessageStatus
|
|
335
|
-
|
|
336
|
-
def as_dict(self) -> dict:
|
|
337
|
-
"""Serializes the DefaultDataSecurityModeMessage into a dictionary suitable for use as a JSON request body."""
|
|
338
|
-
body = {}
|
|
339
|
-
if self.status is not None:
|
|
340
|
-
body["status"] = self.status.value
|
|
341
|
-
return body
|
|
342
|
-
|
|
343
|
-
def as_shallow_dict(self) -> dict:
|
|
344
|
-
"""Serializes the DefaultDataSecurityModeMessage into a shallow dictionary of its immediate attributes."""
|
|
345
|
-
body = {}
|
|
346
|
-
if self.status is not None:
|
|
347
|
-
body["status"] = self.status
|
|
348
|
-
return body
|
|
349
|
-
|
|
350
|
-
@classmethod
|
|
351
|
-
def from_dict(cls, d: Dict[str, Any]) -> DefaultDataSecurityModeMessage:
|
|
352
|
-
"""Deserializes the DefaultDataSecurityModeMessage from a dictionary."""
|
|
353
|
-
return cls(status=_enum(d, "status", DefaultDataSecurityModeMessageStatus))
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
class DefaultDataSecurityModeMessageStatus(Enum):
|
|
357
|
-
|
|
358
|
-
NOT_SET = "NOT_SET"
|
|
359
|
-
SINGLE_USER = "SINGLE_USER"
|
|
360
|
-
USER_ISOLATION = "USER_ISOLATION"
|
|
361
|
-
|
|
362
|
-
|
|
363
325
|
@dataclass
|
|
364
326
|
class IntegerMessage:
|
|
365
327
|
value: Optional[int] = None
|
|
@@ -528,12 +490,9 @@ class Setting:
|
|
|
528
490
|
aibi_dashboard_embedding_approved_domains: Optional[AibiDashboardEmbeddingApprovedDomains] = None
|
|
529
491
|
|
|
530
492
|
automatic_cluster_update_workspace: Optional[ClusterAutoRestartMessage] = None
|
|
531
|
-
"""todo: Mark these Public after onboarded to DSL"""
|
|
532
493
|
|
|
533
494
|
boolean_val: Optional[BooleanMessage] = None
|
|
534
495
|
|
|
535
|
-
default_data_security_mode: Optional[DefaultDataSecurityModeMessage] = None
|
|
536
|
-
|
|
537
496
|
effective_aibi_dashboard_embedding_access_policy: Optional[AibiDashboardEmbeddingAccessPolicy] = None
|
|
538
497
|
|
|
539
498
|
effective_aibi_dashboard_embedding_approved_domains: Optional[AibiDashboardEmbeddingApprovedDomains] = None
|
|
@@ -542,8 +501,6 @@ class Setting:
|
|
|
542
501
|
|
|
543
502
|
effective_boolean_val: Optional[BooleanMessage] = None
|
|
544
503
|
|
|
545
|
-
effective_default_data_security_mode: Optional[DefaultDataSecurityModeMessage] = None
|
|
546
|
-
|
|
547
504
|
effective_integer_val: Optional[IntegerMessage] = None
|
|
548
505
|
|
|
549
506
|
effective_personal_compute: Optional[PersonalComputeMessage] = None
|
|
@@ -574,8 +531,6 @@ class Setting:
|
|
|
574
531
|
body["automatic_cluster_update_workspace"] = self.automatic_cluster_update_workspace.as_dict()
|
|
575
532
|
if self.boolean_val:
|
|
576
533
|
body["boolean_val"] = self.boolean_val.as_dict()
|
|
577
|
-
if self.default_data_security_mode:
|
|
578
|
-
body["default_data_security_mode"] = self.default_data_security_mode.as_dict()
|
|
579
534
|
if self.effective_aibi_dashboard_embedding_access_policy:
|
|
580
535
|
body["effective_aibi_dashboard_embedding_access_policy"] = (
|
|
581
536
|
self.effective_aibi_dashboard_embedding_access_policy.as_dict()
|
|
@@ -590,8 +545,6 @@ class Setting:
|
|
|
590
545
|
)
|
|
591
546
|
if self.effective_boolean_val:
|
|
592
547
|
body["effective_boolean_val"] = self.effective_boolean_val.as_dict()
|
|
593
|
-
if self.effective_default_data_security_mode:
|
|
594
|
-
body["effective_default_data_security_mode"] = self.effective_default_data_security_mode.as_dict()
|
|
595
548
|
if self.effective_integer_val:
|
|
596
549
|
body["effective_integer_val"] = self.effective_integer_val.as_dict()
|
|
597
550
|
if self.effective_personal_compute:
|
|
@@ -623,8 +576,6 @@ class Setting:
|
|
|
623
576
|
body["automatic_cluster_update_workspace"] = self.automatic_cluster_update_workspace
|
|
624
577
|
if self.boolean_val:
|
|
625
578
|
body["boolean_val"] = self.boolean_val
|
|
626
|
-
if self.default_data_security_mode:
|
|
627
|
-
body["default_data_security_mode"] = self.default_data_security_mode
|
|
628
579
|
if self.effective_aibi_dashboard_embedding_access_policy:
|
|
629
580
|
body["effective_aibi_dashboard_embedding_access_policy"] = (
|
|
630
581
|
self.effective_aibi_dashboard_embedding_access_policy
|
|
@@ -637,8 +588,6 @@ class Setting:
|
|
|
637
588
|
body["effective_automatic_cluster_update_workspace"] = self.effective_automatic_cluster_update_workspace
|
|
638
589
|
if self.effective_boolean_val:
|
|
639
590
|
body["effective_boolean_val"] = self.effective_boolean_val
|
|
640
|
-
if self.effective_default_data_security_mode:
|
|
641
|
-
body["effective_default_data_security_mode"] = self.effective_default_data_security_mode
|
|
642
591
|
if self.effective_integer_val:
|
|
643
592
|
body["effective_integer_val"] = self.effective_integer_val
|
|
644
593
|
if self.effective_personal_compute:
|
|
@@ -673,7 +622,6 @@ class Setting:
|
|
|
673
622
|
d, "automatic_cluster_update_workspace", ClusterAutoRestartMessage
|
|
674
623
|
),
|
|
675
624
|
boolean_val=_from_dict(d, "boolean_val", BooleanMessage),
|
|
676
|
-
default_data_security_mode=_from_dict(d, "default_data_security_mode", DefaultDataSecurityModeMessage),
|
|
677
625
|
effective_aibi_dashboard_embedding_access_policy=_from_dict(
|
|
678
626
|
d, "effective_aibi_dashboard_embedding_access_policy", AibiDashboardEmbeddingAccessPolicy
|
|
679
627
|
),
|
|
@@ -684,9 +632,6 @@ class Setting:
|
|
|
684
632
|
d, "effective_automatic_cluster_update_workspace", ClusterAutoRestartMessage
|
|
685
633
|
),
|
|
686
634
|
effective_boolean_val=_from_dict(d, "effective_boolean_val", BooleanMessage),
|
|
687
|
-
effective_default_data_security_mode=_from_dict(
|
|
688
|
-
d, "effective_default_data_security_mode", DefaultDataSecurityModeMessage
|
|
689
|
-
),
|
|
690
635
|
effective_integer_val=_from_dict(d, "effective_integer_val", IntegerMessage),
|
|
691
636
|
effective_personal_compute=_from_dict(d, "effective_personal_compute", PersonalComputeMessage),
|
|
692
637
|
effective_restrict_workspace_admins=_from_dict(
|
|
@@ -784,7 +729,8 @@ class AccountSettingsV2API:
|
|
|
784
729
|
self._api = api_client
|
|
785
730
|
|
|
786
731
|
def get_public_account_setting(self, name: str) -> Setting:
|
|
787
|
-
"""Get a setting value at account level
|
|
732
|
+
"""Get a setting value at account level. See :method:settingsv2/listaccountsettingsmetadata for list of
|
|
733
|
+
setting available via public APIs at account level.
|
|
788
734
|
|
|
789
735
|
:param name: str
|
|
790
736
|
|
|
@@ -801,9 +747,8 @@ class AccountSettingsV2API:
|
|
|
801
747
|
def list_account_settings_metadata(
|
|
802
748
|
self, *, page_size: Optional[int] = None, page_token: Optional[str] = None
|
|
803
749
|
) -> Iterator[SettingsMetadata]:
|
|
804
|
-
"""List valid setting keys and metadata. These settings are available to referenced via
|
|
805
|
-
/
|
|
806
|
-
/api/2.1/settings/{name}](#~1api~1account~1settingsv2~patchpublicaccountsetting) APIs
|
|
750
|
+
"""List valid setting keys and metadata. These settings are available to be referenced via GET
|
|
751
|
+
:method:settingsv2/getpublicaccountsetting and PATCH :method:settingsv2/patchpublicaccountsetting APIs
|
|
807
752
|
|
|
808
753
|
:param page_size: int (optional)
|
|
809
754
|
The maximum number of settings to return. The service may return fewer than this value. If
|
|
@@ -840,7 +785,8 @@ class AccountSettingsV2API:
|
|
|
840
785
|
query["page_token"] = json["next_page_token"]
|
|
841
786
|
|
|
842
787
|
def patch_public_account_setting(self, name: str, setting: Setting) -> Setting:
|
|
843
|
-
"""Patch a setting value at account level
|
|
788
|
+
"""Patch a setting value at account level. See :method:settingsv2/listaccountsettingsmetadata for list of
|
|
789
|
+
setting available via public APIs at account level.
|
|
844
790
|
|
|
845
791
|
:param name: str
|
|
846
792
|
:param setting: :class:`Setting`
|
|
@@ -866,7 +812,8 @@ class WorkspaceSettingsV2API:
|
|
|
866
812
|
self._api = api_client
|
|
867
813
|
|
|
868
814
|
def get_public_workspace_setting(self, name: str) -> Setting:
|
|
869
|
-
"""Get a setting value at workspace level
|
|
815
|
+
"""Get a setting value at workspace level. See :method:settingsv2/listworkspacesettingsmetadata for list
|
|
816
|
+
of setting available via public APIs.
|
|
870
817
|
|
|
871
818
|
:param name: str
|
|
872
819
|
|
|
@@ -883,9 +830,9 @@ class WorkspaceSettingsV2API:
|
|
|
883
830
|
def list_workspace_settings_metadata(
|
|
884
831
|
self, *, page_size: Optional[int] = None, page_token: Optional[str] = None
|
|
885
832
|
) -> Iterator[SettingsMetadata]:
|
|
886
|
-
"""List valid setting keys and metadata. These settings are available to referenced via
|
|
887
|
-
/
|
|
888
|
-
|
|
833
|
+
"""List valid setting keys and metadata. These settings are available to be referenced via GET
|
|
834
|
+
:method:settingsv2/getpublicworkspacesetting and PATCH :method:settingsv2/patchpublicworkspacesetting
|
|
835
|
+
APIs
|
|
889
836
|
|
|
890
837
|
:param page_size: int (optional)
|
|
891
838
|
The maximum number of settings to return. The service may return fewer than this value. If
|
|
@@ -920,7 +867,8 @@ class WorkspaceSettingsV2API:
|
|
|
920
867
|
query["page_token"] = json["next_page_token"]
|
|
921
868
|
|
|
922
869
|
def patch_public_workspace_setting(self, name: str, setting: Setting) -> Setting:
|
|
923
|
-
"""Patch a setting value at workspace level
|
|
870
|
+
"""Patch a setting value at workspace level. See :method:settingsv2/listworkspacesettingsmetadata for
|
|
871
|
+
list of setting available via public APIs at workspace level.
|
|
924
872
|
|
|
925
873
|
:param name: str
|
|
926
874
|
:param setting: :class:`Setting`
|
|
@@ -2307,6 +2307,9 @@ class Table:
|
|
|
2307
2307
|
class TableInternalAttributes:
|
|
2308
2308
|
"""Internal information for D2D sharing that should not be disclosed to external users."""
|
|
2309
2309
|
|
|
2310
|
+
auxiliary_managed_location: Optional[str] = None
|
|
2311
|
+
"""Managed Delta Metadata location for foreign iceberg tables."""
|
|
2312
|
+
|
|
2310
2313
|
parent_storage_location: Optional[str] = None
|
|
2311
2314
|
"""Will be populated in the reconciliation response for VIEW and FOREIGN_TABLE, with the value of
|
|
2312
2315
|
the parent UC entity's storage_location, following the same logic as getManagedEntityPath in
|
|
@@ -2327,6 +2330,8 @@ class TableInternalAttributes:
|
|
|
2327
2330
|
def as_dict(self) -> dict:
|
|
2328
2331
|
"""Serializes the TableInternalAttributes into a dictionary suitable for use as a JSON request body."""
|
|
2329
2332
|
body = {}
|
|
2333
|
+
if self.auxiliary_managed_location is not None:
|
|
2334
|
+
body["auxiliary_managed_location"] = self.auxiliary_managed_location
|
|
2330
2335
|
if self.parent_storage_location is not None:
|
|
2331
2336
|
body["parent_storage_location"] = self.parent_storage_location
|
|
2332
2337
|
if self.storage_location is not None:
|
|
@@ -2340,6 +2345,8 @@ class TableInternalAttributes:
|
|
|
2340
2345
|
def as_shallow_dict(self) -> dict:
|
|
2341
2346
|
"""Serializes the TableInternalAttributes into a shallow dictionary of its immediate attributes."""
|
|
2342
2347
|
body = {}
|
|
2348
|
+
if self.auxiliary_managed_location is not None:
|
|
2349
|
+
body["auxiliary_managed_location"] = self.auxiliary_managed_location
|
|
2343
2350
|
if self.parent_storage_location is not None:
|
|
2344
2351
|
body["parent_storage_location"] = self.parent_storage_location
|
|
2345
2352
|
if self.storage_location is not None:
|
|
@@ -2354,6 +2361,7 @@ class TableInternalAttributes:
|
|
|
2354
2361
|
def from_dict(cls, d: Dict[str, Any]) -> TableInternalAttributes:
|
|
2355
2362
|
"""Deserializes the TableInternalAttributes from a dictionary."""
|
|
2356
2363
|
return cls(
|
|
2364
|
+
auxiliary_managed_location=d.get("auxiliary_managed_location", None),
|
|
2357
2365
|
parent_storage_location=d.get("parent_storage_location", None),
|
|
2358
2366
|
storage_location=d.get("storage_location", None),
|
|
2359
2367
|
type=_enum(d, "type", TableInternalAttributesSharedTableType),
|
|
@@ -2366,8 +2374,10 @@ class TableInternalAttributesSharedTableType(Enum):
|
|
|
2366
2374
|
DELTA_ICEBERG_TABLE = "DELTA_ICEBERG_TABLE"
|
|
2367
2375
|
DIRECTORY_BASED_TABLE = "DIRECTORY_BASED_TABLE"
|
|
2368
2376
|
FILE_BASED_TABLE = "FILE_BASED_TABLE"
|
|
2377
|
+
FOREIGN_ICEBERG_TABLE = "FOREIGN_ICEBERG_TABLE"
|
|
2369
2378
|
FOREIGN_TABLE = "FOREIGN_TABLE"
|
|
2370
2379
|
MATERIALIZED_VIEW = "MATERIALIZED_VIEW"
|
|
2380
|
+
METRIC_VIEW = "METRIC_VIEW"
|
|
2371
2381
|
STREAMING_TABLE = "STREAMING_TABLE"
|
|
2372
2382
|
VIEW = "VIEW"
|
|
2373
2383
|
|
|
@@ -3363,7 +3373,9 @@ class SharesAPI:
|
|
|
3363
3373
|
res = self._api.do("GET", f"/api/2.1/unity-catalog/shares/{name}", query=query, headers=headers)
|
|
3364
3374
|
return ShareInfo.from_dict(res)
|
|
3365
3375
|
|
|
3366
|
-
def
|
|
3376
|
+
def list_shares(
|
|
3377
|
+
self, *, max_results: Optional[int] = None, page_token: Optional[str] = None
|
|
3378
|
+
) -> Iterator[ShareInfo]:
|
|
3367
3379
|
"""Gets an array of data object shares from the metastore. The caller must be a metastore admin or the
|
|
3368
3380
|
owner of the share. There is no guarantee of a specific ordering of the elements in the array.
|
|
3369
3381
|
|
databricks/sdk/service/sql.py
CHANGED
|
@@ -792,7 +792,8 @@ class AlertV2Evaluation:
|
|
|
792
792
|
"""Operator used for comparison in alert evaluation."""
|
|
793
793
|
|
|
794
794
|
empty_result_state: Optional[AlertEvaluationState] = None
|
|
795
|
-
"""Alert state if result is empty.
|
|
795
|
+
"""Alert state if result is empty. Please avoid setting this field to be `UNKNOWN` because
|
|
796
|
+
`UNKNOWN` state is planned to be deprecated."""
|
|
796
797
|
|
|
797
798
|
last_evaluated_at: Optional[str] = None
|
|
798
799
|
"""Timestamp of the last evaluation."""
|
|
@@ -3914,13 +3915,18 @@ class ListAlertsResponseAlert:
|
|
|
3914
3915
|
|
|
3915
3916
|
@dataclass
|
|
3916
3917
|
class ListAlertsV2Response:
|
|
3918
|
+
alerts: Optional[List[AlertV2]] = None
|
|
3919
|
+
|
|
3917
3920
|
next_page_token: Optional[str] = None
|
|
3918
3921
|
|
|
3919
3922
|
results: Optional[List[AlertV2]] = None
|
|
3923
|
+
"""Deprecated. Use `alerts` instead."""
|
|
3920
3924
|
|
|
3921
3925
|
def as_dict(self) -> dict:
|
|
3922
3926
|
"""Serializes the ListAlertsV2Response into a dictionary suitable for use as a JSON request body."""
|
|
3923
3927
|
body = {}
|
|
3928
|
+
if self.alerts:
|
|
3929
|
+
body["alerts"] = [v.as_dict() for v in self.alerts]
|
|
3924
3930
|
if self.next_page_token is not None:
|
|
3925
3931
|
body["next_page_token"] = self.next_page_token
|
|
3926
3932
|
if self.results:
|
|
@@ -3930,6 +3936,8 @@ class ListAlertsV2Response:
|
|
|
3930
3936
|
def as_shallow_dict(self) -> dict:
|
|
3931
3937
|
"""Serializes the ListAlertsV2Response into a shallow dictionary of its immediate attributes."""
|
|
3932
3938
|
body = {}
|
|
3939
|
+
if self.alerts:
|
|
3940
|
+
body["alerts"] = self.alerts
|
|
3933
3941
|
if self.next_page_token is not None:
|
|
3934
3942
|
body["next_page_token"] = self.next_page_token
|
|
3935
3943
|
if self.results:
|
|
@@ -3939,7 +3947,11 @@ class ListAlertsV2Response:
|
|
|
3939
3947
|
@classmethod
|
|
3940
3948
|
def from_dict(cls, d: Dict[str, Any]) -> ListAlertsV2Response:
|
|
3941
3949
|
"""Deserializes the ListAlertsV2Response from a dictionary."""
|
|
3942
|
-
return cls(
|
|
3950
|
+
return cls(
|
|
3951
|
+
alerts=_repeated_dict(d, "alerts", AlertV2),
|
|
3952
|
+
next_page_token=d.get("next_page_token", None),
|
|
3953
|
+
results=_repeated_dict(d, "results", AlertV2),
|
|
3954
|
+
)
|
|
3943
3955
|
|
|
3944
3956
|
|
|
3945
3957
|
class ListOrder(Enum):
|
|
@@ -9534,7 +9546,7 @@ class WarehousesAPI:
|
|
|
9534
9546
|
return GetWorkspaceWarehouseConfigResponse.from_dict(res)
|
|
9535
9547
|
|
|
9536
9548
|
def list(self, *, run_as_user_id: Optional[int] = None) -> Iterator[EndpointInfo]:
|
|
9537
|
-
"""Lists all SQL warehouses that a user has
|
|
9549
|
+
"""Lists all SQL warehouses that a user has access to.
|
|
9538
9550
|
|
|
9539
9551
|
:param run_as_user_id: int (optional)
|
|
9540
9552
|
Service Principal which will be used to fetch the list of warehouses. If not specified, the user
|
databricks/sdk/service/tags.py
CHANGED
|
@@ -50,21 +50,31 @@ class ListTagPoliciesResponse:
|
|
|
50
50
|
class TagPolicy:
|
|
51
51
|
tag_key: str
|
|
52
52
|
|
|
53
|
+
create_time: Optional[str] = None
|
|
54
|
+
"""Timestamp when the tag policy was created"""
|
|
55
|
+
|
|
53
56
|
description: Optional[str] = None
|
|
54
57
|
|
|
55
58
|
id: Optional[str] = None
|
|
56
59
|
|
|
60
|
+
update_time: Optional[str] = None
|
|
61
|
+
"""Timestamp when the tag policy was last updated"""
|
|
62
|
+
|
|
57
63
|
values: Optional[List[Value]] = None
|
|
58
64
|
|
|
59
65
|
def as_dict(self) -> dict:
|
|
60
66
|
"""Serializes the TagPolicy into a dictionary suitable for use as a JSON request body."""
|
|
61
67
|
body = {}
|
|
68
|
+
if self.create_time is not None:
|
|
69
|
+
body["create_time"] = self.create_time
|
|
62
70
|
if self.description is not None:
|
|
63
71
|
body["description"] = self.description
|
|
64
72
|
if self.id is not None:
|
|
65
73
|
body["id"] = self.id
|
|
66
74
|
if self.tag_key is not None:
|
|
67
75
|
body["tag_key"] = self.tag_key
|
|
76
|
+
if self.update_time is not None:
|
|
77
|
+
body["update_time"] = self.update_time
|
|
68
78
|
if self.values:
|
|
69
79
|
body["values"] = [v.as_dict() for v in self.values]
|
|
70
80
|
return body
|
|
@@ -72,12 +82,16 @@ class TagPolicy:
|
|
|
72
82
|
def as_shallow_dict(self) -> dict:
|
|
73
83
|
"""Serializes the TagPolicy into a shallow dictionary of its immediate attributes."""
|
|
74
84
|
body = {}
|
|
85
|
+
if self.create_time is not None:
|
|
86
|
+
body["create_time"] = self.create_time
|
|
75
87
|
if self.description is not None:
|
|
76
88
|
body["description"] = self.description
|
|
77
89
|
if self.id is not None:
|
|
78
90
|
body["id"] = self.id
|
|
79
91
|
if self.tag_key is not None:
|
|
80
92
|
body["tag_key"] = self.tag_key
|
|
93
|
+
if self.update_time is not None:
|
|
94
|
+
body["update_time"] = self.update_time
|
|
81
95
|
if self.values:
|
|
82
96
|
body["values"] = self.values
|
|
83
97
|
return body
|
|
@@ -86,9 +100,11 @@ class TagPolicy:
|
|
|
86
100
|
def from_dict(cls, d: Dict[str, Any]) -> TagPolicy:
|
|
87
101
|
"""Deserializes the TagPolicy from a dictionary."""
|
|
88
102
|
return cls(
|
|
103
|
+
create_time=d.get("create_time", None),
|
|
89
104
|
description=d.get("description", None),
|
|
90
105
|
id=d.get("id", None),
|
|
91
106
|
tag_key=d.get("tag_key", None),
|
|
107
|
+
update_time=d.get("update_time", None),
|
|
92
108
|
values=_repeated_dict(d, "values", Value),
|
|
93
109
|
)
|
|
94
110
|
|
|
@@ -118,13 +134,16 @@ class Value:
|
|
|
118
134
|
|
|
119
135
|
|
|
120
136
|
class TagPoliciesAPI:
|
|
121
|
-
"""The Tag Policy API allows you to manage
|
|
137
|
+
"""The Tag Policy API allows you to manage policies for governed tags in Databricks. Permissions for tag
|
|
138
|
+
policies can be managed using the [Account Access Control Proxy API].
|
|
139
|
+
|
|
140
|
+
[Account Access Control Proxy API]: https://docs.databricks.com/api/workspace/accountaccesscontrolproxy"""
|
|
122
141
|
|
|
123
142
|
def __init__(self, api_client):
|
|
124
143
|
self._api = api_client
|
|
125
144
|
|
|
126
145
|
def create_tag_policy(self, tag_policy: TagPolicy) -> TagPolicy:
|
|
127
|
-
"""Creates a new tag policy.
|
|
146
|
+
"""Creates a new tag policy, making the associated tag key governed.
|
|
128
147
|
|
|
129
148
|
:param tag_policy: :class:`TagPolicy`
|
|
130
149
|
|
|
@@ -140,7 +159,7 @@ class TagPoliciesAPI:
|
|
|
140
159
|
return TagPolicy.from_dict(res)
|
|
141
160
|
|
|
142
161
|
def delete_tag_policy(self, tag_key: str):
|
|
143
|
-
"""Deletes a tag policy by its key.
|
|
162
|
+
"""Deletes a tag policy by its associated governed tag's key, leaving that tag key ungoverned.
|
|
144
163
|
|
|
145
164
|
:param tag_key: str
|
|
146
165
|
|
|
@@ -154,7 +173,7 @@ class TagPoliciesAPI:
|
|
|
154
173
|
self._api.do("DELETE", f"/api/2.1/tag-policies/{tag_key}", headers=headers)
|
|
155
174
|
|
|
156
175
|
def get_tag_policy(self, tag_key: str) -> TagPolicy:
|
|
157
|
-
"""Gets a single tag policy by its key.
|
|
176
|
+
"""Gets a single tag policy by its associated governed tag's key.
|
|
158
177
|
|
|
159
178
|
:param tag_key: str
|
|
160
179
|
|
|
@@ -171,7 +190,7 @@ class TagPoliciesAPI:
|
|
|
171
190
|
def list_tag_policies(
|
|
172
191
|
self, *, page_size: Optional[int] = None, page_token: Optional[str] = None
|
|
173
192
|
) -> Iterator[TagPolicy]:
|
|
174
|
-
"""Lists
|
|
193
|
+
"""Lists the tag policies for all governed tags in the account.
|
|
175
194
|
|
|
176
195
|
:param page_size: int (optional)
|
|
177
196
|
The maximum number of results to return in this request. Fewer results may be returned than
|
|
@@ -202,7 +221,7 @@ class TagPoliciesAPI:
|
|
|
202
221
|
query["page_token"] = json["next_page_token"]
|
|
203
222
|
|
|
204
223
|
def update_tag_policy(self, tag_key: str, tag_policy: TagPolicy, update_mask: str) -> TagPolicy:
|
|
205
|
-
"""Updates an existing tag policy.
|
|
224
|
+
"""Updates an existing tag policy for a single governed tag.
|
|
206
225
|
|
|
207
226
|
:param tag_key: str
|
|
208
227
|
:param tag_policy: :class:`TagPolicy`
|
databricks/sdk/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.
|
|
1
|
+
__version__ = "0.66.0"
|