databricks-sdk 0.64.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.

@@ -610,9 +610,16 @@ 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
 
620
+ source_configurations: Optional[List[SourceConfig]] = None
621
+ """Top-level source configurations"""
622
+
616
623
  source_type: Optional[IngestionSourceType] = None
617
624
  """The type of the foreign source. The source type will be inferred from the source connection or
618
625
  ingestion gateway. This field is output only and will be ignored if provided."""
@@ -628,8 +635,12 @@ class IngestionPipelineDefinition:
628
635
  body["connection_name"] = self.connection_name
629
636
  if self.ingestion_gateway_id is not None:
630
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
631
640
  if self.objects:
632
641
  body["objects"] = [v.as_dict() for v in self.objects]
642
+ if self.source_configurations:
643
+ body["source_configurations"] = [v.as_dict() for v in self.source_configurations]
633
644
  if self.source_type is not None:
634
645
  body["source_type"] = self.source_type.value
635
646
  if self.table_configuration:
@@ -643,8 +654,12 @@ class IngestionPipelineDefinition:
643
654
  body["connection_name"] = self.connection_name
644
655
  if self.ingestion_gateway_id is not None:
645
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
646
659
  if self.objects:
647
660
  body["objects"] = self.objects
661
+ if self.source_configurations:
662
+ body["source_configurations"] = self.source_configurations
648
663
  if self.source_type is not None:
649
664
  body["source_type"] = self.source_type
650
665
  if self.table_configuration:
@@ -657,7 +672,9 @@ class IngestionPipelineDefinition:
657
672
  return cls(
658
673
  connection_name=d.get("connection_name", None),
659
674
  ingestion_gateway_id=d.get("ingestion_gateway_id", None),
675
+ netsuite_jar_path=d.get("netsuite_jar_path", None),
660
676
  objects=_repeated_dict(d, "objects", IngestionConfig),
677
+ source_configurations=_repeated_dict(d, "source_configurations", SourceConfig),
661
678
  source_type=_enum(d, "source_type", IngestionSourceType),
662
679
  table_configuration=_from_dict(d, "table_configuration", TableSpecificConfig),
663
680
  )
@@ -722,11 +739,97 @@ class IngestionPipelineDefinitionTableSpecificConfigQueryBasedConnectorConfig:
722
739
  )
723
740
 
724
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
+
725
827
  class IngestionSourceType(Enum):
726
828
 
727
829
  BIGQUERY = "BIGQUERY"
728
830
  CONFLUENCE = "CONFLUENCE"
729
831
  DYNAMICS365 = "DYNAMICS365"
832
+ FOREIGN_CATALOG = "FOREIGN_CATALOG"
730
833
  GA4_RAW_DATA = "GA4_RAW_DATA"
731
834
  MANAGED_POSTGRESQL = "MANAGED_POSTGRESQL"
732
835
  META_MARKETING = "META_MARKETING"
@@ -2239,6 +2342,67 @@ class PipelinesEnvironment:
2239
2342
  return cls(dependencies=d.get("dependencies", None))
2240
2343
 
2241
2344
 
2345
+ @dataclass
2346
+ class PostgresCatalogConfig:
2347
+ """PG-specific catalog-level configuration parameters"""
2348
+
2349
+ slot_config: Optional[PostgresSlotConfig] = None
2350
+ """Optional. The Postgres slot configuration to use for logical replication"""
2351
+
2352
+ def as_dict(self) -> dict:
2353
+ """Serializes the PostgresCatalogConfig into a dictionary suitable for use as a JSON request body."""
2354
+ body = {}
2355
+ if self.slot_config:
2356
+ body["slot_config"] = self.slot_config.as_dict()
2357
+ return body
2358
+
2359
+ def as_shallow_dict(self) -> dict:
2360
+ """Serializes the PostgresCatalogConfig into a shallow dictionary of its immediate attributes."""
2361
+ body = {}
2362
+ if self.slot_config:
2363
+ body["slot_config"] = self.slot_config
2364
+ return body
2365
+
2366
+ @classmethod
2367
+ def from_dict(cls, d: Dict[str, Any]) -> PostgresCatalogConfig:
2368
+ """Deserializes the PostgresCatalogConfig from a dictionary."""
2369
+ return cls(slot_config=_from_dict(d, "slot_config", PostgresSlotConfig))
2370
+
2371
+
2372
+ @dataclass
2373
+ class PostgresSlotConfig:
2374
+ """PostgresSlotConfig contains the configuration for a Postgres logical replication slot"""
2375
+
2376
+ publication_name: Optional[str] = None
2377
+ """The name of the publication to use for the Postgres source"""
2378
+
2379
+ slot_name: Optional[str] = None
2380
+ """The name of the logical replication slot to use for the Postgres source"""
2381
+
2382
+ def as_dict(self) -> dict:
2383
+ """Serializes the PostgresSlotConfig into a dictionary suitable for use as a JSON request body."""
2384
+ body = {}
2385
+ if self.publication_name is not None:
2386
+ body["publication_name"] = self.publication_name
2387
+ if self.slot_name is not None:
2388
+ body["slot_name"] = self.slot_name
2389
+ return body
2390
+
2391
+ def as_shallow_dict(self) -> dict:
2392
+ """Serializes the PostgresSlotConfig into a shallow dictionary of its immediate attributes."""
2393
+ body = {}
2394
+ if self.publication_name is not None:
2395
+ body["publication_name"] = self.publication_name
2396
+ if self.slot_name is not None:
2397
+ body["slot_name"] = self.slot_name
2398
+ return body
2399
+
2400
+ @classmethod
2401
+ def from_dict(cls, d: Dict[str, Any]) -> PostgresSlotConfig:
2402
+ """Deserializes the PostgresSlotConfig from a dictionary."""
2403
+ return cls(publication_name=d.get("publication_name", None), slot_name=d.get("slot_name", None))
2404
+
2405
+
2242
2406
  @dataclass
2243
2407
  class ReportSpec:
2244
2408
  source_url: str
@@ -2527,6 +2691,67 @@ class SerializedException:
2527
2691
  )
2528
2692
 
2529
2693
 
2694
+ @dataclass
2695
+ class SourceCatalogConfig:
2696
+ """SourceCatalogConfig contains catalog-level custom configuration parameters for each source"""
2697
+
2698
+ postgres: Optional[PostgresCatalogConfig] = None
2699
+ """Postgres-specific catalog-level configuration parameters"""
2700
+
2701
+ source_catalog: Optional[str] = None
2702
+ """Source catalog name"""
2703
+
2704
+ def as_dict(self) -> dict:
2705
+ """Serializes the SourceCatalogConfig into a dictionary suitable for use as a JSON request body."""
2706
+ body = {}
2707
+ if self.postgres:
2708
+ body["postgres"] = self.postgres.as_dict()
2709
+ if self.source_catalog is not None:
2710
+ body["source_catalog"] = self.source_catalog
2711
+ return body
2712
+
2713
+ def as_shallow_dict(self) -> dict:
2714
+ """Serializes the SourceCatalogConfig into a shallow dictionary of its immediate attributes."""
2715
+ body = {}
2716
+ if self.postgres:
2717
+ body["postgres"] = self.postgres
2718
+ if self.source_catalog is not None:
2719
+ body["source_catalog"] = self.source_catalog
2720
+ return body
2721
+
2722
+ @classmethod
2723
+ def from_dict(cls, d: Dict[str, Any]) -> SourceCatalogConfig:
2724
+ """Deserializes the SourceCatalogConfig from a dictionary."""
2725
+ return cls(
2726
+ postgres=_from_dict(d, "postgres", PostgresCatalogConfig), source_catalog=d.get("source_catalog", None)
2727
+ )
2728
+
2729
+
2730
+ @dataclass
2731
+ class SourceConfig:
2732
+ catalog: Optional[SourceCatalogConfig] = None
2733
+ """Catalog-level source configuration parameters"""
2734
+
2735
+ def as_dict(self) -> dict:
2736
+ """Serializes the SourceConfig into a dictionary suitable for use as a JSON request body."""
2737
+ body = {}
2738
+ if self.catalog:
2739
+ body["catalog"] = self.catalog.as_dict()
2740
+ return body
2741
+
2742
+ def as_shallow_dict(self) -> dict:
2743
+ """Serializes the SourceConfig into a shallow dictionary of its immediate attributes."""
2744
+ body = {}
2745
+ if self.catalog:
2746
+ body["catalog"] = self.catalog
2747
+ return body
2748
+
2749
+ @classmethod
2750
+ def from_dict(cls, d: Dict[str, Any]) -> SourceConfig:
2751
+ """Deserializes the SourceConfig from a dictionary."""
2752
+ return cls(catalog=_from_dict(d, "catalog", SourceCatalogConfig))
2753
+
2754
+
2530
2755
  @dataclass
2531
2756
  class StackFrame:
2532
2757
  declaring_class: Optional[str] = None
@@ -2741,6 +2966,9 @@ class TableSpecificConfig:
2741
2966
  """The column names specifying the logical order of events in the source data. Delta Live Tables
2742
2967
  uses this sequencing to handle change events that arrive out of order."""
2743
2968
 
2969
+ workday_report_parameters: Optional[IngestionPipelineDefinitionWorkdayReportParameters] = None
2970
+ """(Optional) Additional custom parameters for Workday Report"""
2971
+
2744
2972
  def as_dict(self) -> dict:
2745
2973
  """Serializes the TableSpecificConfig into a dictionary suitable for use as a JSON request body."""
2746
2974
  body = {}
@@ -2758,6 +2986,8 @@ class TableSpecificConfig:
2758
2986
  body["scd_type"] = self.scd_type.value
2759
2987
  if self.sequence_by:
2760
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()
2761
2991
  return body
2762
2992
 
2763
2993
  def as_shallow_dict(self) -> dict:
@@ -2777,6 +3007,8 @@ class TableSpecificConfig:
2777
3007
  body["scd_type"] = self.scd_type
2778
3008
  if self.sequence_by:
2779
3009
  body["sequence_by"] = self.sequence_by
3010
+ if self.workday_report_parameters:
3011
+ body["workday_report_parameters"] = self.workday_report_parameters
2780
3012
  return body
2781
3013
 
2782
3014
  @classmethod
@@ -2794,6 +3026,9 @@ class TableSpecificConfig:
2794
3026
  salesforce_include_formula_fields=d.get("salesforce_include_formula_fields", None),
2795
3027
  scd_type=_enum(d, "scd_type", TableSpecificConfigScdType),
2796
3028
  sequence_by=d.get("sequence_by", None),
3029
+ workday_report_parameters=_from_dict(
3030
+ d, "workday_report_parameters", IngestionPipelineDefinitionWorkdayReportParameters
3031
+ ),
2797
3032
  )
2798
3033
 
2799
3034
 
@@ -3587,8 +3587,32 @@ class LlmProxyPartnerPoweredWorkspace:
3587
3587
 
3588
3588
  @dataclass
3589
3589
  class MicrosoftTeamsConfig:
3590
+ app_id: Optional[str] = None
3591
+ """[Input-Only] App ID for Microsoft Teams App."""
3592
+
3593
+ app_id_set: Optional[bool] = None
3594
+ """[Output-Only] Whether App ID is set."""
3595
+
3596
+ auth_secret: Optional[str] = None
3597
+ """[Input-Only] Secret for Microsoft Teams App authentication."""
3598
+
3599
+ auth_secret_set: Optional[bool] = None
3600
+ """[Output-Only] Whether secret is set."""
3601
+
3602
+ channel_url: Optional[str] = None
3603
+ """[Input-Only] Channel URL for Microsoft Teams App."""
3604
+
3605
+ channel_url_set: Optional[bool] = None
3606
+ """[Output-Only] Whether Channel URL is set."""
3607
+
3608
+ tenant_id: Optional[str] = None
3609
+ """[Input-Only] Tenant ID for Microsoft Teams App."""
3610
+
3611
+ tenant_id_set: Optional[bool] = None
3612
+ """[Output-Only] Whether Tenant ID is set."""
3613
+
3590
3614
  url: Optional[str] = None
3591
- """[Input-Only] URL for Microsoft Teams."""
3615
+ """[Input-Only] URL for Microsoft Teams webhook."""
3592
3616
 
3593
3617
  url_set: Optional[bool] = None
3594
3618
  """[Output-Only] Whether URL is set."""
@@ -3596,6 +3620,22 @@ class MicrosoftTeamsConfig:
3596
3620
  def as_dict(self) -> dict:
3597
3621
  """Serializes the MicrosoftTeamsConfig into a dictionary suitable for use as a JSON request body."""
3598
3622
  body = {}
3623
+ if self.app_id is not None:
3624
+ body["app_id"] = self.app_id
3625
+ if self.app_id_set is not None:
3626
+ body["app_id_set"] = self.app_id_set
3627
+ if self.auth_secret is not None:
3628
+ body["auth_secret"] = self.auth_secret
3629
+ if self.auth_secret_set is not None:
3630
+ body["auth_secret_set"] = self.auth_secret_set
3631
+ if self.channel_url is not None:
3632
+ body["channel_url"] = self.channel_url
3633
+ if self.channel_url_set is not None:
3634
+ body["channel_url_set"] = self.channel_url_set
3635
+ if self.tenant_id is not None:
3636
+ body["tenant_id"] = self.tenant_id
3637
+ if self.tenant_id_set is not None:
3638
+ body["tenant_id_set"] = self.tenant_id_set
3599
3639
  if self.url is not None:
3600
3640
  body["url"] = self.url
3601
3641
  if self.url_set is not None:
@@ -3605,6 +3645,22 @@ class MicrosoftTeamsConfig:
3605
3645
  def as_shallow_dict(self) -> dict:
3606
3646
  """Serializes the MicrosoftTeamsConfig into a shallow dictionary of its immediate attributes."""
3607
3647
  body = {}
3648
+ if self.app_id is not None:
3649
+ body["app_id"] = self.app_id
3650
+ if self.app_id_set is not None:
3651
+ body["app_id_set"] = self.app_id_set
3652
+ if self.auth_secret is not None:
3653
+ body["auth_secret"] = self.auth_secret
3654
+ if self.auth_secret_set is not None:
3655
+ body["auth_secret_set"] = self.auth_secret_set
3656
+ if self.channel_url is not None:
3657
+ body["channel_url"] = self.channel_url
3658
+ if self.channel_url_set is not None:
3659
+ body["channel_url_set"] = self.channel_url_set
3660
+ if self.tenant_id is not None:
3661
+ body["tenant_id"] = self.tenant_id
3662
+ if self.tenant_id_set is not None:
3663
+ body["tenant_id_set"] = self.tenant_id_set
3608
3664
  if self.url is not None:
3609
3665
  body["url"] = self.url
3610
3666
  if self.url_set is not None:
@@ -3614,7 +3670,18 @@ class MicrosoftTeamsConfig:
3614
3670
  @classmethod
3615
3671
  def from_dict(cls, d: Dict[str, Any]) -> MicrosoftTeamsConfig:
3616
3672
  """Deserializes the MicrosoftTeamsConfig from a dictionary."""
3617
- return cls(url=d.get("url", None), url_set=d.get("url_set", None))
3673
+ return cls(
3674
+ app_id=d.get("app_id", None),
3675
+ app_id_set=d.get("app_id_set", None),
3676
+ auth_secret=d.get("auth_secret", None),
3677
+ auth_secret_set=d.get("auth_secret_set", None),
3678
+ channel_url=d.get("channel_url", None),
3679
+ channel_url_set=d.get("channel_url_set", None),
3680
+ tenant_id=d.get("tenant_id", None),
3681
+ tenant_id_set=d.get("tenant_id_set", None),
3682
+ url=d.get("url", None),
3683
+ url_set=d.get("url_set", None),
3684
+ )
3618
3685
 
3619
3686
 
3620
3687
  @dataclass
@@ -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 [GET
805
- /api/2.1/settings/{name}](#~1api~1account~1settingsv2~1getpublicaccountsetting) and [PATCH
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 [GET
887
- /api/2.1/settings/{name}](#~1api~1workspace~1settingsv2~1getpublicworkspacesetting) and [PATCH
888
- /api/2.1/settings/{name}](#~1api~1workspace~1settingsv2~patchpublicworkspacesetting) APIs
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 list(self, *, max_results: Optional[int] = None, page_token: Optional[str] = None) -> Iterator[ShareInfo]:
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