databricks-sdk 0.70.0__py3-none-any.whl → 0.72.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.

Files changed (36) hide show
  1. databricks/sdk/__init__.py +25 -25
  2. databricks/sdk/mixins/files.py +51 -15
  3. databricks/sdk/service/agentbricks.py +2 -0
  4. databricks/sdk/service/apps.py +10 -0
  5. databricks/sdk/service/billing.py +13 -3
  6. databricks/sdk/service/catalog.py +149 -46
  7. databricks/sdk/service/cleanrooms.py +11 -3
  8. databricks/sdk/service/compute.py +55 -0
  9. databricks/sdk/service/dashboards.py +11 -0
  10. databricks/sdk/service/database.py +12 -0
  11. databricks/sdk/service/dataquality.py +4 -0
  12. databricks/sdk/service/files.py +7 -72
  13. databricks/sdk/service/iam.py +26 -36
  14. databricks/sdk/service/iamv2.py +6 -0
  15. databricks/sdk/service/jobs.py +22 -122
  16. databricks/sdk/service/marketplace.py +18 -0
  17. databricks/sdk/service/ml.py +321 -17
  18. databricks/sdk/service/oauth2.py +10 -18
  19. databricks/sdk/service/pipelines.py +44 -13
  20. databricks/sdk/service/provisioning.py +9 -0
  21. databricks/sdk/service/qualitymonitorv2.py +2 -0
  22. databricks/sdk/service/serving.py +16 -21
  23. databricks/sdk/service/settings.py +43 -72
  24. databricks/sdk/service/settingsv2.py +2 -0
  25. databricks/sdk/service/sharing.py +23 -31
  26. databricks/sdk/service/sql.py +48 -24
  27. databricks/sdk/service/tags.py +2 -0
  28. databricks/sdk/service/vectorsearch.py +11 -1
  29. databricks/sdk/service/workspace.py +18 -91
  30. databricks/sdk/version.py +1 -1
  31. {databricks_sdk-0.70.0.dist-info → databricks_sdk-0.72.0.dist-info}/METADATA +1 -1
  32. {databricks_sdk-0.70.0.dist-info → databricks_sdk-0.72.0.dist-info}/RECORD +36 -36
  33. {databricks_sdk-0.70.0.dist-info → databricks_sdk-0.72.0.dist-info}/WHEEL +0 -0
  34. {databricks_sdk-0.70.0.dist-info → databricks_sdk-0.72.0.dist-info}/licenses/LICENSE +0 -0
  35. {databricks_sdk-0.70.0.dist-info → databricks_sdk-0.72.0.dist-info}/licenses/NOTICE +0 -0
  36. {databricks_sdk-0.70.0.dist-info → databricks_sdk-0.72.0.dist-info}/top_level.txt +0 -0
@@ -12,7 +12,7 @@ from typing import Any, Callable, Dict, Iterator, List, Optional
12
12
 
13
13
  from databricks.sdk.service import catalog, jobs, settings, sharing
14
14
  from databricks.sdk.service._internal import (Wait, _enum, _from_dict,
15
- _repeated_dict)
15
+ _repeated_dict, _repeated_enum)
16
16
 
17
17
  _LOG = logging.getLogger("databricks.sdk")
18
18
 
@@ -1080,7 +1080,7 @@ class ComplianceSecurityProfile:
1080
1080
  """Serializes the ComplianceSecurityProfile into a dictionary suitable for use as a JSON request body."""
1081
1081
  body = {}
1082
1082
  if self.compliance_standards:
1083
- body["compliance_standards"] = [v.as_dict() for v in self.compliance_standards]
1083
+ body["compliance_standards"] = [v.value for v in self.compliance_standards]
1084
1084
  if self.is_enabled is not None:
1085
1085
  body["is_enabled"] = self.is_enabled
1086
1086
  return body
@@ -1098,7 +1098,7 @@ class ComplianceSecurityProfile:
1098
1098
  def from_dict(cls, d: Dict[str, Any]) -> ComplianceSecurityProfile:
1099
1099
  """Deserializes the ComplianceSecurityProfile from a dictionary."""
1100
1100
  return cls(
1101
- compliance_standards=_repeated_dict(d, "compliance_standards", settings.ComplianceStandard),
1101
+ compliance_standards=_repeated_enum(d, "compliance_standards", settings.ComplianceStandard),
1102
1102
  is_enabled=d.get("is_enabled", None),
1103
1103
  )
1104
1104
 
@@ -1495,6 +1495,7 @@ class CleanRoomAssetsAPI:
1495
1495
 
1496
1496
  :returns: :class:`CleanRoomAsset`
1497
1497
  """
1498
+
1498
1499
  body = asset.as_dict()
1499
1500
  headers = {
1500
1501
  "Accept": "application/json",
@@ -1524,6 +1525,7 @@ class CleanRoomAssetsAPI:
1524
1525
 
1525
1526
  :returns: :class:`CreateCleanRoomAssetReviewResponse`
1526
1527
  """
1528
+
1527
1529
  body = {}
1528
1530
  if notebook_review is not None:
1529
1531
  body["notebook_review"] = notebook_review.as_dict()
@@ -1635,6 +1637,7 @@ class CleanRoomAssetsAPI:
1635
1637
 
1636
1638
  :returns: :class:`CleanRoomAsset`
1637
1639
  """
1640
+
1638
1641
  body = asset.as_dict()
1639
1642
  headers = {
1640
1643
  "Accept": "application/json",
@@ -1666,6 +1669,7 @@ class CleanRoomAutoApprovalRulesAPI:
1666
1669
 
1667
1670
  :returns: :class:`CleanRoomAutoApprovalRule`
1668
1671
  """
1672
+
1669
1673
  body = {}
1670
1674
  if auto_approval_rule is not None:
1671
1675
  body["auto_approval_rule"] = auto_approval_rule.as_dict()
@@ -1760,6 +1764,7 @@ class CleanRoomAutoApprovalRulesAPI:
1760
1764
 
1761
1765
  :returns: :class:`CleanRoomAutoApprovalRule`
1762
1766
  """
1767
+
1763
1768
  body = auto_approval_rule.as_dict()
1764
1769
  headers = {
1765
1770
  "Accept": "application/json",
@@ -1869,6 +1874,7 @@ class CleanRoomsAPI:
1869
1874
  Long-running operation waiter for :class:`CleanRoom`.
1870
1875
  See :method:wait_get_clean_room_active for more details.
1871
1876
  """
1877
+
1872
1878
  body = clean_room.as_dict()
1873
1879
  headers = {
1874
1880
  "Accept": "application/json",
@@ -1894,6 +1900,7 @@ class CleanRoomsAPI:
1894
1900
 
1895
1901
  :returns: :class:`CreateCleanRoomOutputCatalogResponse`
1896
1902
  """
1903
+
1897
1904
  body = output_catalog.as_dict()
1898
1905
  headers = {
1899
1906
  "Accept": "application/json",
@@ -1979,6 +1986,7 @@ class CleanRoomsAPI:
1979
1986
 
1980
1987
  :returns: :class:`CleanRoom`
1981
1988
  """
1989
+
1982
1990
  body = {}
1983
1991
  if clean_room is not None:
1984
1992
  body["clean_room"] = clean_room.as_dict()
@@ -3363,6 +3363,7 @@ class EventDetailsCause(Enum):
3363
3363
 
3364
3364
  AUTORECOVERY = "AUTORECOVERY"
3365
3365
  AUTOSCALE = "AUTOSCALE"
3366
+ AUTOSCALE_V2 = "AUTOSCALE_V2"
3366
3367
  REPLACE_BAD_NODES = "REPLACE_BAD_NODES"
3367
3368
  USER_REQUEST = "USER_REQUEST"
3368
3369
 
@@ -3377,6 +3378,8 @@ class EventType(Enum):
3377
3378
  CLUSTER_MIGRATED = "CLUSTER_MIGRATED"
3378
3379
  CREATING = "CREATING"
3379
3380
  DBFS_DOWN = "DBFS_DOWN"
3381
+ DECOMMISSION_ENDED = "DECOMMISSION_ENDED"
3382
+ DECOMMISSION_STARTED = "DECOMMISSION_STARTED"
3380
3383
  DID_NOT_EXPAND_DISK = "DID_NOT_EXPAND_DISK"
3381
3384
  DRIVER_HEALTHY = "DRIVER_HEALTHY"
3382
3385
  DRIVER_NOT_RESPONDING = "DRIVER_NOT_RESPONDING"
@@ -4823,6 +4826,16 @@ class InstancePoolAwsAttributes:
4823
4826
  availability: Optional[InstancePoolAwsAttributesAvailability] = None
4824
4827
  """Availability type used for the spot nodes."""
4825
4828
 
4829
+ instance_profile_arn: Optional[str] = None
4830
+ """All AWS instances belonging to the instance pool will have this instance profile. If omitted,
4831
+ instances will initially be launched with the workspace's default instance profile. If defined,
4832
+ clusters that use the pool will inherit the instance profile, and must not specify their own
4833
+ instance profile on cluster creation or update. If the pool does not specify an instance
4834
+ profile, clusters using the pool may specify any instance profile. The instance profile must
4835
+ have previously been added to the Databricks environment by an account administrator.
4836
+
4837
+ This feature may only be available to certain customer plans."""
4838
+
4826
4839
  spot_bid_price_percent: Optional[int] = None
4827
4840
  """Calculates the bid price for AWS spot instances, as a percentage of the corresponding instance
4828
4841
  type's on-demand price. For example, if this field is set to 50, and the cluster needs a new
@@ -4845,6 +4858,8 @@ class InstancePoolAwsAttributes:
4845
4858
  body = {}
4846
4859
  if self.availability is not None:
4847
4860
  body["availability"] = self.availability.value
4861
+ if self.instance_profile_arn is not None:
4862
+ body["instance_profile_arn"] = self.instance_profile_arn
4848
4863
  if self.spot_bid_price_percent is not None:
4849
4864
  body["spot_bid_price_percent"] = self.spot_bid_price_percent
4850
4865
  if self.zone_id is not None:
@@ -4856,6 +4871,8 @@ class InstancePoolAwsAttributes:
4856
4871
  body = {}
4857
4872
  if self.availability is not None:
4858
4873
  body["availability"] = self.availability
4874
+ if self.instance_profile_arn is not None:
4875
+ body["instance_profile_arn"] = self.instance_profile_arn
4859
4876
  if self.spot_bid_price_percent is not None:
4860
4877
  body["spot_bid_price_percent"] = self.spot_bid_price_percent
4861
4878
  if self.zone_id is not None:
@@ -4867,6 +4884,7 @@ class InstancePoolAwsAttributes:
4867
4884
  """Deserializes the InstancePoolAwsAttributes from a dictionary."""
4868
4885
  return cls(
4869
4886
  availability=_enum(d, "availability", InstancePoolAwsAttributesAvailability),
4887
+ instance_profile_arn=d.get("instance_profile_arn", None),
4870
4888
  spot_bid_price_percent=d.get("spot_bid_price_percent", None),
4871
4889
  zone_id=d.get("zone_id", None),
4872
4890
  )
@@ -7087,6 +7105,7 @@ class TerminationReasonCode(Enum):
7087
7105
  DATABASE_CONNECTION_FAILURE = "DATABASE_CONNECTION_FAILURE"
7088
7106
  DATA_ACCESS_CONFIG_CHANGED = "DATA_ACCESS_CONFIG_CHANGED"
7089
7107
  DBFS_COMPONENT_UNHEALTHY = "DBFS_COMPONENT_UNHEALTHY"
7108
+ DBR_IMAGE_RESOLUTION_FAILURE = "DBR_IMAGE_RESOLUTION_FAILURE"
7090
7109
  DISASTER_RECOVERY_REPLICATION = "DISASTER_RECOVERY_REPLICATION"
7091
7110
  DNS_RESOLUTION_ERROR = "DNS_RESOLUTION_ERROR"
7092
7111
  DOCKER_CONTAINER_CREATION_EXCEPTION = "DOCKER_CONTAINER_CREATION_EXCEPTION"
@@ -7783,6 +7802,7 @@ class ClusterPoliciesAPI:
7783
7802
 
7784
7803
  :returns: :class:`CreatePolicyResponse`
7785
7804
  """
7805
+
7786
7806
  body = {}
7787
7807
  if definition is not None:
7788
7808
  body["definition"] = definition
@@ -7814,6 +7834,7 @@ class ClusterPoliciesAPI:
7814
7834
 
7815
7835
 
7816
7836
  """
7837
+
7817
7838
  body = {}
7818
7839
  if policy_id is not None:
7819
7840
  body["policy_id"] = policy_id
@@ -7873,6 +7894,7 @@ class ClusterPoliciesAPI:
7873
7894
 
7874
7895
 
7875
7896
  """
7897
+
7876
7898
  body = {}
7877
7899
  if definition is not None:
7878
7900
  body["definition"] = definition
@@ -7991,6 +8013,7 @@ class ClusterPoliciesAPI:
7991
8013
 
7992
8014
  :returns: :class:`ClusterPolicyPermissions`
7993
8015
  """
8016
+
7994
8017
  body = {}
7995
8018
  if access_control_list is not None:
7996
8019
  body["access_control_list"] = [v.as_dict() for v in access_control_list]
@@ -8016,6 +8039,7 @@ class ClusterPoliciesAPI:
8016
8039
 
8017
8040
  :returns: :class:`ClusterPolicyPermissions`
8018
8041
  """
8042
+
8019
8043
  body = {}
8020
8044
  if access_control_list is not None:
8021
8045
  body["access_control_list"] = [v.as_dict() for v in access_control_list]
@@ -8133,6 +8157,7 @@ class ClustersAPI:
8133
8157
 
8134
8158
 
8135
8159
  """
8160
+
8136
8161
  body = {}
8137
8162
  if cluster_id is not None:
8138
8163
  body["cluster_id"] = cluster_id
@@ -8332,6 +8357,7 @@ class ClustersAPI:
8332
8357
  Long-running operation waiter for :class:`ClusterDetails`.
8333
8358
  See :method:wait_get_cluster_running for more details.
8334
8359
  """
8360
+
8335
8361
  body = {}
8336
8362
  if apply_policy_default_values is not None:
8337
8363
  body["apply_policy_default_values"] = apply_policy_default_values
@@ -8497,6 +8523,7 @@ class ClustersAPI:
8497
8523
  Long-running operation waiter for :class:`ClusterDetails`.
8498
8524
  See :method:wait_get_cluster_terminated for more details.
8499
8525
  """
8526
+
8500
8527
  body = {}
8501
8528
  if cluster_id is not None:
8502
8529
  body["cluster_id"] = cluster_id
@@ -8695,6 +8722,7 @@ class ClustersAPI:
8695
8722
  Long-running operation waiter for :class:`ClusterDetails`.
8696
8723
  See :method:wait_get_cluster_running for more details.
8697
8724
  """
8725
+
8698
8726
  body = {}
8699
8727
  if apply_policy_default_values is not None:
8700
8728
  body["apply_policy_default_values"] = apply_policy_default_values
@@ -8891,6 +8919,7 @@ class ClustersAPI:
8891
8919
 
8892
8920
  :returns: Iterator over :class:`ClusterEvent`
8893
8921
  """
8922
+
8894
8923
  body = {}
8895
8924
  if cluster_id is not None:
8896
8925
  body["cluster_id"] = cluster_id
@@ -9064,6 +9093,7 @@ class ClustersAPI:
9064
9093
 
9065
9094
 
9066
9095
  """
9096
+
9067
9097
  body = {}
9068
9098
  if cluster_id is not None:
9069
9099
  body["cluster_id"] = cluster_id
@@ -9082,6 +9112,7 @@ class ClustersAPI:
9082
9112
 
9083
9113
 
9084
9114
  """
9115
+
9085
9116
  body = {}
9086
9117
  if cluster_id is not None:
9087
9118
  body["cluster_id"] = cluster_id
@@ -9117,6 +9148,7 @@ class ClustersAPI:
9117
9148
  Long-running operation waiter for :class:`ClusterDetails`.
9118
9149
  See :method:wait_get_cluster_running for more details.
9119
9150
  """
9151
+
9120
9152
  body = {}
9121
9153
  if autoscale is not None:
9122
9154
  body["autoscale"] = autoscale.as_dict()
@@ -9154,6 +9186,7 @@ class ClustersAPI:
9154
9186
  Long-running operation waiter for :class:`ClusterDetails`.
9155
9187
  See :method:wait_get_cluster_running for more details.
9156
9188
  """
9189
+
9157
9190
  body = {}
9158
9191
  if cluster_id is not None:
9159
9192
  body["cluster_id"] = cluster_id
@@ -9184,6 +9217,7 @@ class ClustersAPI:
9184
9217
 
9185
9218
  :returns: :class:`ClusterPermissions`
9186
9219
  """
9220
+
9187
9221
  body = {}
9188
9222
  if access_control_list is not None:
9189
9223
  body["access_control_list"] = [v.as_dict() for v in access_control_list]
@@ -9223,6 +9257,7 @@ class ClustersAPI:
9223
9257
  Long-running operation waiter for :class:`ClusterDetails`.
9224
9258
  See :method:wait_get_cluster_running for more details.
9225
9259
  """
9260
+
9226
9261
  body = {}
9227
9262
  if cluster_id is not None:
9228
9263
  body["cluster_id"] = cluster_id
@@ -9246,6 +9281,7 @@ class ClustersAPI:
9246
9281
 
9247
9282
 
9248
9283
  """
9284
+
9249
9285
  body = {}
9250
9286
  if cluster_id is not None:
9251
9287
  body["cluster_id"] = cluster_id
@@ -9290,6 +9326,7 @@ class ClustersAPI:
9290
9326
  Long-running operation waiter for :class:`ClusterDetails`.
9291
9327
  See :method:wait_get_cluster_running for more details.
9292
9328
  """
9329
+
9293
9330
  body = {}
9294
9331
  if cluster is not None:
9295
9332
  body["cluster"] = cluster.as_dict()
@@ -9326,6 +9363,7 @@ class ClustersAPI:
9326
9363
 
9327
9364
  :returns: :class:`ClusterPermissions`
9328
9365
  """
9366
+
9329
9367
  body = {}
9330
9368
  if access_control_list is not None:
9331
9369
  body["access_control_list"] = [v.as_dict() for v in access_control_list]
@@ -9469,6 +9507,7 @@ class CommandExecutionAPI:
9469
9507
  Long-running operation waiter for :class:`CommandStatusResponse`.
9470
9508
  See :method:wait_command_status_command_execution_cancelled for more details.
9471
9509
  """
9510
+
9472
9511
  body = {}
9473
9512
  if cluster_id is not None:
9474
9513
  body["clusterId"] = cluster_id
@@ -9561,6 +9600,7 @@ class CommandExecutionAPI:
9561
9600
  Long-running operation waiter for :class:`ContextStatusResponse`.
9562
9601
  See :method:wait_context_status_command_execution_running for more details.
9563
9602
  """
9603
+
9564
9604
  body = {}
9565
9605
  if cluster_id is not None:
9566
9606
  body["clusterId"] = cluster_id
@@ -9592,6 +9632,7 @@ class CommandExecutionAPI:
9592
9632
 
9593
9633
 
9594
9634
  """
9635
+
9595
9636
  body = {}
9596
9637
  if cluster_id is not None:
9597
9638
  body["clusterId"] = cluster_id
@@ -9628,6 +9669,7 @@ class CommandExecutionAPI:
9628
9669
  Long-running operation waiter for :class:`CommandStatusResponse`.
9629
9670
  See :method:wait_command_status_command_execution_finished_or_error for more details.
9630
9671
  """
9672
+
9631
9673
  body = {}
9632
9674
  if cluster_id is not None:
9633
9675
  body["clusterId"] = cluster_id
@@ -9701,6 +9743,7 @@ class GlobalInitScriptsAPI:
9701
9743
 
9702
9744
  :returns: :class:`CreateResponse`
9703
9745
  """
9746
+
9704
9747
  body = {}
9705
9748
  if enabled is not None:
9706
9749
  body["enabled"] = enabled
@@ -9793,6 +9836,7 @@ class GlobalInitScriptsAPI:
9793
9836
 
9794
9837
 
9795
9838
  """
9839
+
9796
9840
  body = {}
9797
9841
  if enabled is not None:
9798
9842
  body["enabled"] = enabled
@@ -9905,6 +9949,7 @@ class InstancePoolsAPI:
9905
9949
 
9906
9950
  :returns: :class:`CreateInstancePoolResponse`
9907
9951
  """
9952
+
9908
9953
  body = {}
9909
9954
  if aws_attributes is not None:
9910
9955
  body["aws_attributes"] = aws_attributes.as_dict()
@@ -9952,6 +9997,7 @@ class InstancePoolsAPI:
9952
9997
 
9953
9998
 
9954
9999
  """
10000
+
9955
10001
  body = {}
9956
10002
  if instance_pool_id is not None:
9957
10003
  body["instance_pool_id"] = instance_pool_id
@@ -10013,6 +10059,7 @@ class InstancePoolsAPI:
10013
10059
 
10014
10060
 
10015
10061
  """
10062
+
10016
10063
  body = {}
10017
10064
  if custom_tags is not None:
10018
10065
  body["custom_tags"] = custom_tags
@@ -10120,6 +10167,7 @@ class InstancePoolsAPI:
10120
10167
 
10121
10168
  :returns: :class:`InstancePoolPermissions`
10122
10169
  """
10170
+
10123
10171
  body = {}
10124
10172
  if access_control_list is not None:
10125
10173
  body["access_control_list"] = [v.as_dict() for v in access_control_list]
@@ -10143,6 +10191,7 @@ class InstancePoolsAPI:
10143
10191
 
10144
10192
  :returns: :class:`InstancePoolPermissions`
10145
10193
  """
10194
+
10146
10195
  body = {}
10147
10196
  if access_control_list is not None:
10148
10197
  body["access_control_list"] = [v.as_dict() for v in access_control_list]
@@ -10205,6 +10254,7 @@ class InstanceProfilesAPI:
10205
10254
 
10206
10255
 
10207
10256
  """
10257
+
10208
10258
  body = {}
10209
10259
  if iam_role_arn is not None:
10210
10260
  body["iam_role_arn"] = iam_role_arn
@@ -10259,6 +10309,7 @@ class InstanceProfilesAPI:
10259
10309
 
10260
10310
 
10261
10311
  """
10312
+
10262
10313
  body = {}
10263
10314
  if iam_role_arn is not None:
10264
10315
  body["iam_role_arn"] = iam_role_arn
@@ -10301,6 +10352,7 @@ class InstanceProfilesAPI:
10301
10352
 
10302
10353
 
10303
10354
  """
10355
+
10304
10356
  body = {}
10305
10357
  if instance_profile_arn is not None:
10306
10358
  body["instance_profile_arn"] = instance_profile_arn
@@ -10381,6 +10433,7 @@ class LibrariesAPI:
10381
10433
 
10382
10434
 
10383
10435
  """
10436
+
10384
10437
  body = {}
10385
10438
  if cluster_id is not None:
10386
10439
  body["cluster_id"] = cluster_id
@@ -10404,6 +10457,7 @@ class LibrariesAPI:
10404
10457
 
10405
10458
 
10406
10459
  """
10460
+
10407
10461
  body = {}
10408
10462
  if cluster_id is not None:
10409
10463
  body["cluster_id"] = cluster_id
@@ -10453,6 +10507,7 @@ class PolicyComplianceForClustersAPI:
10453
10507
 
10454
10508
  :returns: :class:`EnforceClusterComplianceResponse`
10455
10509
  """
10510
+
10456
10511
  body = {}
10457
10512
  if cluster_id is not None:
10458
10513
  body["cluster_id"] = cluster_id
@@ -1189,6 +1189,7 @@ class MessageErrorType(Enum):
1189
1189
  TOO_MANY_TABLES_EXCEPTION = "TOO_MANY_TABLES_EXCEPTION"
1190
1190
  UNEXPECTED_REPLY_PROCESS_EXCEPTION = "UNEXPECTED_REPLY_PROCESS_EXCEPTION"
1191
1191
  UNKNOWN_AI_MODEL = "UNKNOWN_AI_MODEL"
1192
+ UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION = "UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION"
1192
1193
  WAREHOUSE_ACCESS_MISSING_EXCEPTION = "WAREHOUSE_ACCESS_MISSING_EXCEPTION"
1193
1194
  WAREHOUSE_NOT_FOUND_EXCEPTION = "WAREHOUSE_NOT_FOUND_EXCEPTION"
1194
1195
 
@@ -1756,6 +1757,7 @@ class GenieAPI:
1756
1757
  Long-running operation waiter for :class:`GenieMessage`.
1757
1758
  See :method:wait_get_message_genie_completed for more details.
1758
1759
  """
1760
+
1759
1761
  body = {}
1760
1762
  if content is not None:
1761
1763
  body["content"] = content
@@ -2116,6 +2118,7 @@ class GenieAPI:
2116
2118
 
2117
2119
 
2118
2120
  """
2121
+
2119
2122
  body = {}
2120
2123
  if rating is not None:
2121
2124
  body["rating"] = rating.value
@@ -2143,6 +2146,7 @@ class GenieAPI:
2143
2146
  Long-running operation waiter for :class:`GenieMessage`.
2144
2147
  See :method:wait_get_message_genie_completed for more details.
2145
2148
  """
2149
+
2146
2150
  body = {}
2147
2151
  if content is not None:
2148
2152
  body["content"] = content
@@ -2195,6 +2199,7 @@ class LakeviewAPI:
2195
2199
 
2196
2200
  :returns: :class:`Dashboard`
2197
2201
  """
2202
+
2198
2203
  body = dashboard.as_dict()
2199
2204
  headers = {
2200
2205
  "Accept": "application/json",
@@ -2214,6 +2219,7 @@ class LakeviewAPI:
2214
2219
 
2215
2220
  :returns: :class:`Schedule`
2216
2221
  """
2222
+
2217
2223
  body = schedule.as_dict()
2218
2224
  headers = {
2219
2225
  "Accept": "application/json",
@@ -2235,6 +2241,7 @@ class LakeviewAPI:
2235
2241
 
2236
2242
  :returns: :class:`Subscription`
2237
2243
  """
2244
+
2238
2245
  body = subscription.as_dict()
2239
2246
  headers = {
2240
2247
  "Accept": "application/json",
@@ -2530,6 +2537,7 @@ class LakeviewAPI:
2530
2537
 
2531
2538
  :returns: :class:`Dashboard`
2532
2539
  """
2540
+
2533
2541
  body = {}
2534
2542
  if display_name is not None:
2535
2543
  body["display_name"] = display_name
@@ -2562,6 +2570,7 @@ class LakeviewAPI:
2562
2570
 
2563
2571
  :returns: :class:`PublishedDashboard`
2564
2572
  """
2573
+
2565
2574
  body = {}
2566
2575
  if embed_credentials is not None:
2567
2576
  body["embed_credentials"] = embed_credentials
@@ -2614,6 +2623,7 @@ class LakeviewAPI:
2614
2623
 
2615
2624
  :returns: :class:`Dashboard`
2616
2625
  """
2626
+
2617
2627
  body = dashboard.as_dict()
2618
2628
  headers = {
2619
2629
  "Accept": "application/json",
@@ -2635,6 +2645,7 @@ class LakeviewAPI:
2635
2645
 
2636
2646
  :returns: :class:`Schedule`
2637
2647
  """
2648
+
2638
2649
  body = schedule.as_dict()
2639
2650
  headers = {
2640
2651
  "Accept": "application/json",
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  import logging
6
6
  import random
7
7
  import time
8
+ import uuid
8
9
  from dataclasses import dataclass
9
10
  from datetime import timedelta
10
11
  from enum import Enum
@@ -1570,6 +1571,7 @@ class DatabaseAPI:
1570
1571
 
1571
1572
  :returns: :class:`DatabaseCatalog`
1572
1573
  """
1574
+
1573
1575
  body = catalog.as_dict()
1574
1576
  headers = {
1575
1577
  "Accept": "application/json",
@@ -1589,6 +1591,7 @@ class DatabaseAPI:
1589
1591
  Long-running operation waiter for :class:`DatabaseInstance`.
1590
1592
  See :method:wait_get_database_instance_database_available for more details.
1591
1593
  """
1594
+
1592
1595
  body = database_instance.as_dict()
1593
1596
  headers = {
1594
1597
  "Accept": "application/json",
@@ -1622,6 +1625,7 @@ class DatabaseAPI:
1622
1625
 
1623
1626
  :returns: :class:`DatabaseInstanceRole`
1624
1627
  """
1628
+
1625
1629
  body = database_instance_role.as_dict()
1626
1630
  query = {}
1627
1631
  if database_instance_name is not None:
@@ -1644,6 +1648,7 @@ class DatabaseAPI:
1644
1648
 
1645
1649
  :returns: :class:`DatabaseTable`
1646
1650
  """
1651
+
1647
1652
  body = table.as_dict()
1648
1653
  headers = {
1649
1654
  "Accept": "application/json",
@@ -1660,6 +1665,7 @@ class DatabaseAPI:
1660
1665
 
1661
1666
  :returns: :class:`SyncedDatabaseTable`
1662
1667
  """
1668
+
1663
1669
  body = synced_table.as_dict()
1664
1670
  headers = {
1665
1671
  "Accept": "application/json",
@@ -1806,6 +1812,9 @@ class DatabaseAPI:
1806
1812
 
1807
1813
  :returns: :class:`DatabaseCredential`
1808
1814
  """
1815
+
1816
+ if request_id is None or request_id == "":
1817
+ request_id = str(uuid.uuid4())
1809
1818
  body = {}
1810
1819
  if claims is not None:
1811
1820
  body["claims"] = [v.as_dict() for v in claims]
@@ -2049,6 +2058,7 @@ class DatabaseAPI:
2049
2058
 
2050
2059
  :returns: :class:`DatabaseCatalog`
2051
2060
  """
2061
+
2052
2062
  body = database_catalog.as_dict()
2053
2063
  query = {}
2054
2064
  if update_mask is not None:
@@ -2075,6 +2085,7 @@ class DatabaseAPI:
2075
2085
 
2076
2086
  :returns: :class:`DatabaseInstance`
2077
2087
  """
2088
+
2078
2089
  body = database_instance.as_dict()
2079
2090
  query = {}
2080
2091
  if update_mask is not None:
@@ -2101,6 +2112,7 @@ class DatabaseAPI:
2101
2112
 
2102
2113
  :returns: :class:`SyncedDatabaseTable`
2103
2114
  """
2115
+
2104
2116
  body = synced_table.as_dict()
2105
2117
  query = {}
2106
2118
  if update_mask is not None:
@@ -909,6 +909,7 @@ class DataQualityAPI:
909
909
 
910
910
  :returns: :class:`Monitor`
911
911
  """
912
+
912
913
  body = monitor.as_dict()
913
914
  headers = {
914
915
  "Accept": "application/json",
@@ -946,6 +947,7 @@ class DataQualityAPI:
946
947
 
947
948
  :returns: :class:`Refresh`
948
949
  """
950
+
949
951
  body = refresh.as_dict()
950
952
  headers = {
951
953
  "Accept": "application/json",
@@ -1229,6 +1231,7 @@ class DataQualityAPI:
1229
1231
 
1230
1232
  :returns: :class:`Monitor`
1231
1233
  """
1234
+
1232
1235
  body = monitor.as_dict()
1233
1236
  query = {}
1234
1237
  if update_mask is not None:
@@ -1271,6 +1274,7 @@ class DataQualityAPI:
1271
1274
 
1272
1275
  :returns: :class:`Refresh`
1273
1276
  """
1277
+
1274
1278
  body = refresh.as_dict()
1275
1279
  query = {}
1276
1280
  if update_mask is not None: