databricks-sdk 0.38.0__py3-none-any.whl → 0.39.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 (29) hide show
  1. databricks/sdk/__init__.py +21 -0
  2. databricks/sdk/mixins/open_ai_client.py +2 -2
  3. databricks/sdk/service/apps.py +175 -0
  4. databricks/sdk/service/billing.py +247 -0
  5. databricks/sdk/service/catalog.py +1794 -61
  6. databricks/sdk/service/cleanrooms.py +1281 -0
  7. databricks/sdk/service/compute.py +1486 -8
  8. databricks/sdk/service/dashboards.py +326 -1
  9. databricks/sdk/service/files.py +162 -2
  10. databricks/sdk/service/iam.py +351 -0
  11. databricks/sdk/service/jobs.py +1264 -8
  12. databricks/sdk/service/marketplace.py +688 -0
  13. databricks/sdk/service/ml.py +1038 -2
  14. databricks/sdk/service/oauth2.py +175 -0
  15. databricks/sdk/service/pipelines.py +520 -0
  16. databricks/sdk/service/provisioning.py +387 -0
  17. databricks/sdk/service/serving.py +615 -0
  18. databricks/sdk/service/settings.py +1186 -1
  19. databricks/sdk/service/sharing.py +326 -2
  20. databricks/sdk/service/sql.py +1186 -2
  21. databricks/sdk/service/vectorsearch.py +290 -0
  22. databricks/sdk/service/workspace.py +451 -0
  23. databricks/sdk/version.py +1 -1
  24. {databricks_sdk-0.38.0.dist-info → databricks_sdk-0.39.0.dist-info}/METADATA +26 -26
  25. {databricks_sdk-0.38.0.dist-info → databricks_sdk-0.39.0.dist-info}/RECORD +29 -28
  26. {databricks_sdk-0.38.0.dist-info → databricks_sdk-0.39.0.dist-info}/WHEEL +1 -1
  27. {databricks_sdk-0.38.0.dist-info → databricks_sdk-0.39.0.dist-info}/LICENSE +0 -0
  28. {databricks_sdk-0.38.0.dist-info → databricks_sdk-0.39.0.dist-info}/NOTICE +0 -0
  29. {databricks_sdk-0.38.0.dist-info → databricks_sdk-0.39.0.dist-info}/top_level.txt +0 -0
@@ -28,6 +28,12 @@ class AccountsCreateMetastore:
28
28
  if self.metastore_info: body['metastore_info'] = self.metastore_info.as_dict()
29
29
  return body
30
30
 
31
+ def as_shallow_dict(self) -> dict:
32
+ """Serializes the AccountsCreateMetastore into a shallow dictionary of its immediate attributes."""
33
+ body = {}
34
+ if self.metastore_info: body['metastore_info'] = self.metastore_info
35
+ return body
36
+
31
37
  @classmethod
32
38
  def from_dict(cls, d: Dict[str, any]) -> AccountsCreateMetastore:
33
39
  """Deserializes the AccountsCreateMetastore from a dictionary."""
@@ -52,6 +58,14 @@ class AccountsCreateMetastoreAssignment:
52
58
  if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
53
59
  return body
54
60
 
61
+ def as_shallow_dict(self) -> dict:
62
+ """Serializes the AccountsCreateMetastoreAssignment into a shallow dictionary of its immediate attributes."""
63
+ body = {}
64
+ if self.metastore_assignment: body['metastore_assignment'] = self.metastore_assignment
65
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
66
+ if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
67
+ return body
68
+
55
69
  @classmethod
56
70
  def from_dict(cls, d: Dict[str, any]) -> AccountsCreateMetastoreAssignment:
57
71
  """Deserializes the AccountsCreateMetastoreAssignment from a dictionary."""
@@ -74,6 +88,13 @@ class AccountsCreateStorageCredential:
74
88
  if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
75
89
  return body
76
90
 
91
+ def as_shallow_dict(self) -> dict:
92
+ """Serializes the AccountsCreateStorageCredential into a shallow dictionary of its immediate attributes."""
93
+ body = {}
94
+ if self.credential_info: body['credential_info'] = self.credential_info
95
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
96
+ return body
97
+
77
98
  @classmethod
78
99
  def from_dict(cls, d: Dict[str, any]) -> AccountsCreateStorageCredential:
79
100
  """Deserializes the AccountsCreateStorageCredential from a dictionary."""
@@ -91,6 +112,12 @@ class AccountsMetastoreAssignment:
91
112
  if self.metastore_assignment: body['metastore_assignment'] = self.metastore_assignment.as_dict()
92
113
  return body
93
114
 
115
+ def as_shallow_dict(self) -> dict:
116
+ """Serializes the AccountsMetastoreAssignment into a shallow dictionary of its immediate attributes."""
117
+ body = {}
118
+ if self.metastore_assignment: body['metastore_assignment'] = self.metastore_assignment
119
+ return body
120
+
94
121
  @classmethod
95
122
  def from_dict(cls, d: Dict[str, any]) -> AccountsMetastoreAssignment:
96
123
  """Deserializes the AccountsMetastoreAssignment from a dictionary."""
@@ -107,6 +134,12 @@ class AccountsMetastoreInfo:
107
134
  if self.metastore_info: body['metastore_info'] = self.metastore_info.as_dict()
108
135
  return body
109
136
 
137
+ def as_shallow_dict(self) -> dict:
138
+ """Serializes the AccountsMetastoreInfo into a shallow dictionary of its immediate attributes."""
139
+ body = {}
140
+ if self.metastore_info: body['metastore_info'] = self.metastore_info
141
+ return body
142
+
110
143
  @classmethod
111
144
  def from_dict(cls, d: Dict[str, any]) -> AccountsMetastoreInfo:
112
145
  """Deserializes the AccountsMetastoreInfo from a dictionary."""
@@ -123,6 +156,12 @@ class AccountsStorageCredentialInfo:
123
156
  if self.credential_info: body['credential_info'] = self.credential_info.as_dict()
124
157
  return body
125
158
 
159
+ def as_shallow_dict(self) -> dict:
160
+ """Serializes the AccountsStorageCredentialInfo into a shallow dictionary of its immediate attributes."""
161
+ body = {}
162
+ if self.credential_info: body['credential_info'] = self.credential_info
163
+ return body
164
+
126
165
  @classmethod
127
166
  def from_dict(cls, d: Dict[str, any]) -> AccountsStorageCredentialInfo:
128
167
  """Deserializes the AccountsStorageCredentialInfo from a dictionary."""
@@ -143,6 +182,13 @@ class AccountsUpdateMetastore:
143
182
  if self.metastore_info: body['metastore_info'] = self.metastore_info.as_dict()
144
183
  return body
145
184
 
185
+ def as_shallow_dict(self) -> dict:
186
+ """Serializes the AccountsUpdateMetastore into a shallow dictionary of its immediate attributes."""
187
+ body = {}
188
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
189
+ if self.metastore_info: body['metastore_info'] = self.metastore_info
190
+ return body
191
+
146
192
  @classmethod
147
193
  def from_dict(cls, d: Dict[str, any]) -> AccountsUpdateMetastore:
148
194
  """Deserializes the AccountsUpdateMetastore from a dictionary."""
@@ -168,6 +214,14 @@ class AccountsUpdateMetastoreAssignment:
168
214
  if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
169
215
  return body
170
216
 
217
+ def as_shallow_dict(self) -> dict:
218
+ """Serializes the AccountsUpdateMetastoreAssignment into a shallow dictionary of its immediate attributes."""
219
+ body = {}
220
+ if self.metastore_assignment: body['metastore_assignment'] = self.metastore_assignment
221
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
222
+ if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
223
+ return body
224
+
171
225
  @classmethod
172
226
  def from_dict(cls, d: Dict[str, any]) -> AccountsUpdateMetastoreAssignment:
173
227
  """Deserializes the AccountsUpdateMetastoreAssignment from a dictionary."""
@@ -195,6 +249,15 @@ class AccountsUpdateStorageCredential:
195
249
  body['storage_credential_name'] = self.storage_credential_name
196
250
  return body
197
251
 
252
+ def as_shallow_dict(self) -> dict:
253
+ """Serializes the AccountsUpdateStorageCredential into a shallow dictionary of its immediate attributes."""
254
+ body = {}
255
+ if self.credential_info: body['credential_info'] = self.credential_info
256
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
257
+ if self.storage_credential_name is not None:
258
+ body['storage_credential_name'] = self.storage_credential_name
259
+ return body
260
+
198
261
  @classmethod
199
262
  def from_dict(cls, d: Dict[str, any]) -> AccountsUpdateStorageCredential:
200
263
  """Deserializes the AccountsUpdateStorageCredential from a dictionary."""
@@ -226,6 +289,15 @@ class ArtifactAllowlistInfo:
226
289
  if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
227
290
  return body
228
291
 
292
+ def as_shallow_dict(self) -> dict:
293
+ """Serializes the ArtifactAllowlistInfo into a shallow dictionary of its immediate attributes."""
294
+ body = {}
295
+ if self.artifact_matchers: body['artifact_matchers'] = self.artifact_matchers
296
+ if self.created_at is not None: body['created_at'] = self.created_at
297
+ if self.created_by is not None: body['created_by'] = self.created_by
298
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
299
+ return body
300
+
229
301
  @classmethod
230
302
  def from_dict(cls, d: Dict[str, any]) -> ArtifactAllowlistInfo:
231
303
  """Deserializes the ArtifactAllowlistInfo from a dictionary."""
@@ -250,6 +322,13 @@ class ArtifactMatcher:
250
322
  if self.match_type is not None: body['match_type'] = self.match_type.value
251
323
  return body
252
324
 
325
+ def as_shallow_dict(self) -> dict:
326
+ """Serializes the ArtifactMatcher into a shallow dictionary of its immediate attributes."""
327
+ body = {}
328
+ if self.artifact is not None: body['artifact'] = self.artifact
329
+ if self.match_type is not None: body['match_type'] = self.match_type
330
+ return body
331
+
253
332
  @classmethod
254
333
  def from_dict(cls, d: Dict[str, any]) -> ArtifactMatcher:
255
334
  """Deserializes the ArtifactMatcher from a dictionary."""
@@ -272,6 +351,11 @@ class AssignResponse:
272
351
  body = {}
273
352
  return body
274
353
 
354
+ def as_shallow_dict(self) -> dict:
355
+ """Serializes the AssignResponse into a shallow dictionary of its immediate attributes."""
356
+ body = {}
357
+ return body
358
+
275
359
  @classmethod
276
360
  def from_dict(cls, d: Dict[str, any]) -> AssignResponse:
277
361
  """Deserializes the AssignResponse from a dictionary."""
@@ -305,6 +389,15 @@ class AwsCredentials:
305
389
  if self.session_token is not None: body['session_token'] = self.session_token
306
390
  return body
307
391
 
392
+ def as_shallow_dict(self) -> dict:
393
+ """Serializes the AwsCredentials into a shallow dictionary of its immediate attributes."""
394
+ body = {}
395
+ if self.access_key_id is not None: body['access_key_id'] = self.access_key_id
396
+ if self.access_point is not None: body['access_point'] = self.access_point
397
+ if self.secret_access_key is not None: body['secret_access_key'] = self.secret_access_key
398
+ if self.session_token is not None: body['session_token'] = self.session_token
399
+ return body
400
+
308
401
  @classmethod
309
402
  def from_dict(cls, d: Dict[str, any]) -> AwsCredentials:
310
403
  """Deserializes the AwsCredentials from a dictionary."""
@@ -336,6 +429,14 @@ class AwsIamRole:
336
429
  if self.unity_catalog_iam_arn is not None: body['unity_catalog_iam_arn'] = self.unity_catalog_iam_arn
337
430
  return body
338
431
 
432
+ def as_shallow_dict(self) -> dict:
433
+ """Serializes the AwsIamRole into a shallow dictionary of its immediate attributes."""
434
+ body = {}
435
+ if self.external_id is not None: body['external_id'] = self.external_id
436
+ if self.role_arn is not None: body['role_arn'] = self.role_arn
437
+ if self.unity_catalog_iam_arn is not None: body['unity_catalog_iam_arn'] = self.unity_catalog_iam_arn
438
+ return body
439
+
339
440
  @classmethod
340
441
  def from_dict(cls, d: Dict[str, any]) -> AwsIamRole:
341
442
  """Deserializes the AwsIamRole from a dictionary."""
@@ -355,6 +456,12 @@ class AwsIamRoleRequest:
355
456
  if self.role_arn is not None: body['role_arn'] = self.role_arn
356
457
  return body
357
458
 
459
+ def as_shallow_dict(self) -> dict:
460
+ """Serializes the AwsIamRoleRequest into a shallow dictionary of its immediate attributes."""
461
+ body = {}
462
+ if self.role_arn is not None: body['role_arn'] = self.role_arn
463
+ return body
464
+
358
465
  @classmethod
359
466
  def from_dict(cls, d: Dict[str, any]) -> AwsIamRoleRequest:
360
467
  """Deserializes the AwsIamRoleRequest from a dictionary."""
@@ -381,6 +488,14 @@ class AwsIamRoleResponse:
381
488
  if self.unity_catalog_iam_arn is not None: body['unity_catalog_iam_arn'] = self.unity_catalog_iam_arn
382
489
  return body
383
490
 
491
+ def as_shallow_dict(self) -> dict:
492
+ """Serializes the AwsIamRoleResponse into a shallow dictionary of its immediate attributes."""
493
+ body = {}
494
+ if self.external_id is not None: body['external_id'] = self.external_id
495
+ if self.role_arn is not None: body['role_arn'] = self.role_arn
496
+ if self.unity_catalog_iam_arn is not None: body['unity_catalog_iam_arn'] = self.unity_catalog_iam_arn
497
+ return body
498
+
384
499
  @classmethod
385
500
  def from_dict(cls, d: Dict[str, any]) -> AwsIamRoleResponse:
386
501
  """Deserializes the AwsIamRoleResponse from a dictionary."""
@@ -405,6 +520,12 @@ class AzureActiveDirectoryToken:
405
520
  if self.aad_token is not None: body['aad_token'] = self.aad_token
406
521
  return body
407
522
 
523
+ def as_shallow_dict(self) -> dict:
524
+ """Serializes the AzureActiveDirectoryToken into a shallow dictionary of its immediate attributes."""
525
+ body = {}
526
+ if self.aad_token is not None: body['aad_token'] = self.aad_token
527
+ return body
528
+
408
529
  @classmethod
409
530
  def from_dict(cls, d: Dict[str, any]) -> AzureActiveDirectoryToken:
410
531
  """Deserializes the AzureActiveDirectoryToken from a dictionary."""
@@ -439,6 +560,14 @@ class AzureManagedIdentity:
439
560
  if self.managed_identity_id is not None: body['managed_identity_id'] = self.managed_identity_id
440
561
  return body
441
562
 
563
+ def as_shallow_dict(self) -> dict:
564
+ """Serializes the AzureManagedIdentity into a shallow dictionary of its immediate attributes."""
565
+ body = {}
566
+ if self.access_connector_id is not None: body['access_connector_id'] = self.access_connector_id
567
+ if self.credential_id is not None: body['credential_id'] = self.credential_id
568
+ if self.managed_identity_id is not None: body['managed_identity_id'] = self.managed_identity_id
569
+ return body
570
+
442
571
  @classmethod
443
572
  def from_dict(cls, d: Dict[str, any]) -> AzureManagedIdentity:
444
573
  """Deserializes the AzureManagedIdentity from a dictionary."""
@@ -467,6 +596,13 @@ class AzureManagedIdentityRequest:
467
596
  if self.managed_identity_id is not None: body['managed_identity_id'] = self.managed_identity_id
468
597
  return body
469
598
 
599
+ def as_shallow_dict(self) -> dict:
600
+ """Serializes the AzureManagedIdentityRequest into a shallow dictionary of its immediate attributes."""
601
+ body = {}
602
+ if self.access_connector_id is not None: body['access_connector_id'] = self.access_connector_id
603
+ if self.managed_identity_id is not None: body['managed_identity_id'] = self.managed_identity_id
604
+ return body
605
+
470
606
  @classmethod
471
607
  def from_dict(cls, d: Dict[str, any]) -> AzureManagedIdentityRequest:
472
608
  """Deserializes the AzureManagedIdentityRequest from a dictionary."""
@@ -498,6 +634,14 @@ class AzureManagedIdentityResponse:
498
634
  if self.managed_identity_id is not None: body['managed_identity_id'] = self.managed_identity_id
499
635
  return body
500
636
 
637
+ def as_shallow_dict(self) -> dict:
638
+ """Serializes the AzureManagedIdentityResponse into a shallow dictionary of its immediate attributes."""
639
+ body = {}
640
+ if self.access_connector_id is not None: body['access_connector_id'] = self.access_connector_id
641
+ if self.credential_id is not None: body['credential_id'] = self.credential_id
642
+ if self.managed_identity_id is not None: body['managed_identity_id'] = self.managed_identity_id
643
+ return body
644
+
501
645
  @classmethod
502
646
  def from_dict(cls, d: Dict[str, any]) -> AzureManagedIdentityResponse:
503
647
  """Deserializes the AzureManagedIdentityResponse from a dictionary."""
@@ -508,7 +652,7 @@ class AzureManagedIdentityResponse:
508
652
 
509
653
  @dataclass
510
654
  class AzureServicePrincipal:
511
- """The Azure service principal configuration."""
655
+ """The Azure service principal configuration. Only applicable when purpose is **STORAGE**."""
512
656
 
513
657
  directory_id: str
514
658
  """The directory ID corresponding to the Azure Active Directory (AAD) tenant of the application."""
@@ -527,6 +671,14 @@ class AzureServicePrincipal:
527
671
  if self.directory_id is not None: body['directory_id'] = self.directory_id
528
672
  return body
529
673
 
674
+ def as_shallow_dict(self) -> dict:
675
+ """Serializes the AzureServicePrincipal into a shallow dictionary of its immediate attributes."""
676
+ body = {}
677
+ if self.application_id is not None: body['application_id'] = self.application_id
678
+ if self.client_secret is not None: body['client_secret'] = self.client_secret
679
+ if self.directory_id is not None: body['directory_id'] = self.directory_id
680
+ return body
681
+
530
682
  @classmethod
531
683
  def from_dict(cls, d: Dict[str, any]) -> AzureServicePrincipal:
532
684
  """Deserializes the AzureServicePrincipal from a dictionary."""
@@ -549,6 +701,12 @@ class AzureUserDelegationSas:
549
701
  if self.sas_token is not None: body['sas_token'] = self.sas_token
550
702
  return body
551
703
 
704
+ def as_shallow_dict(self) -> dict:
705
+ """Serializes the AzureUserDelegationSas into a shallow dictionary of its immediate attributes."""
706
+ body = {}
707
+ if self.sas_token is not None: body['sas_token'] = self.sas_token
708
+ return body
709
+
552
710
  @classmethod
553
711
  def from_dict(cls, d: Dict[str, any]) -> AzureUserDelegationSas:
554
712
  """Deserializes the AzureUserDelegationSas from a dictionary."""
@@ -563,6 +721,11 @@ class CancelRefreshResponse:
563
721
  body = {}
564
722
  return body
565
723
 
724
+ def as_shallow_dict(self) -> dict:
725
+ """Serializes the CancelRefreshResponse into a shallow dictionary of its immediate attributes."""
726
+ body = {}
727
+ return body
728
+
566
729
  @classmethod
567
730
  def from_dict(cls, d: Dict[str, any]) -> CancelRefreshResponse:
568
731
  """Deserializes the CancelRefreshResponse from a dictionary."""
@@ -677,6 +840,37 @@ class CatalogInfo:
677
840
  if self.updated_by is not None: body['updated_by'] = self.updated_by
678
841
  return body
679
842
 
843
+ def as_shallow_dict(self) -> dict:
844
+ """Serializes the CatalogInfo into a shallow dictionary of its immediate attributes."""
845
+ body = {}
846
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
847
+ if self.catalog_type is not None: body['catalog_type'] = self.catalog_type
848
+ if self.comment is not None: body['comment'] = self.comment
849
+ if self.connection_name is not None: body['connection_name'] = self.connection_name
850
+ if self.created_at is not None: body['created_at'] = self.created_at
851
+ if self.created_by is not None: body['created_by'] = self.created_by
852
+ if self.effective_predictive_optimization_flag:
853
+ body['effective_predictive_optimization_flag'] = self.effective_predictive_optimization_flag
854
+ if self.enable_predictive_optimization is not None:
855
+ body['enable_predictive_optimization'] = self.enable_predictive_optimization
856
+ if self.full_name is not None: body['full_name'] = self.full_name
857
+ if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode
858
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
859
+ if self.name is not None: body['name'] = self.name
860
+ if self.options: body['options'] = self.options
861
+ if self.owner is not None: body['owner'] = self.owner
862
+ if self.properties: body['properties'] = self.properties
863
+ if self.provider_name is not None: body['provider_name'] = self.provider_name
864
+ if self.provisioning_info: body['provisioning_info'] = self.provisioning_info
865
+ if self.securable_kind is not None: body['securable_kind'] = self.securable_kind
866
+ if self.securable_type is not None: body['securable_type'] = self.securable_type
867
+ if self.share_name is not None: body['share_name'] = self.share_name
868
+ if self.storage_location is not None: body['storage_location'] = self.storage_location
869
+ if self.storage_root is not None: body['storage_root'] = self.storage_root
870
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
871
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
872
+ return body
873
+
680
874
  @classmethod
681
875
  def from_dict(cls, d: Dict[str, any]) -> CatalogInfo:
682
876
  """Deserializes the CatalogInfo from a dictionary."""
@@ -760,6 +954,14 @@ class CloudflareApiToken:
760
954
  if self.secret_access_key is not None: body['secret_access_key'] = self.secret_access_key
761
955
  return body
762
956
 
957
+ def as_shallow_dict(self) -> dict:
958
+ """Serializes the CloudflareApiToken into a shallow dictionary of its immediate attributes."""
959
+ body = {}
960
+ if self.access_key_id is not None: body['access_key_id'] = self.access_key_id
961
+ if self.account_id is not None: body['account_id'] = self.account_id
962
+ if self.secret_access_key is not None: body['secret_access_key'] = self.secret_access_key
963
+ return body
964
+
763
965
  @classmethod
764
966
  def from_dict(cls, d: Dict[str, any]) -> CloudflareApiToken:
765
967
  """Deserializes the CloudflareApiToken from a dictionary."""
@@ -794,7 +996,6 @@ class ColumnInfo:
794
996
  """Full data type specification, JSON-serialized."""
795
997
 
796
998
  type_name: Optional[ColumnTypeName] = None
797
- """Name of type (INT, STRUCT, MAP, etc.)."""
798
999
 
799
1000
  type_precision: Optional[int] = None
800
1001
  """Digits of precision; required for DecimalTypes."""
@@ -822,6 +1023,23 @@ class ColumnInfo:
822
1023
  if self.type_text is not None: body['type_text'] = self.type_text
823
1024
  return body
824
1025
 
1026
+ def as_shallow_dict(self) -> dict:
1027
+ """Serializes the ColumnInfo into a shallow dictionary of its immediate attributes."""
1028
+ body = {}
1029
+ if self.comment is not None: body['comment'] = self.comment
1030
+ if self.mask: body['mask'] = self.mask
1031
+ if self.name is not None: body['name'] = self.name
1032
+ if self.nullable is not None: body['nullable'] = self.nullable
1033
+ if self.partition_index is not None: body['partition_index'] = self.partition_index
1034
+ if self.position is not None: body['position'] = self.position
1035
+ if self.type_interval_type is not None: body['type_interval_type'] = self.type_interval_type
1036
+ if self.type_json is not None: body['type_json'] = self.type_json
1037
+ if self.type_name is not None: body['type_name'] = self.type_name
1038
+ if self.type_precision is not None: body['type_precision'] = self.type_precision
1039
+ if self.type_scale is not None: body['type_scale'] = self.type_scale
1040
+ if self.type_text is not None: body['type_text'] = self.type_text
1041
+ return body
1042
+
825
1043
  @classmethod
826
1044
  def from_dict(cls, d: Dict[str, any]) -> ColumnInfo:
827
1045
  """Deserializes the ColumnInfo from a dictionary."""
@@ -856,6 +1074,13 @@ class ColumnMask:
856
1074
  if self.using_column_names: body['using_column_names'] = [v for v in self.using_column_names]
857
1075
  return body
858
1076
 
1077
+ def as_shallow_dict(self) -> dict:
1078
+ """Serializes the ColumnMask into a shallow dictionary of its immediate attributes."""
1079
+ body = {}
1080
+ if self.function_name is not None: body['function_name'] = self.function_name
1081
+ if self.using_column_names: body['using_column_names'] = self.using_column_names
1082
+ return body
1083
+
859
1084
  @classmethod
860
1085
  def from_dict(cls, d: Dict[str, any]) -> ColumnMask:
861
1086
  """Deserializes the ColumnMask from a dictionary."""
@@ -864,7 +1089,6 @@ class ColumnMask:
864
1089
 
865
1090
 
866
1091
  class ColumnTypeName(Enum):
867
- """Name of type (INT, STRUCT, MAP, etc.)."""
868
1092
 
869
1093
  ARRAY = 'ARRAY'
870
1094
  BINARY = 'BINARY'
@@ -972,6 +1196,30 @@ class ConnectionInfo:
972
1196
  if self.url is not None: body['url'] = self.url
973
1197
  return body
974
1198
 
1199
+ def as_shallow_dict(self) -> dict:
1200
+ """Serializes the ConnectionInfo into a shallow dictionary of its immediate attributes."""
1201
+ body = {}
1202
+ if self.comment is not None: body['comment'] = self.comment
1203
+ if self.connection_id is not None: body['connection_id'] = self.connection_id
1204
+ if self.connection_type is not None: body['connection_type'] = self.connection_type
1205
+ if self.created_at is not None: body['created_at'] = self.created_at
1206
+ if self.created_by is not None: body['created_by'] = self.created_by
1207
+ if self.credential_type is not None: body['credential_type'] = self.credential_type
1208
+ if self.full_name is not None: body['full_name'] = self.full_name
1209
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
1210
+ if self.name is not None: body['name'] = self.name
1211
+ if self.options: body['options'] = self.options
1212
+ if self.owner is not None: body['owner'] = self.owner
1213
+ if self.properties: body['properties'] = self.properties
1214
+ if self.provisioning_info: body['provisioning_info'] = self.provisioning_info
1215
+ if self.read_only is not None: body['read_only'] = self.read_only
1216
+ if self.securable_kind is not None: body['securable_kind'] = self.securable_kind
1217
+ if self.securable_type is not None: body['securable_type'] = self.securable_type
1218
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
1219
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
1220
+ if self.url is not None: body['url'] = self.url
1221
+ return body
1222
+
975
1223
  @classmethod
976
1224
  def from_dict(cls, d: Dict[str, any]) -> ConnectionInfo:
977
1225
  """Deserializes the ConnectionInfo from a dictionary."""
@@ -1056,6 +1304,16 @@ class ContinuousUpdateStatus:
1056
1304
  if self.timestamp is not None: body['timestamp'] = self.timestamp
1057
1305
  return body
1058
1306
 
1307
+ def as_shallow_dict(self) -> dict:
1308
+ """Serializes the ContinuousUpdateStatus into a shallow dictionary of its immediate attributes."""
1309
+ body = {}
1310
+ if self.initial_pipeline_sync_progress:
1311
+ body['initial_pipeline_sync_progress'] = self.initial_pipeline_sync_progress
1312
+ if self.last_processed_commit_version is not None:
1313
+ body['last_processed_commit_version'] = self.last_processed_commit_version
1314
+ if self.timestamp is not None: body['timestamp'] = self.timestamp
1315
+ return body
1316
+
1059
1317
  @classmethod
1060
1318
  def from_dict(cls, d: Dict[str, any]) -> ContinuousUpdateStatus:
1061
1319
  """Deserializes the ContinuousUpdateStatus from a dictionary."""
@@ -1106,6 +1364,19 @@ class CreateCatalog:
1106
1364
  if self.storage_root is not None: body['storage_root'] = self.storage_root
1107
1365
  return body
1108
1366
 
1367
+ def as_shallow_dict(self) -> dict:
1368
+ """Serializes the CreateCatalog into a shallow dictionary of its immediate attributes."""
1369
+ body = {}
1370
+ if self.comment is not None: body['comment'] = self.comment
1371
+ if self.connection_name is not None: body['connection_name'] = self.connection_name
1372
+ if self.name is not None: body['name'] = self.name
1373
+ if self.options: body['options'] = self.options
1374
+ if self.properties: body['properties'] = self.properties
1375
+ if self.provider_name is not None: body['provider_name'] = self.provider_name
1376
+ if self.share_name is not None: body['share_name'] = self.share_name
1377
+ if self.storage_root is not None: body['storage_root'] = self.storage_root
1378
+ return body
1379
+
1109
1380
  @classmethod
1110
1381
  def from_dict(cls, d: Dict[str, any]) -> CreateCatalog:
1111
1382
  """Deserializes the CreateCatalog from a dictionary."""
@@ -1150,6 +1421,17 @@ class CreateConnection:
1150
1421
  if self.read_only is not None: body['read_only'] = self.read_only
1151
1422
  return body
1152
1423
 
1424
+ def as_shallow_dict(self) -> dict:
1425
+ """Serializes the CreateConnection into a shallow dictionary of its immediate attributes."""
1426
+ body = {}
1427
+ if self.comment is not None: body['comment'] = self.comment
1428
+ if self.connection_type is not None: body['connection_type'] = self.connection_type
1429
+ if self.name is not None: body['name'] = self.name
1430
+ if self.options: body['options'] = self.options
1431
+ if self.properties: body['properties'] = self.properties
1432
+ if self.read_only is not None: body['read_only'] = self.read_only
1433
+ return body
1434
+
1153
1435
  @classmethod
1154
1436
  def from_dict(cls, d: Dict[str, any]) -> CreateConnection:
1155
1437
  """Deserializes the CreateConnection from a dictionary."""
@@ -1174,12 +1456,13 @@ class CreateCredentialRequest:
1174
1456
  """The Azure managed identity configuration."""
1175
1457
 
1176
1458
  azure_service_principal: Optional[AzureServicePrincipal] = None
1177
- """The Azure service principal configuration."""
1459
+ """The Azure service principal configuration. Only applicable when purpose is **STORAGE**."""
1178
1460
 
1179
1461
  comment: Optional[str] = None
1180
1462
  """Comment associated with the credential."""
1181
1463
 
1182
- gcp_service_account_key: Optional[GcpServiceAccountKey] = None
1464
+ databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None
1465
+ """GCP long-lived credential. Databricks-created Google Cloud Storage service account."""
1183
1466
 
1184
1467
  purpose: Optional[CredentialPurpose] = None
1185
1468
  """Indicates the purpose of the credential."""
@@ -1199,14 +1482,29 @@ class CreateCredentialRequest:
1199
1482
  if self.azure_service_principal:
1200
1483
  body['azure_service_principal'] = self.azure_service_principal.as_dict()
1201
1484
  if self.comment is not None: body['comment'] = self.comment
1202
- if self.gcp_service_account_key:
1203
- body['gcp_service_account_key'] = self.gcp_service_account_key.as_dict()
1485
+ if self.databricks_gcp_service_account:
1486
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account.as_dict()
1204
1487
  if self.name is not None: body['name'] = self.name
1205
1488
  if self.purpose is not None: body['purpose'] = self.purpose.value
1206
1489
  if self.read_only is not None: body['read_only'] = self.read_only
1207
1490
  if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
1208
1491
  return body
1209
1492
 
1493
+ def as_shallow_dict(self) -> dict:
1494
+ """Serializes the CreateCredentialRequest into a shallow dictionary of its immediate attributes."""
1495
+ body = {}
1496
+ if self.aws_iam_role: body['aws_iam_role'] = self.aws_iam_role
1497
+ if self.azure_managed_identity: body['azure_managed_identity'] = self.azure_managed_identity
1498
+ if self.azure_service_principal: body['azure_service_principal'] = self.azure_service_principal
1499
+ if self.comment is not None: body['comment'] = self.comment
1500
+ if self.databricks_gcp_service_account:
1501
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account
1502
+ if self.name is not None: body['name'] = self.name
1503
+ if self.purpose is not None: body['purpose'] = self.purpose
1504
+ if self.read_only is not None: body['read_only'] = self.read_only
1505
+ if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
1506
+ return body
1507
+
1210
1508
  @classmethod
1211
1509
  def from_dict(cls, d: Dict[str, any]) -> CreateCredentialRequest:
1212
1510
  """Deserializes the CreateCredentialRequest from a dictionary."""
@@ -1214,7 +1512,8 @@ class CreateCredentialRequest:
1214
1512
  azure_managed_identity=_from_dict(d, 'azure_managed_identity', AzureManagedIdentity),
1215
1513
  azure_service_principal=_from_dict(d, 'azure_service_principal', AzureServicePrincipal),
1216
1514
  comment=d.get('comment', None),
1217
- gcp_service_account_key=_from_dict(d, 'gcp_service_account_key', GcpServiceAccountKey),
1515
+ databricks_gcp_service_account=_from_dict(d, 'databricks_gcp_service_account',
1516
+ DatabricksGcpServiceAccount),
1218
1517
  name=d.get('name', None),
1219
1518
  purpose=_enum(d, 'purpose', CredentialPurpose),
1220
1519
  read_only=d.get('read_only', None),
@@ -1266,6 +1565,20 @@ class CreateExternalLocation:
1266
1565
  if self.url is not None: body['url'] = self.url
1267
1566
  return body
1268
1567
 
1568
+ def as_shallow_dict(self) -> dict:
1569
+ """Serializes the CreateExternalLocation into a shallow dictionary of its immediate attributes."""
1570
+ body = {}
1571
+ if self.access_point is not None: body['access_point'] = self.access_point
1572
+ if self.comment is not None: body['comment'] = self.comment
1573
+ if self.credential_name is not None: body['credential_name'] = self.credential_name
1574
+ if self.encryption_details: body['encryption_details'] = self.encryption_details
1575
+ if self.fallback is not None: body['fallback'] = self.fallback
1576
+ if self.name is not None: body['name'] = self.name
1577
+ if self.read_only is not None: body['read_only'] = self.read_only
1578
+ if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
1579
+ if self.url is not None: body['url'] = self.url
1580
+ return body
1581
+
1269
1582
  @classmethod
1270
1583
  def from_dict(cls, d: Dict[str, any]) -> CreateExternalLocation:
1271
1584
  """Deserializes the CreateExternalLocation from a dictionary."""
@@ -1373,6 +1686,32 @@ class CreateFunction:
1373
1686
  if self.sql_path is not None: body['sql_path'] = self.sql_path
1374
1687
  return body
1375
1688
 
1689
+ def as_shallow_dict(self) -> dict:
1690
+ """Serializes the CreateFunction into a shallow dictionary of its immediate attributes."""
1691
+ body = {}
1692
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
1693
+ if self.comment is not None: body['comment'] = self.comment
1694
+ if self.data_type is not None: body['data_type'] = self.data_type
1695
+ if self.external_language is not None: body['external_language'] = self.external_language
1696
+ if self.external_name is not None: body['external_name'] = self.external_name
1697
+ if self.full_data_type is not None: body['full_data_type'] = self.full_data_type
1698
+ if self.input_params: body['input_params'] = self.input_params
1699
+ if self.is_deterministic is not None: body['is_deterministic'] = self.is_deterministic
1700
+ if self.is_null_call is not None: body['is_null_call'] = self.is_null_call
1701
+ if self.name is not None: body['name'] = self.name
1702
+ if self.parameter_style is not None: body['parameter_style'] = self.parameter_style
1703
+ if self.properties is not None: body['properties'] = self.properties
1704
+ if self.return_params: body['return_params'] = self.return_params
1705
+ if self.routine_body is not None: body['routine_body'] = self.routine_body
1706
+ if self.routine_definition is not None: body['routine_definition'] = self.routine_definition
1707
+ if self.routine_dependencies: body['routine_dependencies'] = self.routine_dependencies
1708
+ if self.schema_name is not None: body['schema_name'] = self.schema_name
1709
+ if self.security_type is not None: body['security_type'] = self.security_type
1710
+ if self.specific_name is not None: body['specific_name'] = self.specific_name
1711
+ if self.sql_data_access is not None: body['sql_data_access'] = self.sql_data_access
1712
+ if self.sql_path is not None: body['sql_path'] = self.sql_path
1713
+ return body
1714
+
1376
1715
  @classmethod
1377
1716
  def from_dict(cls, d: Dict[str, any]) -> CreateFunction:
1378
1717
  """Deserializes the CreateFunction from a dictionary."""
@@ -1416,6 +1755,12 @@ class CreateFunctionRequest:
1416
1755
  if self.function_info: body['function_info'] = self.function_info.as_dict()
1417
1756
  return body
1418
1757
 
1758
+ def as_shallow_dict(self) -> dict:
1759
+ """Serializes the CreateFunctionRequest into a shallow dictionary of its immediate attributes."""
1760
+ body = {}
1761
+ if self.function_info: body['function_info'] = self.function_info
1762
+ return body
1763
+
1419
1764
  @classmethod
1420
1765
  def from_dict(cls, d: Dict[str, any]) -> CreateFunctionRequest:
1421
1766
  """Deserializes the CreateFunctionRequest from a dictionary."""
@@ -1467,6 +1812,14 @@ class CreateMetastore:
1467
1812
  if self.storage_root is not None: body['storage_root'] = self.storage_root
1468
1813
  return body
1469
1814
 
1815
+ def as_shallow_dict(self) -> dict:
1816
+ """Serializes the CreateMetastore into a shallow dictionary of its immediate attributes."""
1817
+ body = {}
1818
+ if self.name is not None: body['name'] = self.name
1819
+ if self.region is not None: body['region'] = self.region
1820
+ if self.storage_root is not None: body['storage_root'] = self.storage_root
1821
+ return body
1822
+
1470
1823
  @classmethod
1471
1824
  def from_dict(cls, d: Dict[str, any]) -> CreateMetastore:
1472
1825
  """Deserializes the CreateMetastore from a dictionary."""
@@ -1495,6 +1848,14 @@ class CreateMetastoreAssignment:
1495
1848
  if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
1496
1849
  return body
1497
1850
 
1851
+ def as_shallow_dict(self) -> dict:
1852
+ """Serializes the CreateMetastoreAssignment into a shallow dictionary of its immediate attributes."""
1853
+ body = {}
1854
+ if self.default_catalog_name is not None: body['default_catalog_name'] = self.default_catalog_name
1855
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
1856
+ if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
1857
+ return body
1858
+
1498
1859
  @classmethod
1499
1860
  def from_dict(cls, d: Dict[str, any]) -> CreateMetastoreAssignment:
1500
1861
  """Deserializes the CreateMetastoreAssignment from a dictionary."""
@@ -1574,10 +1935,31 @@ class CreateMonitor:
1574
1935
  if self.warehouse_id is not None: body['warehouse_id'] = self.warehouse_id
1575
1936
  return body
1576
1937
 
1577
- @classmethod
1578
- def from_dict(cls, d: Dict[str, any]) -> CreateMonitor:
1579
- """Deserializes the CreateMonitor from a dictionary."""
1580
- return cls(assets_dir=d.get('assets_dir', None),
1938
+ def as_shallow_dict(self) -> dict:
1939
+ """Serializes the CreateMonitor into a shallow dictionary of its immediate attributes."""
1940
+ body = {}
1941
+ if self.assets_dir is not None: body['assets_dir'] = self.assets_dir
1942
+ if self.baseline_table_name is not None: body['baseline_table_name'] = self.baseline_table_name
1943
+ if self.custom_metrics: body['custom_metrics'] = self.custom_metrics
1944
+ if self.data_classification_config:
1945
+ body['data_classification_config'] = self.data_classification_config
1946
+ if self.inference_log: body['inference_log'] = self.inference_log
1947
+ if self.notifications: body['notifications'] = self.notifications
1948
+ if self.output_schema_name is not None: body['output_schema_name'] = self.output_schema_name
1949
+ if self.schedule: body['schedule'] = self.schedule
1950
+ if self.skip_builtin_dashboard is not None:
1951
+ body['skip_builtin_dashboard'] = self.skip_builtin_dashboard
1952
+ if self.slicing_exprs: body['slicing_exprs'] = self.slicing_exprs
1953
+ if self.snapshot: body['snapshot'] = self.snapshot
1954
+ if self.table_name is not None: body['table_name'] = self.table_name
1955
+ if self.time_series: body['time_series'] = self.time_series
1956
+ if self.warehouse_id is not None: body['warehouse_id'] = self.warehouse_id
1957
+ return body
1958
+
1959
+ @classmethod
1960
+ def from_dict(cls, d: Dict[str, any]) -> CreateMonitor:
1961
+ """Deserializes the CreateMonitor from a dictionary."""
1962
+ return cls(assets_dir=d.get('assets_dir', None),
1581
1963
  baseline_table_name=d.get('baseline_table_name', None),
1582
1964
  custom_metrics=_repeated_dict(d, 'custom_metrics', MonitorMetric),
1583
1965
  data_classification_config=_from_dict(d, 'data_classification_config',
@@ -1621,6 +2003,16 @@ class CreateRegisteredModelRequest:
1621
2003
  if self.storage_location is not None: body['storage_location'] = self.storage_location
1622
2004
  return body
1623
2005
 
2006
+ def as_shallow_dict(self) -> dict:
2007
+ """Serializes the CreateRegisteredModelRequest into a shallow dictionary of its immediate attributes."""
2008
+ body = {}
2009
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
2010
+ if self.comment is not None: body['comment'] = self.comment
2011
+ if self.name is not None: body['name'] = self.name
2012
+ if self.schema_name is not None: body['schema_name'] = self.schema_name
2013
+ if self.storage_location is not None: body['storage_location'] = self.storage_location
2014
+ return body
2015
+
1624
2016
  @classmethod
1625
2017
  def from_dict(cls, d: Dict[str, any]) -> CreateRegisteredModelRequest:
1626
2018
  """Deserializes the CreateRegisteredModelRequest from a dictionary."""
@@ -1639,6 +2031,11 @@ class CreateResponse:
1639
2031
  body = {}
1640
2032
  return body
1641
2033
 
2034
+ def as_shallow_dict(self) -> dict:
2035
+ """Serializes the CreateResponse into a shallow dictionary of its immediate attributes."""
2036
+ body = {}
2037
+ return body
2038
+
1642
2039
  @classmethod
1643
2040
  def from_dict(cls, d: Dict[str, any]) -> CreateResponse:
1644
2041
  """Deserializes the CreateResponse from a dictionary."""
@@ -1672,6 +2069,16 @@ class CreateSchema:
1672
2069
  if self.storage_root is not None: body['storage_root'] = self.storage_root
1673
2070
  return body
1674
2071
 
2072
+ def as_shallow_dict(self) -> dict:
2073
+ """Serializes the CreateSchema into a shallow dictionary of its immediate attributes."""
2074
+ body = {}
2075
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
2076
+ if self.comment is not None: body['comment'] = self.comment
2077
+ if self.name is not None: body['name'] = self.name
2078
+ if self.properties: body['properties'] = self.properties
2079
+ if self.storage_root is not None: body['storage_root'] = self.storage_root
2080
+ return body
2081
+
1675
2082
  @classmethod
1676
2083
  def from_dict(cls, d: Dict[str, any]) -> CreateSchema:
1677
2084
  """Deserializes the CreateSchema from a dictionary."""
@@ -1727,6 +2134,21 @@ class CreateStorageCredential:
1727
2134
  if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
1728
2135
  return body
1729
2136
 
2137
+ def as_shallow_dict(self) -> dict:
2138
+ """Serializes the CreateStorageCredential into a shallow dictionary of its immediate attributes."""
2139
+ body = {}
2140
+ if self.aws_iam_role: body['aws_iam_role'] = self.aws_iam_role
2141
+ if self.azure_managed_identity: body['azure_managed_identity'] = self.azure_managed_identity
2142
+ if self.azure_service_principal: body['azure_service_principal'] = self.azure_service_principal
2143
+ if self.cloudflare_api_token: body['cloudflare_api_token'] = self.cloudflare_api_token
2144
+ if self.comment is not None: body['comment'] = self.comment
2145
+ if self.databricks_gcp_service_account:
2146
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account
2147
+ if self.name is not None: body['name'] = self.name
2148
+ if self.read_only is not None: body['read_only'] = self.read_only
2149
+ if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
2150
+ return body
2151
+
1730
2152
  @classmethod
1731
2153
  def from_dict(cls, d: Dict[str, any]) -> CreateStorageCredential:
1732
2154
  """Deserializes the CreateStorageCredential from a dictionary."""
@@ -1759,6 +2181,13 @@ class CreateTableConstraint:
1759
2181
  if self.full_name_arg is not None: body['full_name_arg'] = self.full_name_arg
1760
2182
  return body
1761
2183
 
2184
+ def as_shallow_dict(self) -> dict:
2185
+ """Serializes the CreateTableConstraint into a shallow dictionary of its immediate attributes."""
2186
+ body = {}
2187
+ if self.constraint: body['constraint'] = self.constraint
2188
+ if self.full_name_arg is not None: body['full_name_arg'] = self.full_name_arg
2189
+ return body
2190
+
1762
2191
  @classmethod
1763
2192
  def from_dict(cls, d: Dict[str, any]) -> CreateTableConstraint:
1764
2193
  """Deserializes the CreateTableConstraint from a dictionary."""
@@ -1796,6 +2225,17 @@ class CreateVolumeRequestContent:
1796
2225
  if self.volume_type is not None: body['volume_type'] = self.volume_type.value
1797
2226
  return body
1798
2227
 
2228
+ def as_shallow_dict(self) -> dict:
2229
+ """Serializes the CreateVolumeRequestContent into a shallow dictionary of its immediate attributes."""
2230
+ body = {}
2231
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
2232
+ if self.comment is not None: body['comment'] = self.comment
2233
+ if self.name is not None: body['name'] = self.name
2234
+ if self.schema_name is not None: body['schema_name'] = self.schema_name
2235
+ if self.storage_location is not None: body['storage_location'] = self.storage_location
2236
+ if self.volume_type is not None: body['volume_type'] = self.volume_type
2237
+ return body
2238
+
1799
2239
  @classmethod
1800
2240
  def from_dict(cls, d: Dict[str, any]) -> CreateVolumeRequestContent:
1801
2241
  """Deserializes the CreateVolumeRequestContent from a dictionary."""
@@ -1816,7 +2256,7 @@ class CredentialInfo:
1816
2256
  """The Azure managed identity configuration."""
1817
2257
 
1818
2258
  azure_service_principal: Optional[AzureServicePrincipal] = None
1819
- """The Azure service principal configuration."""
2259
+ """The Azure service principal configuration. Only applicable when purpose is **STORAGE**."""
1820
2260
 
1821
2261
  comment: Optional[str] = None
1822
2262
  """Comment associated with the credential."""
@@ -1827,6 +2267,9 @@ class CredentialInfo:
1827
2267
  created_by: Optional[str] = None
1828
2268
  """Username of credential creator."""
1829
2269
 
2270
+ databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None
2271
+ """GCP long-lived credential. Databricks-created Google Cloud Storage service account."""
2272
+
1830
2273
  full_name: Optional[str] = None
1831
2274
  """The full name of the credential."""
1832
2275
 
@@ -1873,6 +2316,8 @@ class CredentialInfo:
1873
2316
  if self.comment is not None: body['comment'] = self.comment
1874
2317
  if self.created_at is not None: body['created_at'] = self.created_at
1875
2318
  if self.created_by is not None: body['created_by'] = self.created_by
2319
+ if self.databricks_gcp_service_account:
2320
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account.as_dict()
1876
2321
  if self.full_name is not None: body['full_name'] = self.full_name
1877
2322
  if self.id is not None: body['id'] = self.id
1878
2323
  if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode.value
@@ -1887,6 +2332,31 @@ class CredentialInfo:
1887
2332
  body['used_for_managed_storage'] = self.used_for_managed_storage
1888
2333
  return body
1889
2334
 
2335
+ def as_shallow_dict(self) -> dict:
2336
+ """Serializes the CredentialInfo into a shallow dictionary of its immediate attributes."""
2337
+ body = {}
2338
+ if self.aws_iam_role: body['aws_iam_role'] = self.aws_iam_role
2339
+ if self.azure_managed_identity: body['azure_managed_identity'] = self.azure_managed_identity
2340
+ if self.azure_service_principal: body['azure_service_principal'] = self.azure_service_principal
2341
+ if self.comment is not None: body['comment'] = self.comment
2342
+ if self.created_at is not None: body['created_at'] = self.created_at
2343
+ if self.created_by is not None: body['created_by'] = self.created_by
2344
+ if self.databricks_gcp_service_account:
2345
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account
2346
+ if self.full_name is not None: body['full_name'] = self.full_name
2347
+ if self.id is not None: body['id'] = self.id
2348
+ if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode
2349
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
2350
+ if self.name is not None: body['name'] = self.name
2351
+ if self.owner is not None: body['owner'] = self.owner
2352
+ if self.purpose is not None: body['purpose'] = self.purpose
2353
+ if self.read_only is not None: body['read_only'] = self.read_only
2354
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
2355
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
2356
+ if self.used_for_managed_storage is not None:
2357
+ body['used_for_managed_storage'] = self.used_for_managed_storage
2358
+ return body
2359
+
1890
2360
  @classmethod
1891
2361
  def from_dict(cls, d: Dict[str, any]) -> CredentialInfo:
1892
2362
  """Deserializes the CredentialInfo from a dictionary."""
@@ -1896,6 +2366,8 @@ class CredentialInfo:
1896
2366
  comment=d.get('comment', None),
1897
2367
  created_at=d.get('created_at', None),
1898
2368
  created_by=d.get('created_by', None),
2369
+ databricks_gcp_service_account=_from_dict(d, 'databricks_gcp_service_account',
2370
+ DatabricksGcpServiceAccount),
1899
2371
  full_name=d.get('full_name', None),
1900
2372
  id=d.get('id', None),
1901
2373
  isolation_mode=_enum(d, 'isolation_mode', IsolationMode),
@@ -1937,6 +2409,13 @@ class CredentialValidationResult:
1937
2409
  if self.result is not None: body['result'] = self.result.value
1938
2410
  return body
1939
2411
 
2412
+ def as_shallow_dict(self) -> dict:
2413
+ """Serializes the CredentialValidationResult into a shallow dictionary of its immediate attributes."""
2414
+ body = {}
2415
+ if self.message is not None: body['message'] = self.message
2416
+ if self.result is not None: body['result'] = self.result
2417
+ return body
2418
+
1940
2419
  @classmethod
1941
2420
  def from_dict(cls, d: Dict[str, any]) -> CredentialValidationResult:
1942
2421
  """Deserializes the CredentialValidationResult from a dictionary."""
@@ -1956,6 +2435,12 @@ class CurrentWorkspaceBindings:
1956
2435
  if self.workspaces: body['workspaces'] = [v for v in self.workspaces]
1957
2436
  return body
1958
2437
 
2438
+ def as_shallow_dict(self) -> dict:
2439
+ """Serializes the CurrentWorkspaceBindings into a shallow dictionary of its immediate attributes."""
2440
+ body = {}
2441
+ if self.workspaces: body['workspaces'] = self.workspaces
2442
+ return body
2443
+
1959
2444
  @classmethod
1960
2445
  def from_dict(cls, d: Dict[str, any]) -> CurrentWorkspaceBindings:
1961
2446
  """Deserializes the CurrentWorkspaceBindings from a dictionary."""
@@ -1990,6 +2475,45 @@ class DataSourceFormat(Enum):
1990
2475
  WORKDAY_RAAS_FORMAT = 'WORKDAY_RAAS_FORMAT'
1991
2476
 
1992
2477
 
2478
+ @dataclass
2479
+ class DatabricksGcpServiceAccount:
2480
+ """GCP long-lived credential. Databricks-created Google Cloud Storage service account."""
2481
+
2482
+ credential_id: Optional[str] = None
2483
+ """The Databricks internal ID that represents this managed identity. This field is only used to
2484
+ persist the credential_id once it is fetched from the credentials manager - as we only use the
2485
+ protobuf serializer to store credentials, this ID gets persisted to the database"""
2486
+
2487
+ email: Optional[str] = None
2488
+ """The email of the service account."""
2489
+
2490
+ private_key_id: Optional[str] = None
2491
+ """The ID that represents the private key for this Service Account"""
2492
+
2493
+ def as_dict(self) -> dict:
2494
+ """Serializes the DatabricksGcpServiceAccount into a dictionary suitable for use as a JSON request body."""
2495
+ body = {}
2496
+ if self.credential_id is not None: body['credential_id'] = self.credential_id
2497
+ if self.email is not None: body['email'] = self.email
2498
+ if self.private_key_id is not None: body['private_key_id'] = self.private_key_id
2499
+ return body
2500
+
2501
+ def as_shallow_dict(self) -> dict:
2502
+ """Serializes the DatabricksGcpServiceAccount into a shallow dictionary of its immediate attributes."""
2503
+ body = {}
2504
+ if self.credential_id is not None: body['credential_id'] = self.credential_id
2505
+ if self.email is not None: body['email'] = self.email
2506
+ if self.private_key_id is not None: body['private_key_id'] = self.private_key_id
2507
+ return body
2508
+
2509
+ @classmethod
2510
+ def from_dict(cls, d: Dict[str, any]) -> DatabricksGcpServiceAccount:
2511
+ """Deserializes the DatabricksGcpServiceAccount from a dictionary."""
2512
+ return cls(credential_id=d.get('credential_id', None),
2513
+ email=d.get('email', None),
2514
+ private_key_id=d.get('private_key_id', None))
2515
+
2516
+
1993
2517
  @dataclass
1994
2518
  class DatabricksGcpServiceAccountRequest:
1995
2519
 
@@ -1998,6 +2522,11 @@ class DatabricksGcpServiceAccountRequest:
1998
2522
  body = {}
1999
2523
  return body
2000
2524
 
2525
+ def as_shallow_dict(self) -> dict:
2526
+ """Serializes the DatabricksGcpServiceAccountRequest into a shallow dictionary of its immediate attributes."""
2527
+ body = {}
2528
+ return body
2529
+
2001
2530
  @classmethod
2002
2531
  def from_dict(cls, d: Dict[str, any]) -> DatabricksGcpServiceAccountRequest:
2003
2532
  """Deserializes the DatabricksGcpServiceAccountRequest from a dictionary."""
@@ -2019,6 +2548,13 @@ class DatabricksGcpServiceAccountResponse:
2019
2548
  if self.email is not None: body['email'] = self.email
2020
2549
  return body
2021
2550
 
2551
+ def as_shallow_dict(self) -> dict:
2552
+ """Serializes the DatabricksGcpServiceAccountResponse into a shallow dictionary of its immediate attributes."""
2553
+ body = {}
2554
+ if self.credential_id is not None: body['credential_id'] = self.credential_id
2555
+ if self.email is not None: body['email'] = self.email
2556
+ return body
2557
+
2022
2558
  @classmethod
2023
2559
  def from_dict(cls, d: Dict[str, any]) -> DatabricksGcpServiceAccountResponse:
2024
2560
  """Deserializes the DatabricksGcpServiceAccountResponse from a dictionary."""
@@ -2033,6 +2569,11 @@ class DeleteAliasResponse:
2033
2569
  body = {}
2034
2570
  return body
2035
2571
 
2572
+ def as_shallow_dict(self) -> dict:
2573
+ """Serializes the DeleteAliasResponse into a shallow dictionary of its immediate attributes."""
2574
+ body = {}
2575
+ return body
2576
+
2036
2577
  @classmethod
2037
2578
  def from_dict(cls, d: Dict[str, any]) -> DeleteAliasResponse:
2038
2579
  """Deserializes the DeleteAliasResponse from a dictionary."""
@@ -2047,6 +2588,11 @@ class DeleteCredentialResponse:
2047
2588
  body = {}
2048
2589
  return body
2049
2590
 
2591
+ def as_shallow_dict(self) -> dict:
2592
+ """Serializes the DeleteCredentialResponse into a shallow dictionary of its immediate attributes."""
2593
+ body = {}
2594
+ return body
2595
+
2050
2596
  @classmethod
2051
2597
  def from_dict(cls, d: Dict[str, any]) -> DeleteCredentialResponse:
2052
2598
  """Deserializes the DeleteCredentialResponse from a dictionary."""
@@ -2061,6 +2607,11 @@ class DeleteResponse:
2061
2607
  body = {}
2062
2608
  return body
2063
2609
 
2610
+ def as_shallow_dict(self) -> dict:
2611
+ """Serializes the DeleteResponse into a shallow dictionary of its immediate attributes."""
2612
+ body = {}
2613
+ return body
2614
+
2064
2615
  @classmethod
2065
2616
  def from_dict(cls, d: Dict[str, any]) -> DeleteResponse:
2066
2617
  """Deserializes the DeleteResponse from a dictionary."""
@@ -2081,6 +2632,12 @@ class DeltaRuntimePropertiesKvPairs:
2081
2632
  if self.delta_runtime_properties: body['delta_runtime_properties'] = self.delta_runtime_properties
2082
2633
  return body
2083
2634
 
2635
+ def as_shallow_dict(self) -> dict:
2636
+ """Serializes the DeltaRuntimePropertiesKvPairs into a shallow dictionary of its immediate attributes."""
2637
+ body = {}
2638
+ if self.delta_runtime_properties: body['delta_runtime_properties'] = self.delta_runtime_properties
2639
+ return body
2640
+
2084
2641
  @classmethod
2085
2642
  def from_dict(cls, d: Dict[str, any]) -> DeltaRuntimePropertiesKvPairs:
2086
2643
  """Deserializes the DeltaRuntimePropertiesKvPairs from a dictionary."""
@@ -2105,6 +2662,13 @@ class Dependency:
2105
2662
  if self.table: body['table'] = self.table.as_dict()
2106
2663
  return body
2107
2664
 
2665
+ def as_shallow_dict(self) -> dict:
2666
+ """Serializes the Dependency into a shallow dictionary of its immediate attributes."""
2667
+ body = {}
2668
+ if self.function: body['function'] = self.function
2669
+ if self.table: body['table'] = self.table
2670
+ return body
2671
+
2108
2672
  @classmethod
2109
2673
  def from_dict(cls, d: Dict[str, any]) -> Dependency:
2110
2674
  """Deserializes the Dependency from a dictionary."""
@@ -2125,6 +2689,12 @@ class DependencyList:
2125
2689
  if self.dependencies: body['dependencies'] = [v.as_dict() for v in self.dependencies]
2126
2690
  return body
2127
2691
 
2692
+ def as_shallow_dict(self) -> dict:
2693
+ """Serializes the DependencyList into a shallow dictionary of its immediate attributes."""
2694
+ body = {}
2695
+ if self.dependencies: body['dependencies'] = self.dependencies
2696
+ return body
2697
+
2128
2698
  @classmethod
2129
2699
  def from_dict(cls, d: Dict[str, any]) -> DependencyList:
2130
2700
  """Deserializes the DependencyList from a dictionary."""
@@ -2139,6 +2709,11 @@ class DisableResponse:
2139
2709
  body = {}
2140
2710
  return body
2141
2711
 
2712
+ def as_shallow_dict(self) -> dict:
2713
+ """Serializes the DisableResponse into a shallow dictionary of its immediate attributes."""
2714
+ body = {}
2715
+ return body
2716
+
2142
2717
  @classmethod
2143
2718
  def from_dict(cls, d: Dict[str, any]) -> DisableResponse:
2144
2719
  """Deserializes the DisableResponse from a dictionary."""
@@ -2157,6 +2732,12 @@ class EffectivePermissionsList:
2157
2732
  body['privilege_assignments'] = [v.as_dict() for v in self.privilege_assignments]
2158
2733
  return body
2159
2734
 
2735
+ def as_shallow_dict(self) -> dict:
2736
+ """Serializes the EffectivePermissionsList into a shallow dictionary of its immediate attributes."""
2737
+ body = {}
2738
+ if self.privilege_assignments: body['privilege_assignments'] = self.privilege_assignments
2739
+ return body
2740
+
2160
2741
  @classmethod
2161
2742
  def from_dict(cls, d: Dict[str, any]) -> EffectivePermissionsList:
2162
2743
  """Deserializes the EffectivePermissionsList from a dictionary."""
@@ -2185,6 +2766,14 @@ class EffectivePredictiveOptimizationFlag:
2185
2766
  if self.value is not None: body['value'] = self.value.value
2186
2767
  return body
2187
2768
 
2769
+ def as_shallow_dict(self) -> dict:
2770
+ """Serializes the EffectivePredictiveOptimizationFlag into a shallow dictionary of its immediate attributes."""
2771
+ body = {}
2772
+ if self.inherited_from_name is not None: body['inherited_from_name'] = self.inherited_from_name
2773
+ if self.inherited_from_type is not None: body['inherited_from_type'] = self.inherited_from_type
2774
+ if self.value is not None: body['value'] = self.value
2775
+ return body
2776
+
2188
2777
  @classmethod
2189
2778
  def from_dict(cls, d: Dict[str, any]) -> EffectivePredictiveOptimizationFlag:
2190
2779
  """Deserializes the EffectivePredictiveOptimizationFlag from a dictionary."""
@@ -2223,6 +2812,14 @@ class EffectivePrivilege:
2223
2812
  if self.privilege is not None: body['privilege'] = self.privilege.value
2224
2813
  return body
2225
2814
 
2815
+ def as_shallow_dict(self) -> dict:
2816
+ """Serializes the EffectivePrivilege into a shallow dictionary of its immediate attributes."""
2817
+ body = {}
2818
+ if self.inherited_from_name is not None: body['inherited_from_name'] = self.inherited_from_name
2819
+ if self.inherited_from_type is not None: body['inherited_from_type'] = self.inherited_from_type
2820
+ if self.privilege is not None: body['privilege'] = self.privilege
2821
+ return body
2822
+
2226
2823
  @classmethod
2227
2824
  def from_dict(cls, d: Dict[str, any]) -> EffectivePrivilege:
2228
2825
  """Deserializes the EffectivePrivilege from a dictionary."""
@@ -2246,6 +2843,13 @@ class EffectivePrivilegeAssignment:
2246
2843
  if self.privileges: body['privileges'] = [v.as_dict() for v in self.privileges]
2247
2844
  return body
2248
2845
 
2846
+ def as_shallow_dict(self) -> dict:
2847
+ """Serializes the EffectivePrivilegeAssignment into a shallow dictionary of its immediate attributes."""
2848
+ body = {}
2849
+ if self.principal is not None: body['principal'] = self.principal
2850
+ if self.privileges: body['privileges'] = self.privileges
2851
+ return body
2852
+
2249
2853
  @classmethod
2250
2854
  def from_dict(cls, d: Dict[str, any]) -> EffectivePrivilegeAssignment:
2251
2855
  """Deserializes the EffectivePrivilegeAssignment from a dictionary."""
@@ -2269,6 +2873,11 @@ class EnableResponse:
2269
2873
  body = {}
2270
2874
  return body
2271
2875
 
2876
+ def as_shallow_dict(self) -> dict:
2877
+ """Serializes the EnableResponse into a shallow dictionary of its immediate attributes."""
2878
+ body = {}
2879
+ return body
2880
+
2272
2881
  @classmethod
2273
2882
  def from_dict(cls, d: Dict[str, any]) -> EnableResponse:
2274
2883
  """Deserializes the EnableResponse from a dictionary."""
@@ -2288,6 +2897,12 @@ class EncryptionDetails:
2288
2897
  if self.sse_encryption_details: body['sse_encryption_details'] = self.sse_encryption_details.as_dict()
2289
2898
  return body
2290
2899
 
2900
+ def as_shallow_dict(self) -> dict:
2901
+ """Serializes the EncryptionDetails into a shallow dictionary of its immediate attributes."""
2902
+ body = {}
2903
+ if self.sse_encryption_details: body['sse_encryption_details'] = self.sse_encryption_details
2904
+ return body
2905
+
2291
2906
  @classmethod
2292
2907
  def from_dict(cls, d: Dict[str, any]) -> EncryptionDetails:
2293
2908
  """Deserializes the EncryptionDetails from a dictionary."""
@@ -2371,6 +2986,28 @@ class ExternalLocationInfo:
2371
2986
  if self.url is not None: body['url'] = self.url
2372
2987
  return body
2373
2988
 
2989
+ def as_shallow_dict(self) -> dict:
2990
+ """Serializes the ExternalLocationInfo into a shallow dictionary of its immediate attributes."""
2991
+ body = {}
2992
+ if self.access_point is not None: body['access_point'] = self.access_point
2993
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
2994
+ if self.comment is not None: body['comment'] = self.comment
2995
+ if self.created_at is not None: body['created_at'] = self.created_at
2996
+ if self.created_by is not None: body['created_by'] = self.created_by
2997
+ if self.credential_id is not None: body['credential_id'] = self.credential_id
2998
+ if self.credential_name is not None: body['credential_name'] = self.credential_name
2999
+ if self.encryption_details: body['encryption_details'] = self.encryption_details
3000
+ if self.fallback is not None: body['fallback'] = self.fallback
3001
+ if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode
3002
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
3003
+ if self.name is not None: body['name'] = self.name
3004
+ if self.owner is not None: body['owner'] = self.owner
3005
+ if self.read_only is not None: body['read_only'] = self.read_only
3006
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
3007
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
3008
+ if self.url is not None: body['url'] = self.url
3009
+ return body
3010
+
2374
3011
  @classmethod
2375
3012
  def from_dict(cls, d: Dict[str, any]) -> ExternalLocationInfo:
2376
3013
  """Deserializes the ExternalLocationInfo from a dictionary."""
@@ -2415,6 +3052,14 @@ class FailedStatus:
2415
3052
  if self.timestamp is not None: body['timestamp'] = self.timestamp
2416
3053
  return body
2417
3054
 
3055
+ def as_shallow_dict(self) -> dict:
3056
+ """Serializes the FailedStatus into a shallow dictionary of its immediate attributes."""
3057
+ body = {}
3058
+ if self.last_processed_commit_version is not None:
3059
+ body['last_processed_commit_version'] = self.last_processed_commit_version
3060
+ if self.timestamp is not None: body['timestamp'] = self.timestamp
3061
+ return body
3062
+
2418
3063
  @classmethod
2419
3064
  def from_dict(cls, d: Dict[str, any]) -> FailedStatus:
2420
3065
  """Deserializes the FailedStatus from a dictionary."""
@@ -2445,6 +3090,15 @@ class ForeignKeyConstraint:
2445
3090
  if self.parent_table is not None: body['parent_table'] = self.parent_table
2446
3091
  return body
2447
3092
 
3093
+ def as_shallow_dict(self) -> dict:
3094
+ """Serializes the ForeignKeyConstraint into a shallow dictionary of its immediate attributes."""
3095
+ body = {}
3096
+ if self.child_columns: body['child_columns'] = self.child_columns
3097
+ if self.name is not None: body['name'] = self.name
3098
+ if self.parent_columns: body['parent_columns'] = self.parent_columns
3099
+ if self.parent_table is not None: body['parent_table'] = self.parent_table
3100
+ return body
3101
+
2448
3102
  @classmethod
2449
3103
  def from_dict(cls, d: Dict[str, any]) -> ForeignKeyConstraint:
2450
3104
  """Deserializes the ForeignKeyConstraint from a dictionary."""
@@ -2468,6 +3122,12 @@ class FunctionDependency:
2468
3122
  if self.function_full_name is not None: body['function_full_name'] = self.function_full_name
2469
3123
  return body
2470
3124
 
3125
+ def as_shallow_dict(self) -> dict:
3126
+ """Serializes the FunctionDependency into a shallow dictionary of its immediate attributes."""
3127
+ body = {}
3128
+ if self.function_full_name is not None: body['function_full_name'] = self.function_full_name
3129
+ return body
3130
+
2471
3131
  @classmethod
2472
3132
  def from_dict(cls, d: Dict[str, any]) -> FunctionDependency:
2473
3133
  """Deserializes the FunctionDependency from a dictionary."""
@@ -2604,6 +3264,41 @@ class FunctionInfo:
2604
3264
  if self.updated_by is not None: body['updated_by'] = self.updated_by
2605
3265
  return body
2606
3266
 
3267
+ def as_shallow_dict(self) -> dict:
3268
+ """Serializes the FunctionInfo into a shallow dictionary of its immediate attributes."""
3269
+ body = {}
3270
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
3271
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
3272
+ if self.comment is not None: body['comment'] = self.comment
3273
+ if self.created_at is not None: body['created_at'] = self.created_at
3274
+ if self.created_by is not None: body['created_by'] = self.created_by
3275
+ if self.data_type is not None: body['data_type'] = self.data_type
3276
+ if self.external_language is not None: body['external_language'] = self.external_language
3277
+ if self.external_name is not None: body['external_name'] = self.external_name
3278
+ if self.full_data_type is not None: body['full_data_type'] = self.full_data_type
3279
+ if self.full_name is not None: body['full_name'] = self.full_name
3280
+ if self.function_id is not None: body['function_id'] = self.function_id
3281
+ if self.input_params: body['input_params'] = self.input_params
3282
+ if self.is_deterministic is not None: body['is_deterministic'] = self.is_deterministic
3283
+ if self.is_null_call is not None: body['is_null_call'] = self.is_null_call
3284
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
3285
+ if self.name is not None: body['name'] = self.name
3286
+ if self.owner is not None: body['owner'] = self.owner
3287
+ if self.parameter_style is not None: body['parameter_style'] = self.parameter_style
3288
+ if self.properties is not None: body['properties'] = self.properties
3289
+ if self.return_params: body['return_params'] = self.return_params
3290
+ if self.routine_body is not None: body['routine_body'] = self.routine_body
3291
+ if self.routine_definition is not None: body['routine_definition'] = self.routine_definition
3292
+ if self.routine_dependencies: body['routine_dependencies'] = self.routine_dependencies
3293
+ if self.schema_name is not None: body['schema_name'] = self.schema_name
3294
+ if self.security_type is not None: body['security_type'] = self.security_type
3295
+ if self.specific_name is not None: body['specific_name'] = self.specific_name
3296
+ if self.sql_data_access is not None: body['sql_data_access'] = self.sql_data_access
3297
+ if self.sql_path is not None: body['sql_path'] = self.sql_path
3298
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
3299
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
3300
+ return body
3301
+
2607
3302
  @classmethod
2608
3303
  def from_dict(cls, d: Dict[str, any]) -> FunctionInfo:
2609
3304
  """Deserializes the FunctionInfo from a dictionary."""
@@ -2678,7 +3373,6 @@ class FunctionParameterInfo:
2678
3373
  """Full data type spec, SQL/catalogString text."""
2679
3374
 
2680
3375
  type_name: ColumnTypeName
2681
- """Name of type (INT, STRUCT, MAP, etc.)."""
2682
3376
 
2683
3377
  position: int
2684
3378
  """Ordinal position of column (starting at position 0)."""
@@ -2724,6 +3418,23 @@ class FunctionParameterInfo:
2724
3418
  if self.type_text is not None: body['type_text'] = self.type_text
2725
3419
  return body
2726
3420
 
3421
+ def as_shallow_dict(self) -> dict:
3422
+ """Serializes the FunctionParameterInfo into a shallow dictionary of its immediate attributes."""
3423
+ body = {}
3424
+ if self.comment is not None: body['comment'] = self.comment
3425
+ if self.name is not None: body['name'] = self.name
3426
+ if self.parameter_default is not None: body['parameter_default'] = self.parameter_default
3427
+ if self.parameter_mode is not None: body['parameter_mode'] = self.parameter_mode
3428
+ if self.parameter_type is not None: body['parameter_type'] = self.parameter_type
3429
+ if self.position is not None: body['position'] = self.position
3430
+ if self.type_interval_type is not None: body['type_interval_type'] = self.type_interval_type
3431
+ if self.type_json is not None: body['type_json'] = self.type_json
3432
+ if self.type_name is not None: body['type_name'] = self.type_name
3433
+ if self.type_precision is not None: body['type_precision'] = self.type_precision
3434
+ if self.type_scale is not None: body['type_scale'] = self.type_scale
3435
+ if self.type_text is not None: body['type_text'] = self.type_text
3436
+ return body
3437
+
2727
3438
  @classmethod
2728
3439
  def from_dict(cls, d: Dict[str, any]) -> FunctionParameterInfo:
2729
3440
  """Deserializes the FunctionParameterInfo from a dictionary."""
@@ -2752,6 +3463,12 @@ class FunctionParameterInfos:
2752
3463
  if self.parameters: body['parameters'] = [v.as_dict() for v in self.parameters]
2753
3464
  return body
2754
3465
 
3466
+ def as_shallow_dict(self) -> dict:
3467
+ """Serializes the FunctionParameterInfos into a shallow dictionary of its immediate attributes."""
3468
+ body = {}
3469
+ if self.parameters: body['parameters'] = self.parameters
3470
+ return body
3471
+
2755
3472
  @classmethod
2756
3473
  def from_dict(cls, d: Dict[str, any]) -> FunctionParameterInfos:
2757
3474
  """Deserializes the FunctionParameterInfos from a dictionary."""
@@ -2784,44 +3501,21 @@ class GcpOauthToken:
2784
3501
  if self.oauth_token is not None: body['oauth_token'] = self.oauth_token
2785
3502
  return body
2786
3503
 
2787
- @classmethod
2788
- def from_dict(cls, d: Dict[str, any]) -> GcpOauthToken:
2789
- """Deserializes the GcpOauthToken from a dictionary."""
2790
- return cls(oauth_token=d.get('oauth_token', None))
2791
-
2792
-
2793
- @dataclass
2794
- class GcpServiceAccountKey:
2795
- """GCP long-lived credential. GCP Service Account."""
2796
-
2797
- email: Optional[str] = None
2798
- """The email of the service account."""
2799
-
2800
- private_key: Optional[str] = None
2801
- """The service account's RSA private key."""
2802
-
2803
- private_key_id: Optional[str] = None
2804
- """The ID of the service account's private key."""
2805
-
2806
- def as_dict(self) -> dict:
2807
- """Serializes the GcpServiceAccountKey into a dictionary suitable for use as a JSON request body."""
3504
+ def as_shallow_dict(self) -> dict:
3505
+ """Serializes the GcpOauthToken into a shallow dictionary of its immediate attributes."""
2808
3506
  body = {}
2809
- if self.email is not None: body['email'] = self.email
2810
- if self.private_key is not None: body['private_key'] = self.private_key
2811
- if self.private_key_id is not None: body['private_key_id'] = self.private_key_id
3507
+ if self.oauth_token is not None: body['oauth_token'] = self.oauth_token
2812
3508
  return body
2813
3509
 
2814
3510
  @classmethod
2815
- def from_dict(cls, d: Dict[str, any]) -> GcpServiceAccountKey:
2816
- """Deserializes the GcpServiceAccountKey from a dictionary."""
2817
- return cls(email=d.get('email', None),
2818
- private_key=d.get('private_key', None),
2819
- private_key_id=d.get('private_key_id', None))
3511
+ def from_dict(cls, d: Dict[str, any]) -> GcpOauthToken:
3512
+ """Deserializes the GcpOauthToken from a dictionary."""
3513
+ return cls(oauth_token=d.get('oauth_token', None))
2820
3514
 
2821
3515
 
2822
3516
  @dataclass
2823
3517
  class GenerateTemporaryServiceCredentialAzureOptions:
2824
- """Options to customize the requested temporary credential"""
3518
+ """The Azure cloud options to customize the requested temporary credential"""
2825
3519
 
2826
3520
  resources: Optional[List[str]] = None
2827
3521
  """The resources to which the temporary Azure credential should apply. These resources are the
@@ -2834,25 +3528,70 @@ class GenerateTemporaryServiceCredentialAzureOptions:
2834
3528
  if self.resources: body['resources'] = [v for v in self.resources]
2835
3529
  return body
2836
3530
 
3531
+ def as_shallow_dict(self) -> dict:
3532
+ """Serializes the GenerateTemporaryServiceCredentialAzureOptions into a shallow dictionary of its immediate attributes."""
3533
+ body = {}
3534
+ if self.resources: body['resources'] = self.resources
3535
+ return body
3536
+
2837
3537
  @classmethod
2838
3538
  def from_dict(cls, d: Dict[str, any]) -> GenerateTemporaryServiceCredentialAzureOptions:
2839
3539
  """Deserializes the GenerateTemporaryServiceCredentialAzureOptions from a dictionary."""
2840
3540
  return cls(resources=d.get('resources', None))
2841
3541
 
2842
3542
 
3543
+ @dataclass
3544
+ class GenerateTemporaryServiceCredentialGcpOptions:
3545
+ """The GCP cloud options to customize the requested temporary credential"""
3546
+
3547
+ scopes: Optional[List[str]] = None
3548
+ """The scopes to which the temporary GCP credential should apply. These resources are the scopes
3549
+ that are passed to the token provider (see
3550
+ https://google-auth.readthedocs.io/en/latest/reference/google.auth.html#google.auth.credentials.Credentials)"""
3551
+
3552
+ def as_dict(self) -> dict:
3553
+ """Serializes the GenerateTemporaryServiceCredentialGcpOptions into a dictionary suitable for use as a JSON request body."""
3554
+ body = {}
3555
+ if self.scopes: body['scopes'] = [v for v in self.scopes]
3556
+ return body
3557
+
3558
+ def as_shallow_dict(self) -> dict:
3559
+ """Serializes the GenerateTemporaryServiceCredentialGcpOptions into a shallow dictionary of its immediate attributes."""
3560
+ body = {}
3561
+ if self.scopes: body['scopes'] = self.scopes
3562
+ return body
3563
+
3564
+ @classmethod
3565
+ def from_dict(cls, d: Dict[str, any]) -> GenerateTemporaryServiceCredentialGcpOptions:
3566
+ """Deserializes the GenerateTemporaryServiceCredentialGcpOptions from a dictionary."""
3567
+ return cls(scopes=d.get('scopes', None))
3568
+
3569
+
2843
3570
  @dataclass
2844
3571
  class GenerateTemporaryServiceCredentialRequest:
2845
3572
  credential_name: str
2846
3573
  """The name of the service credential used to generate a temporary credential"""
2847
3574
 
2848
3575
  azure_options: Optional[GenerateTemporaryServiceCredentialAzureOptions] = None
2849
- """Options to customize the requested temporary credential"""
3576
+ """The Azure cloud options to customize the requested temporary credential"""
3577
+
3578
+ gcp_options: Optional[GenerateTemporaryServiceCredentialGcpOptions] = None
3579
+ """The GCP cloud options to customize the requested temporary credential"""
2850
3580
 
2851
3581
  def as_dict(self) -> dict:
2852
3582
  """Serializes the GenerateTemporaryServiceCredentialRequest into a dictionary suitable for use as a JSON request body."""
2853
3583
  body = {}
2854
3584
  if self.azure_options: body['azure_options'] = self.azure_options.as_dict()
2855
3585
  if self.credential_name is not None: body['credential_name'] = self.credential_name
3586
+ if self.gcp_options: body['gcp_options'] = self.gcp_options.as_dict()
3587
+ return body
3588
+
3589
+ def as_shallow_dict(self) -> dict:
3590
+ """Serializes the GenerateTemporaryServiceCredentialRequest into a shallow dictionary of its immediate attributes."""
3591
+ body = {}
3592
+ if self.azure_options: body['azure_options'] = self.azure_options
3593
+ if self.credential_name is not None: body['credential_name'] = self.credential_name
3594
+ if self.gcp_options: body['gcp_options'] = self.gcp_options
2856
3595
  return body
2857
3596
 
2858
3597
  @classmethod
@@ -2860,7 +3599,8 @@ class GenerateTemporaryServiceCredentialRequest:
2860
3599
  """Deserializes the GenerateTemporaryServiceCredentialRequest from a dictionary."""
2861
3600
  return cls(azure_options=_from_dict(d, 'azure_options',
2862
3601
  GenerateTemporaryServiceCredentialAzureOptions),
2863
- credential_name=d.get('credential_name', None))
3602
+ credential_name=d.get('credential_name', None),
3603
+ gcp_options=_from_dict(d, 'gcp_options', GenerateTemporaryServiceCredentialGcpOptions))
2864
3604
 
2865
3605
 
2866
3606
  @dataclass
@@ -2880,6 +3620,13 @@ class GenerateTemporaryTableCredentialRequest:
2880
3620
  if self.table_id is not None: body['table_id'] = self.table_id
2881
3621
  return body
2882
3622
 
3623
+ def as_shallow_dict(self) -> dict:
3624
+ """Serializes the GenerateTemporaryTableCredentialRequest into a shallow dictionary of its immediate attributes."""
3625
+ body = {}
3626
+ if self.operation is not None: body['operation'] = self.operation
3627
+ if self.table_id is not None: body['table_id'] = self.table_id
3628
+ return body
3629
+
2883
3630
  @classmethod
2884
3631
  def from_dict(cls, d: Dict[str, any]) -> GenerateTemporaryTableCredentialRequest:
2885
3632
  """Deserializes the GenerateTemporaryTableCredentialRequest from a dictionary."""
@@ -2929,6 +3676,18 @@ class GenerateTemporaryTableCredentialResponse:
2929
3676
  if self.url is not None: body['url'] = self.url
2930
3677
  return body
2931
3678
 
3679
+ def as_shallow_dict(self) -> dict:
3680
+ """Serializes the GenerateTemporaryTableCredentialResponse into a shallow dictionary of its immediate attributes."""
3681
+ body = {}
3682
+ if self.aws_temp_credentials: body['aws_temp_credentials'] = self.aws_temp_credentials
3683
+ if self.azure_aad: body['azure_aad'] = self.azure_aad
3684
+ if self.azure_user_delegation_sas: body['azure_user_delegation_sas'] = self.azure_user_delegation_sas
3685
+ if self.expiration_time is not None: body['expiration_time'] = self.expiration_time
3686
+ if self.gcp_oauth_token: body['gcp_oauth_token'] = self.gcp_oauth_token
3687
+ if self.r2_temp_credentials: body['r2_temp_credentials'] = self.r2_temp_credentials
3688
+ if self.url is not None: body['url'] = self.url
3689
+ return body
3690
+
2932
3691
  @classmethod
2933
3692
  def from_dict(cls, d: Dict[str, any]) -> GenerateTemporaryTableCredentialResponse:
2934
3693
  """Deserializes the GenerateTemporaryTableCredentialResponse from a dictionary."""
@@ -3042,6 +3801,38 @@ class GetMetastoreSummaryResponse:
3042
3801
  if self.updated_by is not None: body['updated_by'] = self.updated_by
3043
3802
  return body
3044
3803
 
3804
+ def as_shallow_dict(self) -> dict:
3805
+ """Serializes the GetMetastoreSummaryResponse into a shallow dictionary of its immediate attributes."""
3806
+ body = {}
3807
+ if self.cloud is not None: body['cloud'] = self.cloud
3808
+ if self.created_at is not None: body['created_at'] = self.created_at
3809
+ if self.created_by is not None: body['created_by'] = self.created_by
3810
+ if self.default_data_access_config_id is not None:
3811
+ body['default_data_access_config_id'] = self.default_data_access_config_id
3812
+ if self.delta_sharing_organization_name is not None:
3813
+ body['delta_sharing_organization_name'] = self.delta_sharing_organization_name
3814
+ if self.delta_sharing_recipient_token_lifetime_in_seconds is not None:
3815
+ body[
3816
+ 'delta_sharing_recipient_token_lifetime_in_seconds'] = self.delta_sharing_recipient_token_lifetime_in_seconds
3817
+ if self.delta_sharing_scope is not None: body['delta_sharing_scope'] = self.delta_sharing_scope
3818
+ if self.external_access_enabled is not None:
3819
+ body['external_access_enabled'] = self.external_access_enabled
3820
+ if self.global_metastore_id is not None: body['global_metastore_id'] = self.global_metastore_id
3821
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
3822
+ if self.name is not None: body['name'] = self.name
3823
+ if self.owner is not None: body['owner'] = self.owner
3824
+ if self.privilege_model_version is not None:
3825
+ body['privilege_model_version'] = self.privilege_model_version
3826
+ if self.region is not None: body['region'] = self.region
3827
+ if self.storage_root is not None: body['storage_root'] = self.storage_root
3828
+ if self.storage_root_credential_id is not None:
3829
+ body['storage_root_credential_id'] = self.storage_root_credential_id
3830
+ if self.storage_root_credential_name is not None:
3831
+ body['storage_root_credential_name'] = self.storage_root_credential_name
3832
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
3833
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
3834
+ return body
3835
+
3045
3836
  @classmethod
3046
3837
  def from_dict(cls, d: Dict[str, any]) -> GetMetastoreSummaryResponse:
3047
3838
  """Deserializes the GetMetastoreSummaryResponse from a dictionary."""
@@ -3086,6 +3877,12 @@ class GetQuotaResponse:
3086
3877
  if self.quota_info: body['quota_info'] = self.quota_info.as_dict()
3087
3878
  return body
3088
3879
 
3880
+ def as_shallow_dict(self) -> dict:
3881
+ """Serializes the GetQuotaResponse into a shallow dictionary of its immediate attributes."""
3882
+ body = {}
3883
+ if self.quota_info: body['quota_info'] = self.quota_info
3884
+ return body
3885
+
3089
3886
  @classmethod
3090
3887
  def from_dict(cls, d: Dict[str, any]) -> GetQuotaResponse:
3091
3888
  """Deserializes the GetQuotaResponse from a dictionary."""
@@ -3110,6 +3907,12 @@ class ListAccountMetastoreAssignmentsResponse:
3110
3907
  if self.workspace_ids: body['workspace_ids'] = [v for v in self.workspace_ids]
3111
3908
  return body
3112
3909
 
3910
+ def as_shallow_dict(self) -> dict:
3911
+ """Serializes the ListAccountMetastoreAssignmentsResponse into a shallow dictionary of its immediate attributes."""
3912
+ body = {}
3913
+ if self.workspace_ids: body['workspace_ids'] = self.workspace_ids
3914
+ return body
3915
+
3113
3916
  @classmethod
3114
3917
  def from_dict(cls, d: Dict[str, any]) -> ListAccountMetastoreAssignmentsResponse:
3115
3918
  """Deserializes the ListAccountMetastoreAssignmentsResponse from a dictionary."""
@@ -3128,6 +3931,12 @@ class ListAccountStorageCredentialsResponse:
3128
3931
  body['storage_credentials'] = [v.as_dict() for v in self.storage_credentials]
3129
3932
  return body
3130
3933
 
3934
+ def as_shallow_dict(self) -> dict:
3935
+ """Serializes the ListAccountStorageCredentialsResponse into a shallow dictionary of its immediate attributes."""
3936
+ body = {}
3937
+ if self.storage_credentials: body['storage_credentials'] = self.storage_credentials
3938
+ return body
3939
+
3131
3940
  @classmethod
3132
3941
  def from_dict(cls, d: Dict[str, any]) -> ListAccountStorageCredentialsResponse:
3133
3942
  """Deserializes the ListAccountStorageCredentialsResponse from a dictionary."""
@@ -3150,6 +3959,13 @@ class ListCatalogsResponse:
3150
3959
  if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
3151
3960
  return body
3152
3961
 
3962
+ def as_shallow_dict(self) -> dict:
3963
+ """Serializes the ListCatalogsResponse into a shallow dictionary of its immediate attributes."""
3964
+ body = {}
3965
+ if self.catalogs: body['catalogs'] = self.catalogs
3966
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
3967
+ return body
3968
+
3153
3969
  @classmethod
3154
3970
  def from_dict(cls, d: Dict[str, any]) -> ListCatalogsResponse:
3155
3971
  """Deserializes the ListCatalogsResponse from a dictionary."""
@@ -3173,6 +3989,13 @@ class ListConnectionsResponse:
3173
3989
  if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
3174
3990
  return body
3175
3991
 
3992
+ def as_shallow_dict(self) -> dict:
3993
+ """Serializes the ListConnectionsResponse into a shallow dictionary of its immediate attributes."""
3994
+ body = {}
3995
+ if self.connections: body['connections'] = self.connections
3996
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
3997
+ return body
3998
+
3176
3999
  @classmethod
3177
4000
  def from_dict(cls, d: Dict[str, any]) -> ListConnectionsResponse:
3178
4001
  """Deserializes the ListConnectionsResponse from a dictionary."""
@@ -3195,6 +4018,13 @@ class ListCredentialsResponse:
3195
4018
  if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
3196
4019
  return body
3197
4020
 
4021
+ def as_shallow_dict(self) -> dict:
4022
+ """Serializes the ListCredentialsResponse into a shallow dictionary of its immediate attributes."""
4023
+ body = {}
4024
+ if self.credentials: body['credentials'] = self.credentials
4025
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4026
+ return body
4027
+
3198
4028
  @classmethod
3199
4029
  def from_dict(cls, d: Dict[str, any]) -> ListCredentialsResponse:
3200
4030
  """Deserializes the ListCredentialsResponse from a dictionary."""
@@ -3219,6 +4049,13 @@ class ListExternalLocationsResponse:
3219
4049
  if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
3220
4050
  return body
3221
4051
 
4052
+ def as_shallow_dict(self) -> dict:
4053
+ """Serializes the ListExternalLocationsResponse into a shallow dictionary of its immediate attributes."""
4054
+ body = {}
4055
+ if self.external_locations: body['external_locations'] = self.external_locations
4056
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4057
+ return body
4058
+
3222
4059
  @classmethod
3223
4060
  def from_dict(cls, d: Dict[str, any]) -> ListExternalLocationsResponse:
3224
4061
  """Deserializes the ListExternalLocationsResponse from a dictionary."""
@@ -3242,6 +4079,13 @@ class ListFunctionsResponse:
3242
4079
  if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
3243
4080
  return body
3244
4081
 
4082
+ def as_shallow_dict(self) -> dict:
4083
+ """Serializes the ListFunctionsResponse into a shallow dictionary of its immediate attributes."""
4084
+ body = {}
4085
+ if self.functions: body['functions'] = self.functions
4086
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4087
+ return body
4088
+
3245
4089
  @classmethod
3246
4090
  def from_dict(cls, d: Dict[str, any]) -> ListFunctionsResponse:
3247
4091
  """Deserializes the ListFunctionsResponse from a dictionary."""
@@ -3260,6 +4104,12 @@ class ListMetastoresResponse:
3260
4104
  if self.metastores: body['metastores'] = [v.as_dict() for v in self.metastores]
3261
4105
  return body
3262
4106
 
4107
+ def as_shallow_dict(self) -> dict:
4108
+ """Serializes the ListMetastoresResponse into a shallow dictionary of its immediate attributes."""
4109
+ body = {}
4110
+ if self.metastores: body['metastores'] = self.metastores
4111
+ return body
4112
+
3263
4113
  @classmethod
3264
4114
  def from_dict(cls, d: Dict[str, any]) -> ListMetastoresResponse:
3265
4115
  """Deserializes the ListMetastoresResponse from a dictionary."""
@@ -3281,6 +4131,13 @@ class ListModelVersionsResponse:
3281
4131
  if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
3282
4132
  return body
3283
4133
 
4134
+ def as_shallow_dict(self) -> dict:
4135
+ """Serializes the ListModelVersionsResponse into a shallow dictionary of its immediate attributes."""
4136
+ body = {}
4137
+ if self.model_versions: body['model_versions'] = self.model_versions
4138
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4139
+ return body
4140
+
3284
4141
  @classmethod
3285
4142
  def from_dict(cls, d: Dict[str, any]) -> ListModelVersionsResponse:
3286
4143
  """Deserializes the ListModelVersionsResponse from a dictionary."""
@@ -3304,6 +4161,13 @@ class ListQuotasResponse:
3304
4161
  if self.quotas: body['quotas'] = [v.as_dict() for v in self.quotas]
3305
4162
  return body
3306
4163
 
4164
+ def as_shallow_dict(self) -> dict:
4165
+ """Serializes the ListQuotasResponse into a shallow dictionary of its immediate attributes."""
4166
+ body = {}
4167
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4168
+ if self.quotas: body['quotas'] = self.quotas
4169
+ return body
4170
+
3307
4171
  @classmethod
3308
4172
  def from_dict(cls, d: Dict[str, any]) -> ListQuotasResponse:
3309
4173
  """Deserializes the ListQuotasResponse from a dictionary."""
@@ -3326,6 +4190,13 @@ class ListRegisteredModelsResponse:
3326
4190
  if self.registered_models: body['registered_models'] = [v.as_dict() for v in self.registered_models]
3327
4191
  return body
3328
4192
 
4193
+ def as_shallow_dict(self) -> dict:
4194
+ """Serializes the ListRegisteredModelsResponse into a shallow dictionary of its immediate attributes."""
4195
+ body = {}
4196
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4197
+ if self.registered_models: body['registered_models'] = self.registered_models
4198
+ return body
4199
+
3329
4200
  @classmethod
3330
4201
  def from_dict(cls, d: Dict[str, any]) -> ListRegisteredModelsResponse:
3331
4202
  """Deserializes the ListRegisteredModelsResponse from a dictionary."""
@@ -3349,6 +4220,13 @@ class ListSchemasResponse:
3349
4220
  if self.schemas: body['schemas'] = [v.as_dict() for v in self.schemas]
3350
4221
  return body
3351
4222
 
4223
+ def as_shallow_dict(self) -> dict:
4224
+ """Serializes the ListSchemasResponse into a shallow dictionary of its immediate attributes."""
4225
+ body = {}
4226
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4227
+ if self.schemas: body['schemas'] = self.schemas
4228
+ return body
4229
+
3352
4230
  @classmethod
3353
4231
  def from_dict(cls, d: Dict[str, any]) -> ListSchemasResponse:
3354
4232
  """Deserializes the ListSchemasResponse from a dictionary."""
@@ -3372,6 +4250,13 @@ class ListStorageCredentialsResponse:
3372
4250
  body['storage_credentials'] = [v.as_dict() for v in self.storage_credentials]
3373
4251
  return body
3374
4252
 
4253
+ def as_shallow_dict(self) -> dict:
4254
+ """Serializes the ListStorageCredentialsResponse into a shallow dictionary of its immediate attributes."""
4255
+ body = {}
4256
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4257
+ if self.storage_credentials: body['storage_credentials'] = self.storage_credentials
4258
+ return body
4259
+
3375
4260
  @classmethod
3376
4261
  def from_dict(cls, d: Dict[str, any]) -> ListStorageCredentialsResponse:
3377
4262
  """Deserializes the ListStorageCredentialsResponse from a dictionary."""
@@ -3395,6 +4280,13 @@ class ListSystemSchemasResponse:
3395
4280
  if self.schemas: body['schemas'] = [v.as_dict() for v in self.schemas]
3396
4281
  return body
3397
4282
 
4283
+ def as_shallow_dict(self) -> dict:
4284
+ """Serializes the ListSystemSchemasResponse into a shallow dictionary of its immediate attributes."""
4285
+ body = {}
4286
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4287
+ if self.schemas: body['schemas'] = self.schemas
4288
+ return body
4289
+
3398
4290
  @classmethod
3399
4291
  def from_dict(cls, d: Dict[str, any]) -> ListSystemSchemasResponse:
3400
4292
  """Deserializes the ListSystemSchemasResponse from a dictionary."""
@@ -3418,6 +4310,13 @@ class ListTableSummariesResponse:
3418
4310
  if self.tables: body['tables'] = [v.as_dict() for v in self.tables]
3419
4311
  return body
3420
4312
 
4313
+ def as_shallow_dict(self) -> dict:
4314
+ """Serializes the ListTableSummariesResponse into a shallow dictionary of its immediate attributes."""
4315
+ body = {}
4316
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4317
+ if self.tables: body['tables'] = self.tables
4318
+ return body
4319
+
3421
4320
  @classmethod
3422
4321
  def from_dict(cls, d: Dict[str, any]) -> ListTableSummariesResponse:
3423
4322
  """Deserializes the ListTableSummariesResponse from a dictionary."""
@@ -3441,6 +4340,13 @@ class ListTablesResponse:
3441
4340
  if self.tables: body['tables'] = [v.as_dict() for v in self.tables]
3442
4341
  return body
3443
4342
 
4343
+ def as_shallow_dict(self) -> dict:
4344
+ """Serializes the ListTablesResponse into a shallow dictionary of its immediate attributes."""
4345
+ body = {}
4346
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4347
+ if self.tables: body['tables'] = self.tables
4348
+ return body
4349
+
3444
4350
  @classmethod
3445
4351
  def from_dict(cls, d: Dict[str, any]) -> ListTablesResponse:
3446
4352
  """Deserializes the ListTablesResponse from a dictionary."""
@@ -3464,6 +4370,13 @@ class ListVolumesResponseContent:
3464
4370
  if self.volumes: body['volumes'] = [v.as_dict() for v in self.volumes]
3465
4371
  return body
3466
4372
 
4373
+ def as_shallow_dict(self) -> dict:
4374
+ """Serializes the ListVolumesResponseContent into a shallow dictionary of its immediate attributes."""
4375
+ body = {}
4376
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
4377
+ if self.volumes: body['volumes'] = self.volumes
4378
+ return body
4379
+
3467
4380
  @classmethod
3468
4381
  def from_dict(cls, d: Dict[str, any]) -> ListVolumesResponseContent:
3469
4382
  """Deserializes the ListVolumesResponseContent from a dictionary."""
@@ -3496,6 +4409,14 @@ class MetastoreAssignment:
3496
4409
  if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
3497
4410
  return body
3498
4411
 
4412
+ def as_shallow_dict(self) -> dict:
4413
+ """Serializes the MetastoreAssignment into a shallow dictionary of its immediate attributes."""
4414
+ body = {}
4415
+ if self.default_catalog_name is not None: body['default_catalog_name'] = self.default_catalog_name
4416
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
4417
+ if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
4418
+ return body
4419
+
3499
4420
  @classmethod
3500
4421
  def from_dict(cls, d: Dict[str, any]) -> MetastoreAssignment:
3501
4422
  """Deserializes the MetastoreAssignment from a dictionary."""
@@ -3577,7 +4498,39 @@ class MetastoreInfo:
3577
4498
  if self.delta_sharing_recipient_token_lifetime_in_seconds is not None:
3578
4499
  body[
3579
4500
  'delta_sharing_recipient_token_lifetime_in_seconds'] = self.delta_sharing_recipient_token_lifetime_in_seconds
3580
- if self.delta_sharing_scope is not None: body['delta_sharing_scope'] = self.delta_sharing_scope.value
4501
+ if self.delta_sharing_scope is not None: body['delta_sharing_scope'] = self.delta_sharing_scope.value
4502
+ if self.external_access_enabled is not None:
4503
+ body['external_access_enabled'] = self.external_access_enabled
4504
+ if self.global_metastore_id is not None: body['global_metastore_id'] = self.global_metastore_id
4505
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
4506
+ if self.name is not None: body['name'] = self.name
4507
+ if self.owner is not None: body['owner'] = self.owner
4508
+ if self.privilege_model_version is not None:
4509
+ body['privilege_model_version'] = self.privilege_model_version
4510
+ if self.region is not None: body['region'] = self.region
4511
+ if self.storage_root is not None: body['storage_root'] = self.storage_root
4512
+ if self.storage_root_credential_id is not None:
4513
+ body['storage_root_credential_id'] = self.storage_root_credential_id
4514
+ if self.storage_root_credential_name is not None:
4515
+ body['storage_root_credential_name'] = self.storage_root_credential_name
4516
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
4517
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
4518
+ return body
4519
+
4520
+ def as_shallow_dict(self) -> dict:
4521
+ """Serializes the MetastoreInfo into a shallow dictionary of its immediate attributes."""
4522
+ body = {}
4523
+ if self.cloud is not None: body['cloud'] = self.cloud
4524
+ if self.created_at is not None: body['created_at'] = self.created_at
4525
+ if self.created_by is not None: body['created_by'] = self.created_by
4526
+ if self.default_data_access_config_id is not None:
4527
+ body['default_data_access_config_id'] = self.default_data_access_config_id
4528
+ if self.delta_sharing_organization_name is not None:
4529
+ body['delta_sharing_organization_name'] = self.delta_sharing_organization_name
4530
+ if self.delta_sharing_recipient_token_lifetime_in_seconds is not None:
4531
+ body[
4532
+ 'delta_sharing_recipient_token_lifetime_in_seconds'] = self.delta_sharing_recipient_token_lifetime_in_seconds
4533
+ if self.delta_sharing_scope is not None: body['delta_sharing_scope'] = self.delta_sharing_scope
3581
4534
  if self.external_access_enabled is not None:
3582
4535
  body['external_access_enabled'] = self.external_access_enabled
3583
4536
  if self.global_metastore_id is not None: body['global_metastore_id'] = self.global_metastore_id
@@ -3715,6 +4668,31 @@ class ModelVersionInfo:
3715
4668
  if self.version is not None: body['version'] = self.version
3716
4669
  return body
3717
4670
 
4671
+ def as_shallow_dict(self) -> dict:
4672
+ """Serializes the ModelVersionInfo into a shallow dictionary of its immediate attributes."""
4673
+ body = {}
4674
+ if self.aliases: body['aliases'] = self.aliases
4675
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
4676
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
4677
+ if self.comment is not None: body['comment'] = self.comment
4678
+ if self.created_at is not None: body['created_at'] = self.created_at
4679
+ if self.created_by is not None: body['created_by'] = self.created_by
4680
+ if self.id is not None: body['id'] = self.id
4681
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
4682
+ if self.model_name is not None: body['model_name'] = self.model_name
4683
+ if self.model_version_dependencies:
4684
+ body['model_version_dependencies'] = self.model_version_dependencies
4685
+ if self.run_id is not None: body['run_id'] = self.run_id
4686
+ if self.run_workspace_id is not None: body['run_workspace_id'] = self.run_workspace_id
4687
+ if self.schema_name is not None: body['schema_name'] = self.schema_name
4688
+ if self.source is not None: body['source'] = self.source
4689
+ if self.status is not None: body['status'] = self.status
4690
+ if self.storage_location is not None: body['storage_location'] = self.storage_location
4691
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
4692
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
4693
+ if self.version is not None: body['version'] = self.version
4694
+ return body
4695
+
3718
4696
  @classmethod
3719
4697
  def from_dict(cls, d: Dict[str, any]) -> ModelVersionInfo:
3720
4698
  """Deserializes the ModelVersionInfo from a dictionary."""
@@ -3771,6 +4749,15 @@ class MonitorCronSchedule:
3771
4749
  if self.timezone_id is not None: body['timezone_id'] = self.timezone_id
3772
4750
  return body
3773
4751
 
4752
+ def as_shallow_dict(self) -> dict:
4753
+ """Serializes the MonitorCronSchedule into a shallow dictionary of its immediate attributes."""
4754
+ body = {}
4755
+ if self.pause_status is not None: body['pause_status'] = self.pause_status
4756
+ if self.quartz_cron_expression is not None:
4757
+ body['quartz_cron_expression'] = self.quartz_cron_expression
4758
+ if self.timezone_id is not None: body['timezone_id'] = self.timezone_id
4759
+ return body
4760
+
3774
4761
  @classmethod
3775
4762
  def from_dict(cls, d: Dict[str, any]) -> MonitorCronSchedule:
3776
4763
  """Deserializes the MonitorCronSchedule from a dictionary."""
@@ -3797,6 +4784,12 @@ class MonitorDataClassificationConfig:
3797
4784
  if self.enabled is not None: body['enabled'] = self.enabled
3798
4785
  return body
3799
4786
 
4787
+ def as_shallow_dict(self) -> dict:
4788
+ """Serializes the MonitorDataClassificationConfig into a shallow dictionary of its immediate attributes."""
4789
+ body = {}
4790
+ if self.enabled is not None: body['enabled'] = self.enabled
4791
+ return body
4792
+
3800
4793
  @classmethod
3801
4794
  def from_dict(cls, d: Dict[str, any]) -> MonitorDataClassificationConfig:
3802
4795
  """Deserializes the MonitorDataClassificationConfig from a dictionary."""
@@ -3815,6 +4808,12 @@ class MonitorDestination:
3815
4808
  if self.email_addresses: body['email_addresses'] = [v for v in self.email_addresses]
3816
4809
  return body
3817
4810
 
4811
+ def as_shallow_dict(self) -> dict:
4812
+ """Serializes the MonitorDestination into a shallow dictionary of its immediate attributes."""
4813
+ body = {}
4814
+ if self.email_addresses: body['email_addresses'] = self.email_addresses
4815
+ return body
4816
+
3818
4817
  @classmethod
3819
4818
  def from_dict(cls, d: Dict[str, any]) -> MonitorDestination:
3820
4819
  """Deserializes the MonitorDestination from a dictionary."""
@@ -3866,6 +4865,18 @@ class MonitorInferenceLog:
3866
4865
  if self.timestamp_col is not None: body['timestamp_col'] = self.timestamp_col
3867
4866
  return body
3868
4867
 
4868
+ def as_shallow_dict(self) -> dict:
4869
+ """Serializes the MonitorInferenceLog into a shallow dictionary of its immediate attributes."""
4870
+ body = {}
4871
+ if self.granularities: body['granularities'] = self.granularities
4872
+ if self.label_col is not None: body['label_col'] = self.label_col
4873
+ if self.model_id_col is not None: body['model_id_col'] = self.model_id_col
4874
+ if self.prediction_col is not None: body['prediction_col'] = self.prediction_col
4875
+ if self.prediction_proba_col is not None: body['prediction_proba_col'] = self.prediction_proba_col
4876
+ if self.problem_type is not None: body['problem_type'] = self.problem_type
4877
+ if self.timestamp_col is not None: body['timestamp_col'] = self.timestamp_col
4878
+ return body
4879
+
3869
4880
  @classmethod
3870
4881
  def from_dict(cls, d: Dict[str, any]) -> MonitorInferenceLog:
3871
4882
  """Deserializes the MonitorInferenceLog from a dictionary."""
@@ -3977,6 +4988,33 @@ class MonitorInfo:
3977
4988
  if self.time_series: body['time_series'] = self.time_series.as_dict()
3978
4989
  return body
3979
4990
 
4991
+ def as_shallow_dict(self) -> dict:
4992
+ """Serializes the MonitorInfo into a shallow dictionary of its immediate attributes."""
4993
+ body = {}
4994
+ if self.assets_dir is not None: body['assets_dir'] = self.assets_dir
4995
+ if self.baseline_table_name is not None: body['baseline_table_name'] = self.baseline_table_name
4996
+ if self.custom_metrics: body['custom_metrics'] = self.custom_metrics
4997
+ if self.dashboard_id is not None: body['dashboard_id'] = self.dashboard_id
4998
+ if self.data_classification_config:
4999
+ body['data_classification_config'] = self.data_classification_config
5000
+ if self.drift_metrics_table_name is not None:
5001
+ body['drift_metrics_table_name'] = self.drift_metrics_table_name
5002
+ if self.inference_log: body['inference_log'] = self.inference_log
5003
+ if self.latest_monitor_failure_msg is not None:
5004
+ body['latest_monitor_failure_msg'] = self.latest_monitor_failure_msg
5005
+ if self.monitor_version is not None: body['monitor_version'] = self.monitor_version
5006
+ if self.notifications: body['notifications'] = self.notifications
5007
+ if self.output_schema_name is not None: body['output_schema_name'] = self.output_schema_name
5008
+ if self.profile_metrics_table_name is not None:
5009
+ body['profile_metrics_table_name'] = self.profile_metrics_table_name
5010
+ if self.schedule: body['schedule'] = self.schedule
5011
+ if self.slicing_exprs: body['slicing_exprs'] = self.slicing_exprs
5012
+ if self.snapshot: body['snapshot'] = self.snapshot
5013
+ if self.status is not None: body['status'] = self.status
5014
+ if self.table_name is not None: body['table_name'] = self.table_name
5015
+ if self.time_series: body['time_series'] = self.time_series
5016
+ return body
5017
+
3980
5018
  @classmethod
3981
5019
  def from_dict(cls, d: Dict[str, any]) -> MonitorInfo:
3982
5020
  """Deserializes the MonitorInfo from a dictionary."""
@@ -4048,6 +5086,16 @@ class MonitorMetric:
4048
5086
  if self.type is not None: body['type'] = self.type.value
4049
5087
  return body
4050
5088
 
5089
+ def as_shallow_dict(self) -> dict:
5090
+ """Serializes the MonitorMetric into a shallow dictionary of its immediate attributes."""
5091
+ body = {}
5092
+ if self.definition is not None: body['definition'] = self.definition
5093
+ if self.input_columns: body['input_columns'] = self.input_columns
5094
+ if self.name is not None: body['name'] = self.name
5095
+ if self.output_data_type is not None: body['output_data_type'] = self.output_data_type
5096
+ if self.type is not None: body['type'] = self.type
5097
+ return body
5098
+
4051
5099
  @classmethod
4052
5100
  def from_dict(cls, d: Dict[str, any]) -> MonitorMetric:
4053
5101
  """Deserializes the MonitorMetric from a dictionary."""
@@ -4088,6 +5136,14 @@ class MonitorNotifications:
4088
5136
  body['on_new_classification_tag_detected'] = self.on_new_classification_tag_detected.as_dict()
4089
5137
  return body
4090
5138
 
5139
+ def as_shallow_dict(self) -> dict:
5140
+ """Serializes the MonitorNotifications into a shallow dictionary of its immediate attributes."""
5141
+ body = {}
5142
+ if self.on_failure: body['on_failure'] = self.on_failure
5143
+ if self.on_new_classification_tag_detected:
5144
+ body['on_new_classification_tag_detected'] = self.on_new_classification_tag_detected
5145
+ return body
5146
+
4091
5147
  @classmethod
4092
5148
  def from_dict(cls, d: Dict[str, any]) -> MonitorNotifications:
4093
5149
  """Deserializes the MonitorNotifications from a dictionary."""
@@ -4127,6 +5183,17 @@ class MonitorRefreshInfo:
4127
5183
  if self.trigger is not None: body['trigger'] = self.trigger.value
4128
5184
  return body
4129
5185
 
5186
+ def as_shallow_dict(self) -> dict:
5187
+ """Serializes the MonitorRefreshInfo into a shallow dictionary of its immediate attributes."""
5188
+ body = {}
5189
+ if self.end_time_ms is not None: body['end_time_ms'] = self.end_time_ms
5190
+ if self.message is not None: body['message'] = self.message
5191
+ if self.refresh_id is not None: body['refresh_id'] = self.refresh_id
5192
+ if self.start_time_ms is not None: body['start_time_ms'] = self.start_time_ms
5193
+ if self.state is not None: body['state'] = self.state
5194
+ if self.trigger is not None: body['trigger'] = self.trigger
5195
+ return body
5196
+
4130
5197
  @classmethod
4131
5198
  def from_dict(cls, d: Dict[str, any]) -> MonitorRefreshInfo:
4132
5199
  """Deserializes the MonitorRefreshInfo from a dictionary."""
@@ -4166,6 +5233,12 @@ class MonitorRefreshListResponse:
4166
5233
  if self.refreshes: body['refreshes'] = [v.as_dict() for v in self.refreshes]
4167
5234
  return body
4168
5235
 
5236
+ def as_shallow_dict(self) -> dict:
5237
+ """Serializes the MonitorRefreshListResponse into a shallow dictionary of its immediate attributes."""
5238
+ body = {}
5239
+ if self.refreshes: body['refreshes'] = self.refreshes
5240
+ return body
5241
+
4169
5242
  @classmethod
4170
5243
  def from_dict(cls, d: Dict[str, any]) -> MonitorRefreshListResponse:
4171
5244
  """Deserializes the MonitorRefreshListResponse from a dictionary."""
@@ -4180,6 +5253,11 @@ class MonitorSnapshot:
4180
5253
  body = {}
4181
5254
  return body
4182
5255
 
5256
+ def as_shallow_dict(self) -> dict:
5257
+ """Serializes the MonitorSnapshot into a shallow dictionary of its immediate attributes."""
5258
+ body = {}
5259
+ return body
5260
+
4183
5261
  @classmethod
4184
5262
  def from_dict(cls, d: Dict[str, any]) -> MonitorSnapshot:
4185
5263
  """Deserializes the MonitorSnapshot from a dictionary."""
@@ -4207,6 +5285,13 @@ class MonitorTimeSeries:
4207
5285
  if self.timestamp_col is not None: body['timestamp_col'] = self.timestamp_col
4208
5286
  return body
4209
5287
 
5288
+ def as_shallow_dict(self) -> dict:
5289
+ """Serializes the MonitorTimeSeries into a shallow dictionary of its immediate attributes."""
5290
+ body = {}
5291
+ if self.granularities: body['granularities'] = self.granularities
5292
+ if self.timestamp_col is not None: body['timestamp_col'] = self.timestamp_col
5293
+ return body
5294
+
4210
5295
  @classmethod
4211
5296
  def from_dict(cls, d: Dict[str, any]) -> MonitorTimeSeries:
4212
5297
  """Deserializes the MonitorTimeSeries from a dictionary."""
@@ -4224,6 +5309,12 @@ class NamedTableConstraint:
4224
5309
  if self.name is not None: body['name'] = self.name
4225
5310
  return body
4226
5311
 
5312
+ def as_shallow_dict(self) -> dict:
5313
+ """Serializes the NamedTableConstraint into a shallow dictionary of its immediate attributes."""
5314
+ body = {}
5315
+ if self.name is not None: body['name'] = self.name
5316
+ return body
5317
+
4227
5318
  @classmethod
4228
5319
  def from_dict(cls, d: Dict[str, any]) -> NamedTableConstraint:
4229
5320
  """Deserializes the NamedTableConstraint from a dictionary."""
@@ -4262,6 +5353,17 @@ class OnlineTable:
4262
5353
  body['unity_catalog_provisioning_state'] = self.unity_catalog_provisioning_state.value
4263
5354
  return body
4264
5355
 
5356
+ def as_shallow_dict(self) -> dict:
5357
+ """Serializes the OnlineTable into a shallow dictionary of its immediate attributes."""
5358
+ body = {}
5359
+ if self.name is not None: body['name'] = self.name
5360
+ if self.spec: body['spec'] = self.spec
5361
+ if self.status: body['status'] = self.status
5362
+ if self.table_serving_url is not None: body['table_serving_url'] = self.table_serving_url
5363
+ if self.unity_catalog_provisioning_state is not None:
5364
+ body['unity_catalog_provisioning_state'] = self.unity_catalog_provisioning_state
5365
+ return body
5366
+
4265
5367
  @classmethod
4266
5368
  def from_dict(cls, d: Dict[str, any]) -> OnlineTable:
4267
5369
  """Deserializes the OnlineTable from a dictionary."""
@@ -4317,6 +5419,19 @@ class OnlineTableSpec:
4317
5419
  if self.timeseries_key is not None: body['timeseries_key'] = self.timeseries_key
4318
5420
  return body
4319
5421
 
5422
+ def as_shallow_dict(self) -> dict:
5423
+ """Serializes the OnlineTableSpec into a shallow dictionary of its immediate attributes."""
5424
+ body = {}
5425
+ if self.perform_full_copy is not None: body['perform_full_copy'] = self.perform_full_copy
5426
+ if self.pipeline_id is not None: body['pipeline_id'] = self.pipeline_id
5427
+ if self.primary_key_columns: body['primary_key_columns'] = self.primary_key_columns
5428
+ if self.run_continuously: body['run_continuously'] = self.run_continuously
5429
+ if self.run_triggered: body['run_triggered'] = self.run_triggered
5430
+ if self.source_table_full_name is not None:
5431
+ body['source_table_full_name'] = self.source_table_full_name
5432
+ if self.timeseries_key is not None: body['timeseries_key'] = self.timeseries_key
5433
+ return body
5434
+
4320
5435
  @classmethod
4321
5436
  def from_dict(cls, d: Dict[str, any]) -> OnlineTableSpec:
4322
5437
  """Deserializes the OnlineTableSpec from a dictionary."""
@@ -4338,6 +5453,11 @@ class OnlineTableSpecContinuousSchedulingPolicy:
4338
5453
  body = {}
4339
5454
  return body
4340
5455
 
5456
+ def as_shallow_dict(self) -> dict:
5457
+ """Serializes the OnlineTableSpecContinuousSchedulingPolicy into a shallow dictionary of its immediate attributes."""
5458
+ body = {}
5459
+ return body
5460
+
4341
5461
  @classmethod
4342
5462
  def from_dict(cls, d: Dict[str, any]) -> OnlineTableSpecContinuousSchedulingPolicy:
4343
5463
  """Deserializes the OnlineTableSpecContinuousSchedulingPolicy from a dictionary."""
@@ -4352,6 +5472,11 @@ class OnlineTableSpecTriggeredSchedulingPolicy:
4352
5472
  body = {}
4353
5473
  return body
4354
5474
 
5475
+ def as_shallow_dict(self) -> dict:
5476
+ """Serializes the OnlineTableSpecTriggeredSchedulingPolicy into a shallow dictionary of its immediate attributes."""
5477
+ body = {}
5478
+ return body
5479
+
4355
5480
  @classmethod
4356
5481
  def from_dict(cls, d: Dict[str, any]) -> OnlineTableSpecTriggeredSchedulingPolicy:
4357
5482
  """Deserializes the OnlineTableSpecTriggeredSchedulingPolicy from a dictionary."""
@@ -4413,6 +5538,17 @@ class OnlineTableStatus:
4413
5538
  body['triggered_update_status'] = self.triggered_update_status.as_dict()
4414
5539
  return body
4415
5540
 
5541
+ def as_shallow_dict(self) -> dict:
5542
+ """Serializes the OnlineTableStatus into a shallow dictionary of its immediate attributes."""
5543
+ body = {}
5544
+ if self.continuous_update_status: body['continuous_update_status'] = self.continuous_update_status
5545
+ if self.detailed_state is not None: body['detailed_state'] = self.detailed_state
5546
+ if self.failed_status: body['failed_status'] = self.failed_status
5547
+ if self.message is not None: body['message'] = self.message
5548
+ if self.provisioning_status: body['provisioning_status'] = self.provisioning_status
5549
+ if self.triggered_update_status: body['triggered_update_status'] = self.triggered_update_status
5550
+ return body
5551
+
4416
5552
  @classmethod
4417
5553
  def from_dict(cls, d: Dict[str, any]) -> OnlineTableStatus:
4418
5554
  """Deserializes the OnlineTableStatus from a dictionary."""
@@ -4443,6 +5579,14 @@ class PermissionsChange:
4443
5579
  if self.remove: body['remove'] = [v.value for v in self.remove]
4444
5580
  return body
4445
5581
 
5582
+ def as_shallow_dict(self) -> dict:
5583
+ """Serializes the PermissionsChange into a shallow dictionary of its immediate attributes."""
5584
+ body = {}
5585
+ if self.add: body['add'] = self.add
5586
+ if self.principal is not None: body['principal'] = self.principal
5587
+ if self.remove: body['remove'] = self.remove
5588
+ return body
5589
+
4446
5590
  @classmethod
4447
5591
  def from_dict(cls, d: Dict[str, any]) -> PermissionsChange:
4448
5592
  """Deserializes the PermissionsChange from a dictionary."""
@@ -4463,6 +5607,12 @@ class PermissionsList:
4463
5607
  body['privilege_assignments'] = [v.as_dict() for v in self.privilege_assignments]
4464
5608
  return body
4465
5609
 
5610
+ def as_shallow_dict(self) -> dict:
5611
+ """Serializes the PermissionsList into a shallow dictionary of its immediate attributes."""
5612
+ body = {}
5613
+ if self.privilege_assignments: body['privilege_assignments'] = self.privilege_assignments
5614
+ return body
5615
+
4466
5616
  @classmethod
4467
5617
  def from_dict(cls, d: Dict[str, any]) -> PermissionsList:
4468
5618
  """Deserializes the PermissionsList from a dictionary."""
@@ -4502,6 +5652,19 @@ class PipelineProgress:
4502
5652
  if self.total_row_count is not None: body['total_row_count'] = self.total_row_count
4503
5653
  return body
4504
5654
 
5655
+ def as_shallow_dict(self) -> dict:
5656
+ """Serializes the PipelineProgress into a shallow dictionary of its immediate attributes."""
5657
+ body = {}
5658
+ if self.estimated_completion_time_seconds is not None:
5659
+ body['estimated_completion_time_seconds'] = self.estimated_completion_time_seconds
5660
+ if self.latest_version_currently_processing is not None:
5661
+ body['latest_version_currently_processing'] = self.latest_version_currently_processing
5662
+ if self.sync_progress_completion is not None:
5663
+ body['sync_progress_completion'] = self.sync_progress_completion
5664
+ if self.synced_row_count is not None: body['synced_row_count'] = self.synced_row_count
5665
+ if self.total_row_count is not None: body['total_row_count'] = self.total_row_count
5666
+ return body
5667
+
4505
5668
  @classmethod
4506
5669
  def from_dict(cls, d: Dict[str, any]) -> PipelineProgress:
4507
5670
  """Deserializes the PipelineProgress from a dictionary."""
@@ -4527,6 +5690,13 @@ class PrimaryKeyConstraint:
4527
5690
  if self.name is not None: body['name'] = self.name
4528
5691
  return body
4529
5692
 
5693
+ def as_shallow_dict(self) -> dict:
5694
+ """Serializes the PrimaryKeyConstraint into a shallow dictionary of its immediate attributes."""
5695
+ body = {}
5696
+ if self.child_columns: body['child_columns'] = self.child_columns
5697
+ if self.name is not None: body['name'] = self.name
5698
+ return body
5699
+
4530
5700
  @classmethod
4531
5701
  def from_dict(cls, d: Dict[str, any]) -> PrimaryKeyConstraint:
4532
5702
  """Deserializes the PrimaryKeyConstraint from a dictionary."""
@@ -4545,6 +5715,7 @@ class Privilege(Enum):
4545
5715
  CREATE_EXTERNAL_TABLE = 'CREATE_EXTERNAL_TABLE'
4546
5716
  CREATE_EXTERNAL_VOLUME = 'CREATE_EXTERNAL_VOLUME'
4547
5717
  CREATE_FOREIGN_CATALOG = 'CREATE_FOREIGN_CATALOG'
5718
+ CREATE_FOREIGN_SECURABLE = 'CREATE_FOREIGN_SECURABLE'
4548
5719
  CREATE_FUNCTION = 'CREATE_FUNCTION'
4549
5720
  CREATE_MANAGED_STORAGE = 'CREATE_MANAGED_STORAGE'
4550
5721
  CREATE_MATERIALIZED_VIEW = 'CREATE_MATERIALIZED_VIEW'
@@ -4596,6 +5767,13 @@ class PrivilegeAssignment:
4596
5767
  if self.privileges: body['privileges'] = [v.value for v in self.privileges]
4597
5768
  return body
4598
5769
 
5770
+ def as_shallow_dict(self) -> dict:
5771
+ """Serializes the PrivilegeAssignment into a shallow dictionary of its immediate attributes."""
5772
+ body = {}
5773
+ if self.principal is not None: body['principal'] = self.principal
5774
+ if self.privileges: body['privileges'] = self.privileges
5775
+ return body
5776
+
4599
5777
  @classmethod
4600
5778
  def from_dict(cls, d: Dict[str, any]) -> PrivilegeAssignment:
4601
5779
  """Deserializes the PrivilegeAssignment from a dictionary."""
@@ -4617,6 +5795,12 @@ class ProvisioningInfo:
4617
5795
  if self.state is not None: body['state'] = self.state.value
4618
5796
  return body
4619
5797
 
5798
+ def as_shallow_dict(self) -> dict:
5799
+ """Serializes the ProvisioningInfo into a shallow dictionary of its immediate attributes."""
5800
+ body = {}
5801
+ if self.state is not None: body['state'] = self.state
5802
+ return body
5803
+
4620
5804
  @classmethod
4621
5805
  def from_dict(cls, d: Dict[str, any]) -> ProvisioningInfo:
4622
5806
  """Deserializes the ProvisioningInfo from a dictionary."""
@@ -4648,6 +5832,13 @@ class ProvisioningStatus:
4648
5832
  body['initial_pipeline_sync_progress'] = self.initial_pipeline_sync_progress.as_dict()
4649
5833
  return body
4650
5834
 
5835
+ def as_shallow_dict(self) -> dict:
5836
+ """Serializes the ProvisioningStatus into a shallow dictionary of its immediate attributes."""
5837
+ body = {}
5838
+ if self.initial_pipeline_sync_progress:
5839
+ body['initial_pipeline_sync_progress'] = self.initial_pipeline_sync_progress
5840
+ return body
5841
+
4651
5842
  @classmethod
4652
5843
  def from_dict(cls, d: Dict[str, any]) -> ProvisioningStatus:
4653
5844
  """Deserializes the ProvisioningStatus from a dictionary."""
@@ -4687,6 +5878,17 @@ class QuotaInfo:
4687
5878
  if self.quota_name is not None: body['quota_name'] = self.quota_name
4688
5879
  return body
4689
5880
 
5881
+ def as_shallow_dict(self) -> dict:
5882
+ """Serializes the QuotaInfo into a shallow dictionary of its immediate attributes."""
5883
+ body = {}
5884
+ if self.last_refreshed_at is not None: body['last_refreshed_at'] = self.last_refreshed_at
5885
+ if self.parent_full_name is not None: body['parent_full_name'] = self.parent_full_name
5886
+ if self.parent_securable_type is not None: body['parent_securable_type'] = self.parent_securable_type
5887
+ if self.quota_count is not None: body['quota_count'] = self.quota_count
5888
+ if self.quota_limit is not None: body['quota_limit'] = self.quota_limit
5889
+ if self.quota_name is not None: body['quota_name'] = self.quota_name
5890
+ return body
5891
+
4690
5892
  @classmethod
4691
5893
  def from_dict(cls, d: Dict[str, any]) -> QuotaInfo:
4692
5894
  """Deserializes the QuotaInfo from a dictionary."""
@@ -4720,6 +5922,14 @@ class R2Credentials:
4720
5922
  if self.session_token is not None: body['session_token'] = self.session_token
4721
5923
  return body
4722
5924
 
5925
+ def as_shallow_dict(self) -> dict:
5926
+ """Serializes the R2Credentials into a shallow dictionary of its immediate attributes."""
5927
+ body = {}
5928
+ if self.access_key_id is not None: body['access_key_id'] = self.access_key_id
5929
+ if self.secret_access_key is not None: body['secret_access_key'] = self.secret_access_key
5930
+ if self.session_token is not None: body['session_token'] = self.session_token
5931
+ return body
5932
+
4723
5933
  @classmethod
4724
5934
  def from_dict(cls, d: Dict[str, any]) -> R2Credentials:
4725
5935
  """Deserializes the R2Credentials from a dictionary."""
@@ -4744,6 +5954,13 @@ class RegenerateDashboardRequest:
4744
5954
  if self.warehouse_id is not None: body['warehouse_id'] = self.warehouse_id
4745
5955
  return body
4746
5956
 
5957
+ def as_shallow_dict(self) -> dict:
5958
+ """Serializes the RegenerateDashboardRequest into a shallow dictionary of its immediate attributes."""
5959
+ body = {}
5960
+ if self.table_name is not None: body['table_name'] = self.table_name
5961
+ if self.warehouse_id is not None: body['warehouse_id'] = self.warehouse_id
5962
+ return body
5963
+
4747
5964
  @classmethod
4748
5965
  def from_dict(cls, d: Dict[str, any]) -> RegenerateDashboardRequest:
4749
5966
  """Deserializes the RegenerateDashboardRequest from a dictionary."""
@@ -4765,6 +5982,13 @@ class RegenerateDashboardResponse:
4765
5982
  if self.parent_folder is not None: body['parent_folder'] = self.parent_folder
4766
5983
  return body
4767
5984
 
5985
+ def as_shallow_dict(self) -> dict:
5986
+ """Serializes the RegenerateDashboardResponse into a shallow dictionary of its immediate attributes."""
5987
+ body = {}
5988
+ if self.dashboard_id is not None: body['dashboard_id'] = self.dashboard_id
5989
+ if self.parent_folder is not None: body['parent_folder'] = self.parent_folder
5990
+ return body
5991
+
4768
5992
  @classmethod
4769
5993
  def from_dict(cls, d: Dict[str, any]) -> RegenerateDashboardResponse:
4770
5994
  """Deserializes the RegenerateDashboardResponse from a dictionary."""
@@ -4788,6 +6012,13 @@ class RegisteredModelAlias:
4788
6012
  if self.version_num is not None: body['version_num'] = self.version_num
4789
6013
  return body
4790
6014
 
6015
+ def as_shallow_dict(self) -> dict:
6016
+ """Serializes the RegisteredModelAlias into a shallow dictionary of its immediate attributes."""
6017
+ body = {}
6018
+ if self.alias_name is not None: body['alias_name'] = self.alias_name
6019
+ if self.version_num is not None: body['version_num'] = self.version_num
6020
+ return body
6021
+
4791
6022
  @classmethod
4792
6023
  def from_dict(cls, d: Dict[str, any]) -> RegisteredModelAlias:
4793
6024
  """Deserializes the RegisteredModelAlias from a dictionary."""
@@ -4858,6 +6089,25 @@ class RegisteredModelInfo:
4858
6089
  if self.updated_by is not None: body['updated_by'] = self.updated_by
4859
6090
  return body
4860
6091
 
6092
+ def as_shallow_dict(self) -> dict:
6093
+ """Serializes the RegisteredModelInfo into a shallow dictionary of its immediate attributes."""
6094
+ body = {}
6095
+ if self.aliases: body['aliases'] = self.aliases
6096
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
6097
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
6098
+ if self.comment is not None: body['comment'] = self.comment
6099
+ if self.created_at is not None: body['created_at'] = self.created_at
6100
+ if self.created_by is not None: body['created_by'] = self.created_by
6101
+ if self.full_name is not None: body['full_name'] = self.full_name
6102
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
6103
+ if self.name is not None: body['name'] = self.name
6104
+ if self.owner is not None: body['owner'] = self.owner
6105
+ if self.schema_name is not None: body['schema_name'] = self.schema_name
6106
+ if self.storage_location is not None: body['storage_location'] = self.storage_location
6107
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
6108
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
6109
+ return body
6110
+
4861
6111
  @classmethod
4862
6112
  def from_dict(cls, d: Dict[str, any]) -> RegisteredModelInfo:
4863
6113
  """Deserializes the RegisteredModelInfo from a dictionary."""
@@ -4960,6 +6210,31 @@ class SchemaInfo:
4960
6210
  if self.updated_by is not None: body['updated_by'] = self.updated_by
4961
6211
  return body
4962
6212
 
6213
+ def as_shallow_dict(self) -> dict:
6214
+ """Serializes the SchemaInfo into a shallow dictionary of its immediate attributes."""
6215
+ body = {}
6216
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
6217
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
6218
+ if self.catalog_type is not None: body['catalog_type'] = self.catalog_type
6219
+ if self.comment is not None: body['comment'] = self.comment
6220
+ if self.created_at is not None: body['created_at'] = self.created_at
6221
+ if self.created_by is not None: body['created_by'] = self.created_by
6222
+ if self.effective_predictive_optimization_flag:
6223
+ body['effective_predictive_optimization_flag'] = self.effective_predictive_optimization_flag
6224
+ if self.enable_predictive_optimization is not None:
6225
+ body['enable_predictive_optimization'] = self.enable_predictive_optimization
6226
+ if self.full_name is not None: body['full_name'] = self.full_name
6227
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
6228
+ if self.name is not None: body['name'] = self.name
6229
+ if self.owner is not None: body['owner'] = self.owner
6230
+ if self.properties: body['properties'] = self.properties
6231
+ if self.schema_id is not None: body['schema_id'] = self.schema_id
6232
+ if self.storage_location is not None: body['storage_location'] = self.storage_location
6233
+ if self.storage_root is not None: body['storage_root'] = self.storage_root
6234
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
6235
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
6236
+ return body
6237
+
4963
6238
  @classmethod
4964
6239
  def from_dict(cls, d: Dict[str, any]) -> SchemaInfo:
4965
6240
  """Deserializes the SchemaInfo from a dictionary."""
@@ -5024,6 +6299,13 @@ class SetArtifactAllowlist:
5024
6299
  if self.artifact_type is not None: body['artifact_type'] = self.artifact_type.value
5025
6300
  return body
5026
6301
 
6302
+ def as_shallow_dict(self) -> dict:
6303
+ """Serializes the SetArtifactAllowlist into a shallow dictionary of its immediate attributes."""
6304
+ body = {}
6305
+ if self.artifact_matchers: body['artifact_matchers'] = self.artifact_matchers
6306
+ if self.artifact_type is not None: body['artifact_type'] = self.artifact_type
6307
+ return body
6308
+
5027
6309
  @classmethod
5028
6310
  def from_dict(cls, d: Dict[str, any]) -> SetArtifactAllowlist:
5029
6311
  """Deserializes the SetArtifactAllowlist from a dictionary."""
@@ -5050,6 +6332,14 @@ class SetRegisteredModelAliasRequest:
5050
6332
  if self.version_num is not None: body['version_num'] = self.version_num
5051
6333
  return body
5052
6334
 
6335
+ def as_shallow_dict(self) -> dict:
6336
+ """Serializes the SetRegisteredModelAliasRequest into a shallow dictionary of its immediate attributes."""
6337
+ body = {}
6338
+ if self.alias is not None: body['alias'] = self.alias
6339
+ if self.full_name is not None: body['full_name'] = self.full_name
6340
+ if self.version_num is not None: body['version_num'] = self.version_num
6341
+ return body
6342
+
5053
6343
  @classmethod
5054
6344
  def from_dict(cls, d: Dict[str, any]) -> SetRegisteredModelAliasRequest:
5055
6345
  """Deserializes the SetRegisteredModelAliasRequest from a dictionary."""
@@ -5075,6 +6365,13 @@ class SseEncryptionDetails:
5075
6365
  if self.aws_kms_key_arn is not None: body['aws_kms_key_arn'] = self.aws_kms_key_arn
5076
6366
  return body
5077
6367
 
6368
+ def as_shallow_dict(self) -> dict:
6369
+ """Serializes the SseEncryptionDetails into a shallow dictionary of its immediate attributes."""
6370
+ body = {}
6371
+ if self.algorithm is not None: body['algorithm'] = self.algorithm
6372
+ if self.aws_kms_key_arn is not None: body['aws_kms_key_arn'] = self.aws_kms_key_arn
6373
+ return body
6374
+
5078
6375
  @classmethod
5079
6376
  def from_dict(cls, d: Dict[str, any]) -> SseEncryptionDetails:
5080
6377
  """Deserializes the SseEncryptionDetails from a dictionary."""
@@ -5170,6 +6467,31 @@ class StorageCredentialInfo:
5170
6467
  body['used_for_managed_storage'] = self.used_for_managed_storage
5171
6468
  return body
5172
6469
 
6470
+ def as_shallow_dict(self) -> dict:
6471
+ """Serializes the StorageCredentialInfo into a shallow dictionary of its immediate attributes."""
6472
+ body = {}
6473
+ if self.aws_iam_role: body['aws_iam_role'] = self.aws_iam_role
6474
+ if self.azure_managed_identity: body['azure_managed_identity'] = self.azure_managed_identity
6475
+ if self.azure_service_principal: body['azure_service_principal'] = self.azure_service_principal
6476
+ if self.cloudflare_api_token: body['cloudflare_api_token'] = self.cloudflare_api_token
6477
+ if self.comment is not None: body['comment'] = self.comment
6478
+ if self.created_at is not None: body['created_at'] = self.created_at
6479
+ if self.created_by is not None: body['created_by'] = self.created_by
6480
+ if self.databricks_gcp_service_account:
6481
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account
6482
+ if self.full_name is not None: body['full_name'] = self.full_name
6483
+ if self.id is not None: body['id'] = self.id
6484
+ if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode
6485
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
6486
+ if self.name is not None: body['name'] = self.name
6487
+ if self.owner is not None: body['owner'] = self.owner
6488
+ if self.read_only is not None: body['read_only'] = self.read_only
6489
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
6490
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
6491
+ if self.used_for_managed_storage is not None:
6492
+ body['used_for_managed_storage'] = self.used_for_managed_storage
6493
+ return body
6494
+
5173
6495
  @classmethod
5174
6496
  def from_dict(cls, d: Dict[str, any]) -> StorageCredentialInfo:
5175
6497
  """Deserializes the StorageCredentialInfo from a dictionary."""
@@ -5211,6 +6533,13 @@ class SystemSchemaInfo:
5211
6533
  if self.state is not None: body['state'] = self.state.value
5212
6534
  return body
5213
6535
 
6536
+ def as_shallow_dict(self) -> dict:
6537
+ """Serializes the SystemSchemaInfo into a shallow dictionary of its immediate attributes."""
6538
+ body = {}
6539
+ if self.schema is not None: body['schema'] = self.schema
6540
+ if self.state is not None: body['state'] = self.state
6541
+ return body
6542
+
5214
6543
  @classmethod
5215
6544
  def from_dict(cls, d: Dict[str, any]) -> SystemSchemaInfo:
5216
6545
  """Deserializes the SystemSchemaInfo from a dictionary."""
@@ -5247,6 +6576,14 @@ class TableConstraint:
5247
6576
  if self.primary_key_constraint: body['primary_key_constraint'] = self.primary_key_constraint.as_dict()
5248
6577
  return body
5249
6578
 
6579
+ def as_shallow_dict(self) -> dict:
6580
+ """Serializes the TableConstraint into a shallow dictionary of its immediate attributes."""
6581
+ body = {}
6582
+ if self.foreign_key_constraint: body['foreign_key_constraint'] = self.foreign_key_constraint
6583
+ if self.named_table_constraint: body['named_table_constraint'] = self.named_table_constraint
6584
+ if self.primary_key_constraint: body['primary_key_constraint'] = self.primary_key_constraint
6585
+ return body
6586
+
5250
6587
  @classmethod
5251
6588
  def from_dict(cls, d: Dict[str, any]) -> TableConstraint:
5252
6589
  """Deserializes the TableConstraint from a dictionary."""
@@ -5269,6 +6606,12 @@ class TableDependency:
5269
6606
  if self.table_full_name is not None: body['table_full_name'] = self.table_full_name
5270
6607
  return body
5271
6608
 
6609
+ def as_shallow_dict(self) -> dict:
6610
+ """Serializes the TableDependency into a shallow dictionary of its immediate attributes."""
6611
+ body = {}
6612
+ if self.table_full_name is not None: body['table_full_name'] = self.table_full_name
6613
+ return body
6614
+
5272
6615
  @classmethod
5273
6616
  def from_dict(cls, d: Dict[str, any]) -> TableDependency:
5274
6617
  """Deserializes the TableDependency from a dictionary."""
@@ -5286,6 +6629,12 @@ class TableExistsResponse:
5286
6629
  if self.table_exists is not None: body['table_exists'] = self.table_exists
5287
6630
  return body
5288
6631
 
6632
+ def as_shallow_dict(self) -> dict:
6633
+ """Serializes the TableExistsResponse into a shallow dictionary of its immediate attributes."""
6634
+ body = {}
6635
+ if self.table_exists is not None: body['table_exists'] = self.table_exists
6636
+ return body
6637
+
5289
6638
  @classmethod
5290
6639
  def from_dict(cls, d: Dict[str, any]) -> TableExistsResponse:
5291
6640
  """Deserializes the TableExistsResponse from a dictionary."""
@@ -5438,6 +6787,48 @@ class TableInfo:
5438
6787
  if self.view_dependencies: body['view_dependencies'] = self.view_dependencies.as_dict()
5439
6788
  return body
5440
6789
 
6790
+ def as_shallow_dict(self) -> dict:
6791
+ """Serializes the TableInfo into a shallow dictionary of its immediate attributes."""
6792
+ body = {}
6793
+ if self.access_point is not None: body['access_point'] = self.access_point
6794
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
6795
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
6796
+ if self.columns: body['columns'] = self.columns
6797
+ if self.comment is not None: body['comment'] = self.comment
6798
+ if self.created_at is not None: body['created_at'] = self.created_at
6799
+ if self.created_by is not None: body['created_by'] = self.created_by
6800
+ if self.data_access_configuration_id is not None:
6801
+ body['data_access_configuration_id'] = self.data_access_configuration_id
6802
+ if self.data_source_format is not None: body['data_source_format'] = self.data_source_format
6803
+ if self.deleted_at is not None: body['deleted_at'] = self.deleted_at
6804
+ if self.delta_runtime_properties_kvpairs:
6805
+ body['delta_runtime_properties_kvpairs'] = self.delta_runtime_properties_kvpairs
6806
+ if self.effective_predictive_optimization_flag:
6807
+ body['effective_predictive_optimization_flag'] = self.effective_predictive_optimization_flag
6808
+ if self.enable_predictive_optimization is not None:
6809
+ body['enable_predictive_optimization'] = self.enable_predictive_optimization
6810
+ if self.encryption_details: body['encryption_details'] = self.encryption_details
6811
+ if self.full_name is not None: body['full_name'] = self.full_name
6812
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
6813
+ if self.name is not None: body['name'] = self.name
6814
+ if self.owner is not None: body['owner'] = self.owner
6815
+ if self.pipeline_id is not None: body['pipeline_id'] = self.pipeline_id
6816
+ if self.properties: body['properties'] = self.properties
6817
+ if self.row_filter: body['row_filter'] = self.row_filter
6818
+ if self.schema_name is not None: body['schema_name'] = self.schema_name
6819
+ if self.sql_path is not None: body['sql_path'] = self.sql_path
6820
+ if self.storage_credential_name is not None:
6821
+ body['storage_credential_name'] = self.storage_credential_name
6822
+ if self.storage_location is not None: body['storage_location'] = self.storage_location
6823
+ if self.table_constraints: body['table_constraints'] = self.table_constraints
6824
+ if self.table_id is not None: body['table_id'] = self.table_id
6825
+ if self.table_type is not None: body['table_type'] = self.table_type
6826
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
6827
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
6828
+ if self.view_definition is not None: body['view_definition'] = self.view_definition
6829
+ if self.view_dependencies: body['view_dependencies'] = self.view_dependencies
6830
+ return body
6831
+
5441
6832
  @classmethod
5442
6833
  def from_dict(cls, d: Dict[str, any]) -> TableInfo:
5443
6834
  """Deserializes the TableInfo from a dictionary."""
@@ -5500,6 +6891,13 @@ class TableRowFilter:
5500
6891
  if self.input_column_names: body['input_column_names'] = [v for v in self.input_column_names]
5501
6892
  return body
5502
6893
 
6894
+ def as_shallow_dict(self) -> dict:
6895
+ """Serializes the TableRowFilter into a shallow dictionary of its immediate attributes."""
6896
+ body = {}
6897
+ if self.function_name is not None: body['function_name'] = self.function_name
6898
+ if self.input_column_names: body['input_column_names'] = self.input_column_names
6899
+ return body
6900
+
5503
6901
  @classmethod
5504
6902
  def from_dict(cls, d: Dict[str, any]) -> TableRowFilter:
5505
6903
  """Deserializes the TableRowFilter from a dictionary."""
@@ -5521,6 +6919,13 @@ class TableSummary:
5521
6919
  if self.table_type is not None: body['table_type'] = self.table_type.value
5522
6920
  return body
5523
6921
 
6922
+ def as_shallow_dict(self) -> dict:
6923
+ """Serializes the TableSummary into a shallow dictionary of its immediate attributes."""
6924
+ body = {}
6925
+ if self.full_name is not None: body['full_name'] = self.full_name
6926
+ if self.table_type is not None: body['table_type'] = self.table_type
6927
+ return body
6928
+
5524
6929
  @classmethod
5525
6930
  def from_dict(cls, d: Dict[str, any]) -> TableSummary:
5526
6931
  """Deserializes the TableSummary from a dictionary."""
@@ -5562,6 +6967,14 @@ class TemporaryCredentials:
5562
6967
  if self.expiration_time is not None: body['expiration_time'] = self.expiration_time
5563
6968
  return body
5564
6969
 
6970
+ def as_shallow_dict(self) -> dict:
6971
+ """Serializes the TemporaryCredentials into a shallow dictionary of its immediate attributes."""
6972
+ body = {}
6973
+ if self.aws_temp_credentials: body['aws_temp_credentials'] = self.aws_temp_credentials
6974
+ if self.azure_aad: body['azure_aad'] = self.azure_aad
6975
+ if self.expiration_time is not None: body['expiration_time'] = self.expiration_time
6976
+ return body
6977
+
5565
6978
  @classmethod
5566
6979
  def from_dict(cls, d: Dict[str, any]) -> TemporaryCredentials:
5567
6980
  """Deserializes the TemporaryCredentials from a dictionary."""
@@ -5596,6 +7009,15 @@ class TriggeredUpdateStatus:
5596
7009
  body['triggered_update_progress'] = self.triggered_update_progress.as_dict()
5597
7010
  return body
5598
7011
 
7012
+ def as_shallow_dict(self) -> dict:
7013
+ """Serializes the TriggeredUpdateStatus into a shallow dictionary of its immediate attributes."""
7014
+ body = {}
7015
+ if self.last_processed_commit_version is not None:
7016
+ body['last_processed_commit_version'] = self.last_processed_commit_version
7017
+ if self.timestamp is not None: body['timestamp'] = self.timestamp
7018
+ if self.triggered_update_progress: body['triggered_update_progress'] = self.triggered_update_progress
7019
+ return body
7020
+
5599
7021
  @classmethod
5600
7022
  def from_dict(cls, d: Dict[str, any]) -> TriggeredUpdateStatus:
5601
7023
  """Deserializes the TriggeredUpdateStatus from a dictionary."""
@@ -5612,6 +7034,11 @@ class UnassignResponse:
5612
7034
  body = {}
5613
7035
  return body
5614
7036
 
7037
+ def as_shallow_dict(self) -> dict:
7038
+ """Serializes the UnassignResponse into a shallow dictionary of its immediate attributes."""
7039
+ body = {}
7040
+ return body
7041
+
5615
7042
  @classmethod
5616
7043
  def from_dict(cls, d: Dict[str, any]) -> UnassignResponse:
5617
7044
  """Deserializes the UnassignResponse from a dictionary."""
@@ -5626,6 +7053,11 @@ class UpdateAssignmentResponse:
5626
7053
  body = {}
5627
7054
  return body
5628
7055
 
7056
+ def as_shallow_dict(self) -> dict:
7057
+ """Serializes the UpdateAssignmentResponse into a shallow dictionary of its immediate attributes."""
7058
+ body = {}
7059
+ return body
7060
+
5629
7061
  @classmethod
5630
7062
  def from_dict(cls, d: Dict[str, any]) -> UpdateAssignmentResponse:
5631
7063
  """Deserializes the UpdateAssignmentResponse from a dictionary."""
@@ -5676,6 +7108,19 @@ class UpdateCatalog:
5676
7108
  if self.properties: body['properties'] = self.properties
5677
7109
  return body
5678
7110
 
7111
+ def as_shallow_dict(self) -> dict:
7112
+ """Serializes the UpdateCatalog into a shallow dictionary of its immediate attributes."""
7113
+ body = {}
7114
+ if self.comment is not None: body['comment'] = self.comment
7115
+ if self.enable_predictive_optimization is not None:
7116
+ body['enable_predictive_optimization'] = self.enable_predictive_optimization
7117
+ if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode
7118
+ if self.name is not None: body['name'] = self.name
7119
+ if self.new_name is not None: body['new_name'] = self.new_name
7120
+ if self.owner is not None: body['owner'] = self.owner
7121
+ if self.properties: body['properties'] = self.properties
7122
+ return body
7123
+
5679
7124
  @classmethod
5680
7125
  def from_dict(cls, d: Dict[str, any]) -> UpdateCatalog:
5681
7126
  """Deserializes the UpdateCatalog from a dictionary."""
@@ -5712,6 +7157,15 @@ class UpdateConnection:
5712
7157
  if self.owner is not None: body['owner'] = self.owner
5713
7158
  return body
5714
7159
 
7160
+ def as_shallow_dict(self) -> dict:
7161
+ """Serializes the UpdateConnection into a shallow dictionary of its immediate attributes."""
7162
+ body = {}
7163
+ if self.name is not None: body['name'] = self.name
7164
+ if self.new_name is not None: body['new_name'] = self.new_name
7165
+ if self.options: body['options'] = self.options
7166
+ if self.owner is not None: body['owner'] = self.owner
7167
+ return body
7168
+
5715
7169
  @classmethod
5716
7170
  def from_dict(cls, d: Dict[str, any]) -> UpdateConnection:
5717
7171
  """Deserializes the UpdateConnection from a dictionary."""
@@ -5730,11 +7184,14 @@ class UpdateCredentialRequest:
5730
7184
  """The Azure managed identity configuration."""
5731
7185
 
5732
7186
  azure_service_principal: Optional[AzureServicePrincipal] = None
5733
- """The Azure service principal configuration."""
7187
+ """The Azure service principal configuration. Only applicable when purpose is **STORAGE**."""
5734
7188
 
5735
7189
  comment: Optional[str] = None
5736
7190
  """Comment associated with the credential."""
5737
7191
 
7192
+ databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None
7193
+ """GCP long-lived credential. Databricks-created Google Cloud Storage service account."""
7194
+
5738
7195
  force: Optional[bool] = None
5739
7196
  """Force an update even if there are dependent services (when purpose is **SERVICE**) or dependent
5740
7197
  external locations and external tables (when purpose is **STORAGE**)."""
@@ -5766,6 +7223,8 @@ class UpdateCredentialRequest:
5766
7223
  if self.azure_service_principal:
5767
7224
  body['azure_service_principal'] = self.azure_service_principal.as_dict()
5768
7225
  if self.comment is not None: body['comment'] = self.comment
7226
+ if self.databricks_gcp_service_account:
7227
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account.as_dict()
5769
7228
  if self.force is not None: body['force'] = self.force
5770
7229
  if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode.value
5771
7230
  if self.name_arg is not None: body['name_arg'] = self.name_arg
@@ -5775,6 +7234,24 @@ class UpdateCredentialRequest:
5775
7234
  if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
5776
7235
  return body
5777
7236
 
7237
+ def as_shallow_dict(self) -> dict:
7238
+ """Serializes the UpdateCredentialRequest into a shallow dictionary of its immediate attributes."""
7239
+ body = {}
7240
+ if self.aws_iam_role: body['aws_iam_role'] = self.aws_iam_role
7241
+ if self.azure_managed_identity: body['azure_managed_identity'] = self.azure_managed_identity
7242
+ if self.azure_service_principal: body['azure_service_principal'] = self.azure_service_principal
7243
+ if self.comment is not None: body['comment'] = self.comment
7244
+ if self.databricks_gcp_service_account:
7245
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account
7246
+ if self.force is not None: body['force'] = self.force
7247
+ if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode
7248
+ if self.name_arg is not None: body['name_arg'] = self.name_arg
7249
+ if self.new_name is not None: body['new_name'] = self.new_name
7250
+ if self.owner is not None: body['owner'] = self.owner
7251
+ if self.read_only is not None: body['read_only'] = self.read_only
7252
+ if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
7253
+ return body
7254
+
5778
7255
  @classmethod
5779
7256
  def from_dict(cls, d: Dict[str, any]) -> UpdateCredentialRequest:
5780
7257
  """Deserializes the UpdateCredentialRequest from a dictionary."""
@@ -5782,6 +7259,8 @@ class UpdateCredentialRequest:
5782
7259
  azure_managed_identity=_from_dict(d, 'azure_managed_identity', AzureManagedIdentity),
5783
7260
  azure_service_principal=_from_dict(d, 'azure_service_principal', AzureServicePrincipal),
5784
7261
  comment=d.get('comment', None),
7262
+ databricks_gcp_service_account=_from_dict(d, 'databricks_gcp_service_account',
7263
+ DatabricksGcpServiceAccount),
5785
7264
  force=d.get('force', None),
5786
7265
  isolation_mode=_enum(d, 'isolation_mode', IsolationMode),
5787
7266
  name_arg=d.get('name_arg', None),
@@ -5851,6 +7330,24 @@ class UpdateExternalLocation:
5851
7330
  if self.url is not None: body['url'] = self.url
5852
7331
  return body
5853
7332
 
7333
+ def as_shallow_dict(self) -> dict:
7334
+ """Serializes the UpdateExternalLocation into a shallow dictionary of its immediate attributes."""
7335
+ body = {}
7336
+ if self.access_point is not None: body['access_point'] = self.access_point
7337
+ if self.comment is not None: body['comment'] = self.comment
7338
+ if self.credential_name is not None: body['credential_name'] = self.credential_name
7339
+ if self.encryption_details: body['encryption_details'] = self.encryption_details
7340
+ if self.fallback is not None: body['fallback'] = self.fallback
7341
+ if self.force is not None: body['force'] = self.force
7342
+ if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode
7343
+ if self.name is not None: body['name'] = self.name
7344
+ if self.new_name is not None: body['new_name'] = self.new_name
7345
+ if self.owner is not None: body['owner'] = self.owner
7346
+ if self.read_only is not None: body['read_only'] = self.read_only
7347
+ if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
7348
+ if self.url is not None: body['url'] = self.url
7349
+ return body
7350
+
5854
7351
  @classmethod
5855
7352
  def from_dict(cls, d: Dict[str, any]) -> UpdateExternalLocation:
5856
7353
  """Deserializes the UpdateExternalLocation from a dictionary."""
@@ -5885,6 +7382,13 @@ class UpdateFunction:
5885
7382
  if self.owner is not None: body['owner'] = self.owner
5886
7383
  return body
5887
7384
 
7385
+ def as_shallow_dict(self) -> dict:
7386
+ """Serializes the UpdateFunction into a shallow dictionary of its immediate attributes."""
7387
+ body = {}
7388
+ if self.name is not None: body['name'] = self.name
7389
+ if self.owner is not None: body['owner'] = self.owner
7390
+ return body
7391
+
5888
7392
  @classmethod
5889
7393
  def from_dict(cls, d: Dict[str, any]) -> UpdateFunction:
5890
7394
  """Deserializes the UpdateFunction from a dictionary."""
@@ -5936,6 +7440,24 @@ class UpdateMetastore:
5936
7440
  body['storage_root_credential_id'] = self.storage_root_credential_id
5937
7441
  return body
5938
7442
 
7443
+ def as_shallow_dict(self) -> dict:
7444
+ """Serializes the UpdateMetastore into a shallow dictionary of its immediate attributes."""
7445
+ body = {}
7446
+ if self.delta_sharing_organization_name is not None:
7447
+ body['delta_sharing_organization_name'] = self.delta_sharing_organization_name
7448
+ if self.delta_sharing_recipient_token_lifetime_in_seconds is not None:
7449
+ body[
7450
+ 'delta_sharing_recipient_token_lifetime_in_seconds'] = self.delta_sharing_recipient_token_lifetime_in_seconds
7451
+ if self.delta_sharing_scope is not None: body['delta_sharing_scope'] = self.delta_sharing_scope
7452
+ if self.id is not None: body['id'] = self.id
7453
+ if self.new_name is not None: body['new_name'] = self.new_name
7454
+ if self.owner is not None: body['owner'] = self.owner
7455
+ if self.privilege_model_version is not None:
7456
+ body['privilege_model_version'] = self.privilege_model_version
7457
+ if self.storage_root_credential_id is not None:
7458
+ body['storage_root_credential_id'] = self.storage_root_credential_id
7459
+ return body
7460
+
5939
7461
  @classmethod
5940
7462
  def from_dict(cls, d: Dict[str, any]) -> UpdateMetastore:
5941
7463
  """Deserializes the UpdateMetastore from a dictionary."""
@@ -5970,6 +7492,14 @@ class UpdateMetastoreAssignment:
5970
7492
  if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
5971
7493
  return body
5972
7494
 
7495
+ def as_shallow_dict(self) -> dict:
7496
+ """Serializes the UpdateMetastoreAssignment into a shallow dictionary of its immediate attributes."""
7497
+ body = {}
7498
+ if self.default_catalog_name is not None: body['default_catalog_name'] = self.default_catalog_name
7499
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
7500
+ if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
7501
+ return body
7502
+
5973
7503
  @classmethod
5974
7504
  def from_dict(cls, d: Dict[str, any]) -> UpdateMetastoreAssignment:
5975
7505
  """Deserializes the UpdateMetastoreAssignment from a dictionary."""
@@ -6004,6 +7534,14 @@ class UpdateModelVersionRequest:
6004
7534
  if self.version is not None: body['version'] = self.version
6005
7535
  return body
6006
7536
 
7537
+ def as_shallow_dict(self) -> dict:
7538
+ """Serializes the UpdateModelVersionRequest into a shallow dictionary of its immediate attributes."""
7539
+ body = {}
7540
+ if self.comment is not None: body['comment'] = self.comment
7541
+ if self.full_name is not None: body['full_name'] = self.full_name
7542
+ if self.version is not None: body['version'] = self.version
7543
+ return body
7544
+
6007
7545
  @classmethod
6008
7546
  def from_dict(cls, d: Dict[str, any]) -> UpdateModelVersionRequest:
6009
7547
  """Deserializes the UpdateModelVersionRequest from a dictionary."""
@@ -6074,6 +7612,24 @@ class UpdateMonitor:
6074
7612
  if self.time_series: body['time_series'] = self.time_series.as_dict()
6075
7613
  return body
6076
7614
 
7615
+ def as_shallow_dict(self) -> dict:
7616
+ """Serializes the UpdateMonitor into a shallow dictionary of its immediate attributes."""
7617
+ body = {}
7618
+ if self.baseline_table_name is not None: body['baseline_table_name'] = self.baseline_table_name
7619
+ if self.custom_metrics: body['custom_metrics'] = self.custom_metrics
7620
+ if self.dashboard_id is not None: body['dashboard_id'] = self.dashboard_id
7621
+ if self.data_classification_config:
7622
+ body['data_classification_config'] = self.data_classification_config
7623
+ if self.inference_log: body['inference_log'] = self.inference_log
7624
+ if self.notifications: body['notifications'] = self.notifications
7625
+ if self.output_schema_name is not None: body['output_schema_name'] = self.output_schema_name
7626
+ if self.schedule: body['schedule'] = self.schedule
7627
+ if self.slicing_exprs: body['slicing_exprs'] = self.slicing_exprs
7628
+ if self.snapshot: body['snapshot'] = self.snapshot
7629
+ if self.table_name is not None: body['table_name'] = self.table_name
7630
+ if self.time_series: body['time_series'] = self.time_series
7631
+ return body
7632
+
6077
7633
  @classmethod
6078
7634
  def from_dict(cls, d: Dict[str, any]) -> UpdateMonitor:
6079
7635
  """Deserializes the UpdateMonitor from a dictionary."""
@@ -6111,6 +7667,14 @@ class UpdatePermissions:
6111
7667
  if self.securable_type is not None: body['securable_type'] = self.securable_type.value
6112
7668
  return body
6113
7669
 
7670
+ def as_shallow_dict(self) -> dict:
7671
+ """Serializes the UpdatePermissions into a shallow dictionary of its immediate attributes."""
7672
+ body = {}
7673
+ if self.changes: body['changes'] = self.changes
7674
+ if self.full_name is not None: body['full_name'] = self.full_name
7675
+ if self.securable_type is not None: body['securable_type'] = self.securable_type
7676
+ return body
7677
+
6114
7678
  @classmethod
6115
7679
  def from_dict(cls, d: Dict[str, any]) -> UpdatePermissions:
6116
7680
  """Deserializes the UpdatePermissions from a dictionary."""
@@ -6142,6 +7706,15 @@ class UpdateRegisteredModelRequest:
6142
7706
  if self.owner is not None: body['owner'] = self.owner
6143
7707
  return body
6144
7708
 
7709
+ def as_shallow_dict(self) -> dict:
7710
+ """Serializes the UpdateRegisteredModelRequest into a shallow dictionary of its immediate attributes."""
7711
+ body = {}
7712
+ if self.comment is not None: body['comment'] = self.comment
7713
+ if self.full_name is not None: body['full_name'] = self.full_name
7714
+ if self.new_name is not None: body['new_name'] = self.new_name
7715
+ if self.owner is not None: body['owner'] = self.owner
7716
+ return body
7717
+
6145
7718
  @classmethod
6146
7719
  def from_dict(cls, d: Dict[str, any]) -> UpdateRegisteredModelRequest:
6147
7720
  """Deserializes the UpdateRegisteredModelRequest from a dictionary."""
@@ -6159,6 +7732,11 @@ class UpdateResponse:
6159
7732
  body = {}
6160
7733
  return body
6161
7734
 
7735
+ def as_shallow_dict(self) -> dict:
7736
+ """Serializes the UpdateResponse into a shallow dictionary of its immediate attributes."""
7737
+ body = {}
7738
+ return body
7739
+
6162
7740
  @classmethod
6163
7741
  def from_dict(cls, d: Dict[str, any]) -> UpdateResponse:
6164
7742
  """Deserializes the UpdateResponse from a dictionary."""
@@ -6197,6 +7775,18 @@ class UpdateSchema:
6197
7775
  if self.properties: body['properties'] = self.properties
6198
7776
  return body
6199
7777
 
7778
+ def as_shallow_dict(self) -> dict:
7779
+ """Serializes the UpdateSchema into a shallow dictionary of its immediate attributes."""
7780
+ body = {}
7781
+ if self.comment is not None: body['comment'] = self.comment
7782
+ if self.enable_predictive_optimization is not None:
7783
+ body['enable_predictive_optimization'] = self.enable_predictive_optimization
7784
+ if self.full_name is not None: body['full_name'] = self.full_name
7785
+ if self.new_name is not None: body['new_name'] = self.new_name
7786
+ if self.owner is not None: body['owner'] = self.owner
7787
+ if self.properties: body['properties'] = self.properties
7788
+ return body
7789
+
6200
7790
  @classmethod
6201
7791
  def from_dict(cls, d: Dict[str, any]) -> UpdateSchema:
6202
7792
  """Deserializes the UpdateSchema from a dictionary."""
@@ -6269,6 +7859,25 @@ class UpdateStorageCredential:
6269
7859
  if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
6270
7860
  return body
6271
7861
 
7862
+ def as_shallow_dict(self) -> dict:
7863
+ """Serializes the UpdateStorageCredential into a shallow dictionary of its immediate attributes."""
7864
+ body = {}
7865
+ if self.aws_iam_role: body['aws_iam_role'] = self.aws_iam_role
7866
+ if self.azure_managed_identity: body['azure_managed_identity'] = self.azure_managed_identity
7867
+ if self.azure_service_principal: body['azure_service_principal'] = self.azure_service_principal
7868
+ if self.cloudflare_api_token: body['cloudflare_api_token'] = self.cloudflare_api_token
7869
+ if self.comment is not None: body['comment'] = self.comment
7870
+ if self.databricks_gcp_service_account:
7871
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account
7872
+ if self.force is not None: body['force'] = self.force
7873
+ if self.isolation_mode is not None: body['isolation_mode'] = self.isolation_mode
7874
+ if self.name is not None: body['name'] = self.name
7875
+ if self.new_name is not None: body['new_name'] = self.new_name
7876
+ if self.owner is not None: body['owner'] = self.owner
7877
+ if self.read_only is not None: body['read_only'] = self.read_only
7878
+ if self.skip_validation is not None: body['skip_validation'] = self.skip_validation
7879
+ return body
7880
+
6272
7881
  @classmethod
6273
7882
  def from_dict(cls, d: Dict[str, any]) -> UpdateStorageCredential:
6274
7883
  """Deserializes the UpdateStorageCredential from a dictionary."""
@@ -6312,6 +7921,15 @@ class UpdateVolumeRequestContent:
6312
7921
  if self.owner is not None: body['owner'] = self.owner
6313
7922
  return body
6314
7923
 
7924
+ def as_shallow_dict(self) -> dict:
7925
+ """Serializes the UpdateVolumeRequestContent into a shallow dictionary of its immediate attributes."""
7926
+ body = {}
7927
+ if self.comment is not None: body['comment'] = self.comment
7928
+ if self.name is not None: body['name'] = self.name
7929
+ if self.new_name is not None: body['new_name'] = self.new_name
7930
+ if self.owner is not None: body['owner'] = self.owner
7931
+ return body
7932
+
6315
7933
  @classmethod
6316
7934
  def from_dict(cls, d: Dict[str, any]) -> UpdateVolumeRequestContent:
6317
7935
  """Deserializes the UpdateVolumeRequestContent from a dictionary."""
@@ -6340,6 +7958,14 @@ class UpdateWorkspaceBindings:
6340
7958
  if self.unassign_workspaces: body['unassign_workspaces'] = [v for v in self.unassign_workspaces]
6341
7959
  return body
6342
7960
 
7961
+ def as_shallow_dict(self) -> dict:
7962
+ """Serializes the UpdateWorkspaceBindings into a shallow dictionary of its immediate attributes."""
7963
+ body = {}
7964
+ if self.assign_workspaces: body['assign_workspaces'] = self.assign_workspaces
7965
+ if self.name is not None: body['name'] = self.name
7966
+ if self.unassign_workspaces: body['unassign_workspaces'] = self.unassign_workspaces
7967
+ return body
7968
+
6343
7969
  @classmethod
6344
7970
  def from_dict(cls, d: Dict[str, any]) -> UpdateWorkspaceBindings:
6345
7971
  """Deserializes the UpdateWorkspaceBindings from a dictionary."""
@@ -6371,6 +7997,15 @@ class UpdateWorkspaceBindingsParameters:
6371
7997
  if self.securable_type is not None: body['securable_type'] = self.securable_type.value
6372
7998
  return body
6373
7999
 
8000
+ def as_shallow_dict(self) -> dict:
8001
+ """Serializes the UpdateWorkspaceBindingsParameters into a shallow dictionary of its immediate attributes."""
8002
+ body = {}
8003
+ if self.add: body['add'] = self.add
8004
+ if self.remove: body['remove'] = self.remove
8005
+ if self.securable_name is not None: body['securable_name'] = self.securable_name
8006
+ if self.securable_type is not None: body['securable_type'] = self.securable_type
8007
+ return body
8008
+
6374
8009
  @classmethod
6375
8010
  def from_dict(cls, d: Dict[str, any]) -> UpdateWorkspaceBindingsParameters:
6376
8011
  """Deserializes the UpdateWorkspaceBindingsParameters from a dictionary."""
@@ -6418,6 +8053,19 @@ class ValidateCredentialRequest:
6418
8053
  if self.url is not None: body['url'] = self.url
6419
8054
  return body
6420
8055
 
8056
+ def as_shallow_dict(self) -> dict:
8057
+ """Serializes the ValidateCredentialRequest into a shallow dictionary of its immediate attributes."""
8058
+ body = {}
8059
+ if self.aws_iam_role: body['aws_iam_role'] = self.aws_iam_role
8060
+ if self.azure_managed_identity: body['azure_managed_identity'] = self.azure_managed_identity
8061
+ if self.credential_name is not None: body['credential_name'] = self.credential_name
8062
+ if self.external_location_name is not None:
8063
+ body['external_location_name'] = self.external_location_name
8064
+ if self.purpose is not None: body['purpose'] = self.purpose
8065
+ if self.read_only is not None: body['read_only'] = self.read_only
8066
+ if self.url is not None: body['url'] = self.url
8067
+ return body
8068
+
6421
8069
  @classmethod
6422
8070
  def from_dict(cls, d: Dict[str, any]) -> ValidateCredentialRequest:
6423
8071
  """Deserializes the ValidateCredentialRequest from a dictionary."""
@@ -6446,6 +8094,13 @@ class ValidateCredentialResponse:
6446
8094
  if self.results: body['results'] = [v.as_dict() for v in self.results]
6447
8095
  return body
6448
8096
 
8097
+ def as_shallow_dict(self) -> dict:
8098
+ """Serializes the ValidateCredentialResponse into a shallow dictionary of its immediate attributes."""
8099
+ body = {}
8100
+ if self.is_dir is not None: body['isDir'] = self.is_dir
8101
+ if self.results: body['results'] = self.results
8102
+ return body
8103
+
6449
8104
  @classmethod
6450
8105
  def from_dict(cls, d: Dict[str, any]) -> ValidateCredentialResponse:
6451
8106
  """Deserializes the ValidateCredentialResponse from a dictionary."""
@@ -6508,6 +8163,23 @@ class ValidateStorageCredential:
6508
8163
  if self.url is not None: body['url'] = self.url
6509
8164
  return body
6510
8165
 
8166
+ def as_shallow_dict(self) -> dict:
8167
+ """Serializes the ValidateStorageCredential into a shallow dictionary of its immediate attributes."""
8168
+ body = {}
8169
+ if self.aws_iam_role: body['aws_iam_role'] = self.aws_iam_role
8170
+ if self.azure_managed_identity: body['azure_managed_identity'] = self.azure_managed_identity
8171
+ if self.azure_service_principal: body['azure_service_principal'] = self.azure_service_principal
8172
+ if self.cloudflare_api_token: body['cloudflare_api_token'] = self.cloudflare_api_token
8173
+ if self.databricks_gcp_service_account:
8174
+ body['databricks_gcp_service_account'] = self.databricks_gcp_service_account
8175
+ if self.external_location_name is not None:
8176
+ body['external_location_name'] = self.external_location_name
8177
+ if self.read_only is not None: body['read_only'] = self.read_only
8178
+ if self.storage_credential_name is not None:
8179
+ body['storage_credential_name'] = self.storage_credential_name
8180
+ if self.url is not None: body['url'] = self.url
8181
+ return body
8182
+
6511
8183
  @classmethod
6512
8184
  def from_dict(cls, d: Dict[str, any]) -> ValidateStorageCredential:
6513
8185
  """Deserializes the ValidateStorageCredential from a dictionary."""
@@ -6539,6 +8211,13 @@ class ValidateStorageCredentialResponse:
6539
8211
  if self.results: body['results'] = [v.as_dict() for v in self.results]
6540
8212
  return body
6541
8213
 
8214
+ def as_shallow_dict(self) -> dict:
8215
+ """Serializes the ValidateStorageCredentialResponse into a shallow dictionary of its immediate attributes."""
8216
+ body = {}
8217
+ if self.is_dir is not None: body['isDir'] = self.is_dir
8218
+ if self.results: body['results'] = self.results
8219
+ return body
8220
+
6542
8221
  @classmethod
6543
8222
  def from_dict(cls, d: Dict[str, any]) -> ValidateStorageCredentialResponse:
6544
8223
  """Deserializes the ValidateStorageCredentialResponse from a dictionary."""
@@ -6564,6 +8243,14 @@ class ValidationResult:
6564
8243
  if self.result is not None: body['result'] = self.result.value
6565
8244
  return body
6566
8245
 
8246
+ def as_shallow_dict(self) -> dict:
8247
+ """Serializes the ValidationResult into a shallow dictionary of its immediate attributes."""
8248
+ body = {}
8249
+ if self.message is not None: body['message'] = self.message
8250
+ if self.operation is not None: body['operation'] = self.operation
8251
+ if self.result is not None: body['result'] = self.result
8252
+ return body
8253
+
6567
8254
  @classmethod
6568
8255
  def from_dict(cls, d: Dict[str, any]) -> ValidationResult:
6569
8256
  """Deserializes the ValidationResult from a dictionary."""
@@ -6663,6 +8350,28 @@ class VolumeInfo:
6663
8350
  if self.volume_type is not None: body['volume_type'] = self.volume_type.value
6664
8351
  return body
6665
8352
 
8353
+ def as_shallow_dict(self) -> dict:
8354
+ """Serializes the VolumeInfo into a shallow dictionary of its immediate attributes."""
8355
+ body = {}
8356
+ if self.access_point is not None: body['access_point'] = self.access_point
8357
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
8358
+ if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
8359
+ if self.comment is not None: body['comment'] = self.comment
8360
+ if self.created_at is not None: body['created_at'] = self.created_at
8361
+ if self.created_by is not None: body['created_by'] = self.created_by
8362
+ if self.encryption_details: body['encryption_details'] = self.encryption_details
8363
+ if self.full_name is not None: body['full_name'] = self.full_name
8364
+ if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
8365
+ if self.name is not None: body['name'] = self.name
8366
+ if self.owner is not None: body['owner'] = self.owner
8367
+ if self.schema_name is not None: body['schema_name'] = self.schema_name
8368
+ if self.storage_location is not None: body['storage_location'] = self.storage_location
8369
+ if self.updated_at is not None: body['updated_at'] = self.updated_at
8370
+ if self.updated_by is not None: body['updated_by'] = self.updated_by
8371
+ if self.volume_id is not None: body['volume_id'] = self.volume_id
8372
+ if self.volume_type is not None: body['volume_type'] = self.volume_type
8373
+ return body
8374
+
6666
8375
  @classmethod
6667
8376
  def from_dict(cls, d: Dict[str, any]) -> VolumeInfo:
6668
8377
  """Deserializes the VolumeInfo from a dictionary."""
@@ -6704,6 +8413,13 @@ class WorkspaceBinding:
6704
8413
  if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
6705
8414
  return body
6706
8415
 
8416
+ def as_shallow_dict(self) -> dict:
8417
+ """Serializes the WorkspaceBinding into a shallow dictionary of its immediate attributes."""
8418
+ body = {}
8419
+ if self.binding_type is not None: body['binding_type'] = self.binding_type
8420
+ if self.workspace_id is not None: body['workspace_id'] = self.workspace_id
8421
+ return body
8422
+
6707
8423
  @classmethod
6708
8424
  def from_dict(cls, d: Dict[str, any]) -> WorkspaceBinding:
6709
8425
  """Deserializes the WorkspaceBinding from a dictionary."""
@@ -6735,6 +8451,13 @@ class WorkspaceBindingsResponse:
6735
8451
  if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
6736
8452
  return body
6737
8453
 
8454
+ def as_shallow_dict(self) -> dict:
8455
+ """Serializes the WorkspaceBindingsResponse into a shallow dictionary of its immediate attributes."""
8456
+ body = {}
8457
+ if self.bindings: body['bindings'] = self.bindings
8458
+ if self.next_page_token is not None: body['next_page_token'] = self.next_page_token
8459
+ return body
8460
+
6738
8461
  @classmethod
6739
8462
  def from_dict(cls, d: Dict[str, any]) -> WorkspaceBindingsResponse:
6740
8463
  """Deserializes the WorkspaceBindingsResponse from a dictionary."""
@@ -7502,9 +9225,9 @@ class CredentialsAPI:
7502
9225
  tenant. Each credential is subject to Unity Catalog access-control policies that control which users and
7503
9226
  groups can access the credential.
7504
9227
 
7505
- To create credentials, you must be a Databricks account admin or have the `CREATE SERVICE CREDENTIAL
9228
+ To create credentials, you must be a Databricks account admin or have the `CREATE SERVICE CREDENTIAL`
7506
9229
  privilege. The user who creates the credential can delegate ownership to another user or group to manage
7507
- permissions on it"""
9230
+ permissions on it."""
7508
9231
 
7509
9232
  def __init__(self, api_client):
7510
9233
  self._api = api_client
@@ -7516,7 +9239,7 @@ class CredentialsAPI:
7516
9239
  azure_managed_identity: Optional[AzureManagedIdentity] = None,
7517
9240
  azure_service_principal: Optional[AzureServicePrincipal] = None,
7518
9241
  comment: Optional[str] = None,
7519
- gcp_service_account_key: Optional[GcpServiceAccountKey] = None,
9242
+ databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None,
7520
9243
  purpose: Optional[CredentialPurpose] = None,
7521
9244
  read_only: Optional[bool] = None,
7522
9245
  skip_validation: Optional[bool] = None) -> CredentialInfo:
@@ -7536,10 +9259,11 @@ class CredentialsAPI:
7536
9259
  :param azure_managed_identity: :class:`AzureManagedIdentity` (optional)
7537
9260
  The Azure managed identity configuration.
7538
9261
  :param azure_service_principal: :class:`AzureServicePrincipal` (optional)
7539
- The Azure service principal configuration.
9262
+ The Azure service principal configuration. Only applicable when purpose is **STORAGE**.
7540
9263
  :param comment: str (optional)
7541
9264
  Comment associated with the credential.
7542
- :param gcp_service_account_key: :class:`GcpServiceAccountKey` (optional)
9265
+ :param databricks_gcp_service_account: :class:`DatabricksGcpServiceAccount` (optional)
9266
+ GCP long-lived credential. Databricks-created Google Cloud Storage service account.
7543
9267
  :param purpose: :class:`CredentialPurpose` (optional)
7544
9268
  Indicates the purpose of the credential.
7545
9269
  :param read_only: bool (optional)
@@ -7557,8 +9281,8 @@ class CredentialsAPI:
7557
9281
  if azure_service_principal is not None:
7558
9282
  body['azure_service_principal'] = azure_service_principal.as_dict()
7559
9283
  if comment is not None: body['comment'] = comment
7560
- if gcp_service_account_key is not None:
7561
- body['gcp_service_account_key'] = gcp_service_account_key.as_dict()
9284
+ if databricks_gcp_service_account is not None:
9285
+ body['databricks_gcp_service_account'] = databricks_gcp_service_account.as_dict()
7562
9286
  if name is not None: body['name'] = name
7563
9287
  if purpose is not None: body['purpose'] = purpose.value
7564
9288
  if read_only is not None: body['read_only'] = read_only
@@ -7590,10 +9314,11 @@ class CredentialsAPI:
7590
9314
  self._api.do('DELETE', f'/api/2.1/unity-catalog/credentials/{name_arg}', query=query, headers=headers)
7591
9315
 
7592
9316
  def generate_temporary_service_credential(
7593
- self,
7594
- credential_name: str,
7595
- *,
7596
- azure_options: Optional[GenerateTemporaryServiceCredentialAzureOptions] = None
9317
+ self,
9318
+ credential_name: str,
9319
+ *,
9320
+ azure_options: Optional[GenerateTemporaryServiceCredentialAzureOptions] = None,
9321
+ gcp_options: Optional[GenerateTemporaryServiceCredentialGcpOptions] = None
7597
9322
  ) -> TemporaryCredentials:
7598
9323
  """Generate a temporary service credential.
7599
9324
 
@@ -7603,13 +9328,16 @@ class CredentialsAPI:
7603
9328
  :param credential_name: str
7604
9329
  The name of the service credential used to generate a temporary credential
7605
9330
  :param azure_options: :class:`GenerateTemporaryServiceCredentialAzureOptions` (optional)
7606
- Options to customize the requested temporary credential
9331
+ The Azure cloud options to customize the requested temporary credential
9332
+ :param gcp_options: :class:`GenerateTemporaryServiceCredentialGcpOptions` (optional)
9333
+ The GCP cloud options to customize the requested temporary credential
7607
9334
 
7608
9335
  :returns: :class:`TemporaryCredentials`
7609
9336
  """
7610
9337
  body = {}
7611
9338
  if azure_options is not None: body['azure_options'] = azure_options.as_dict()
7612
9339
  if credential_name is not None: body['credential_name'] = credential_name
9340
+ if gcp_options is not None: body['gcp_options'] = gcp_options.as_dict()
7613
9341
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
7614
9342
 
7615
9343
  res = self._api.do('POST',
@@ -7683,6 +9411,7 @@ class CredentialsAPI:
7683
9411
  azure_managed_identity: Optional[AzureManagedIdentity] = None,
7684
9412
  azure_service_principal: Optional[AzureServicePrincipal] = None,
7685
9413
  comment: Optional[str] = None,
9414
+ databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None,
7686
9415
  force: Optional[bool] = None,
7687
9416
  isolation_mode: Optional[IsolationMode] = None,
7688
9417
  new_name: Optional[str] = None,
@@ -7703,9 +9432,11 @@ class CredentialsAPI:
7703
9432
  :param azure_managed_identity: :class:`AzureManagedIdentity` (optional)
7704
9433
  The Azure managed identity configuration.
7705
9434
  :param azure_service_principal: :class:`AzureServicePrincipal` (optional)
7706
- The Azure service principal configuration.
9435
+ The Azure service principal configuration. Only applicable when purpose is **STORAGE**.
7707
9436
  :param comment: str (optional)
7708
9437
  Comment associated with the credential.
9438
+ :param databricks_gcp_service_account: :class:`DatabricksGcpServiceAccount` (optional)
9439
+ GCP long-lived credential. Databricks-created Google Cloud Storage service account.
7709
9440
  :param force: bool (optional)
7710
9441
  Force an update even if there are dependent services (when purpose is **SERVICE**) or dependent
7711
9442
  external locations and external tables (when purpose is **STORAGE**).
@@ -7730,6 +9461,8 @@ class CredentialsAPI:
7730
9461
  if azure_service_principal is not None:
7731
9462
  body['azure_service_principal'] = azure_service_principal.as_dict()
7732
9463
  if comment is not None: body['comment'] = comment
9464
+ if databricks_gcp_service_account is not None:
9465
+ body['databricks_gcp_service_account'] = databricks_gcp_service_account.as_dict()
7733
9466
  if force is not None: body['force'] = force
7734
9467
  if isolation_mode is not None: body['isolation_mode'] = isolation_mode.value
7735
9468
  if new_name is not None: body['new_name'] = new_name