databricks-sdk 0.66.0__py3-none-any.whl → 0.68.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 (47) hide show
  1. databricks/sdk/__init__.py +10 -3
  2. databricks/sdk/_base_client.py +4 -1
  3. databricks/sdk/common/lro.py +17 -0
  4. databricks/sdk/common/types/__init__.py +0 -0
  5. databricks/sdk/common/types/fieldmask.py +39 -0
  6. databricks/sdk/credentials_provider.py +61 -12
  7. databricks/sdk/dbutils.py +5 -1
  8. databricks/sdk/errors/parser.py +8 -3
  9. databricks/sdk/mixins/files.py +1 -0
  10. databricks/sdk/oidc_token_supplier.py +80 -0
  11. databricks/sdk/retries.py +102 -2
  12. databricks/sdk/service/_internal.py +93 -1
  13. databricks/sdk/service/agentbricks.py +1 -1
  14. databricks/sdk/service/apps.py +264 -1
  15. databricks/sdk/service/billing.py +2 -3
  16. databricks/sdk/service/catalog.py +1030 -537
  17. databricks/sdk/service/cleanrooms.py +3 -3
  18. databricks/sdk/service/compute.py +21 -33
  19. databricks/sdk/service/dashboards.py +51 -3
  20. databricks/sdk/service/database.py +99 -8
  21. databricks/sdk/service/dataquality.py +1145 -0
  22. databricks/sdk/service/files.py +2 -1
  23. databricks/sdk/service/iam.py +6 -5
  24. databricks/sdk/service/iamv2.py +1 -1
  25. databricks/sdk/service/jobs.py +6 -9
  26. databricks/sdk/service/marketplace.py +3 -1
  27. databricks/sdk/service/ml.py +3 -1
  28. databricks/sdk/service/oauth2.py +1 -1
  29. databricks/sdk/service/pipelines.py +5 -6
  30. databricks/sdk/service/provisioning.py +544 -655
  31. databricks/sdk/service/qualitymonitorv2.py +1 -1
  32. databricks/sdk/service/serving.py +59 -1
  33. databricks/sdk/service/settings.py +5 -2
  34. databricks/sdk/service/settingsv2.py +1 -1
  35. databricks/sdk/service/sharing.py +12 -3
  36. databricks/sdk/service/sql.py +305 -70
  37. databricks/sdk/service/tags.py +1 -1
  38. databricks/sdk/service/vectorsearch.py +3 -1
  39. databricks/sdk/service/workspace.py +70 -17
  40. databricks/sdk/version.py +1 -1
  41. {databricks_sdk-0.66.0.dist-info → databricks_sdk-0.68.0.dist-info}/METADATA +4 -2
  42. databricks_sdk-0.68.0.dist-info/RECORD +83 -0
  43. databricks_sdk-0.66.0.dist-info/RECORD +0 -79
  44. {databricks_sdk-0.66.0.dist-info → databricks_sdk-0.68.0.dist-info}/WHEEL +0 -0
  45. {databricks_sdk-0.66.0.dist-info → databricks_sdk-0.68.0.dist-info}/licenses/LICENSE +0 -0
  46. {databricks_sdk-0.66.0.dist-info → databricks_sdk-0.68.0.dist-info}/licenses/NOTICE +0 -0
  47. {databricks_sdk-0.66.0.dist-info → databricks_sdk-0.68.0.dist-info}/top_level.txt +0 -0
@@ -10,8 +10,10 @@ from datetime import timedelta
10
10
  from enum import Enum
11
11
  from typing import Any, Callable, Dict, Iterator, List, Optional
12
12
 
13
+ from databricks.sdk.service._internal import (Wait, _enum, _from_dict,
14
+ _repeated_dict, _repeated_enum)
15
+
13
16
  from ..errors import OperationFailed
14
- from ._internal import Wait, _enum, _from_dict, _repeated_dict, _repeated_enum
15
17
 
16
18
  _LOG = logging.getLogger("databricks.sdk")
17
19
 
@@ -63,8 +65,191 @@ class AccessRequestDestinations:
63
65
  )
64
66
 
65
67
 
68
+ @dataclass
69
+ class AccountsCreateMetastoreAssignmentResponse:
70
+ """The metastore assignment was successfully created."""
71
+
72
+ def as_dict(self) -> dict:
73
+ """Serializes the AccountsCreateMetastoreAssignmentResponse into a dictionary suitable for use as a JSON request body."""
74
+ body = {}
75
+ return body
76
+
77
+ def as_shallow_dict(self) -> dict:
78
+ """Serializes the AccountsCreateMetastoreAssignmentResponse into a shallow dictionary of its immediate attributes."""
79
+ body = {}
80
+ return body
81
+
82
+ @classmethod
83
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsCreateMetastoreAssignmentResponse:
84
+ """Deserializes the AccountsCreateMetastoreAssignmentResponse from a dictionary."""
85
+ return cls()
86
+
87
+
88
+ @dataclass
89
+ class AccountsCreateMetastoreResponse:
90
+ metastore_info: Optional[MetastoreInfo] = None
91
+
92
+ def as_dict(self) -> dict:
93
+ """Serializes the AccountsCreateMetastoreResponse into a dictionary suitable for use as a JSON request body."""
94
+ body = {}
95
+ if self.metastore_info:
96
+ body["metastore_info"] = self.metastore_info.as_dict()
97
+ return body
98
+
99
+ def as_shallow_dict(self) -> dict:
100
+ """Serializes the AccountsCreateMetastoreResponse into a shallow dictionary of its immediate attributes."""
101
+ body = {}
102
+ if self.metastore_info:
103
+ body["metastore_info"] = self.metastore_info
104
+ return body
105
+
106
+ @classmethod
107
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsCreateMetastoreResponse:
108
+ """Deserializes the AccountsCreateMetastoreResponse from a dictionary."""
109
+ return cls(metastore_info=_from_dict(d, "metastore_info", MetastoreInfo))
110
+
111
+
112
+ @dataclass
113
+ class AccountsCreateStorageCredentialInfo:
114
+ credential_info: Optional[StorageCredentialInfo] = None
115
+
116
+ def as_dict(self) -> dict:
117
+ """Serializes the AccountsCreateStorageCredentialInfo into a dictionary suitable for use as a JSON request body."""
118
+ body = {}
119
+ if self.credential_info:
120
+ body["credential_info"] = self.credential_info.as_dict()
121
+ return body
122
+
123
+ def as_shallow_dict(self) -> dict:
124
+ """Serializes the AccountsCreateStorageCredentialInfo into a shallow dictionary of its immediate attributes."""
125
+ body = {}
126
+ if self.credential_info:
127
+ body["credential_info"] = self.credential_info
128
+ return body
129
+
130
+ @classmethod
131
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsCreateStorageCredentialInfo:
132
+ """Deserializes the AccountsCreateStorageCredentialInfo from a dictionary."""
133
+ return cls(credential_info=_from_dict(d, "credential_info", StorageCredentialInfo))
134
+
135
+
136
+ @dataclass
137
+ class AccountsDeleteMetastoreAssignmentResponse:
138
+ """The metastore assignment was successfully deleted."""
139
+
140
+ def as_dict(self) -> dict:
141
+ """Serializes the AccountsDeleteMetastoreAssignmentResponse into a dictionary suitable for use as a JSON request body."""
142
+ body = {}
143
+ return body
144
+
145
+ def as_shallow_dict(self) -> dict:
146
+ """Serializes the AccountsDeleteMetastoreAssignmentResponse into a shallow dictionary of its immediate attributes."""
147
+ body = {}
148
+ return body
149
+
150
+ @classmethod
151
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsDeleteMetastoreAssignmentResponse:
152
+ """Deserializes the AccountsDeleteMetastoreAssignmentResponse from a dictionary."""
153
+ return cls()
154
+
155
+
156
+ @dataclass
157
+ class AccountsDeleteMetastoreResponse:
158
+ """The metastore was successfully deleted."""
159
+
160
+ def as_dict(self) -> dict:
161
+ """Serializes the AccountsDeleteMetastoreResponse into a dictionary suitable for use as a JSON request body."""
162
+ body = {}
163
+ return body
164
+
165
+ def as_shallow_dict(self) -> dict:
166
+ """Serializes the AccountsDeleteMetastoreResponse into a shallow dictionary of its immediate attributes."""
167
+ body = {}
168
+ return body
169
+
170
+ @classmethod
171
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsDeleteMetastoreResponse:
172
+ """Deserializes the AccountsDeleteMetastoreResponse from a dictionary."""
173
+ return cls()
174
+
175
+
176
+ @dataclass
177
+ class AccountsDeleteStorageCredentialResponse:
178
+ """The storage credential was successfully deleted."""
179
+
180
+ def as_dict(self) -> dict:
181
+ """Serializes the AccountsDeleteStorageCredentialResponse into a dictionary suitable for use as a JSON request body."""
182
+ body = {}
183
+ return body
184
+
185
+ def as_shallow_dict(self) -> dict:
186
+ """Serializes the AccountsDeleteStorageCredentialResponse into a shallow dictionary of its immediate attributes."""
187
+ body = {}
188
+ return body
189
+
190
+ @classmethod
191
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsDeleteStorageCredentialResponse:
192
+ """Deserializes the AccountsDeleteStorageCredentialResponse from a dictionary."""
193
+ return cls()
194
+
195
+
196
+ @dataclass
197
+ class AccountsGetMetastoreResponse:
198
+ """The metastore was successfully returned."""
199
+
200
+ metastore_info: Optional[MetastoreInfo] = None
201
+
202
+ def as_dict(self) -> dict:
203
+ """Serializes the AccountsGetMetastoreResponse into a dictionary suitable for use as a JSON request body."""
204
+ body = {}
205
+ if self.metastore_info:
206
+ body["metastore_info"] = self.metastore_info.as_dict()
207
+ return body
208
+
209
+ def as_shallow_dict(self) -> dict:
210
+ """Serializes the AccountsGetMetastoreResponse into a shallow dictionary of its immediate attributes."""
211
+ body = {}
212
+ if self.metastore_info:
213
+ body["metastore_info"] = self.metastore_info
214
+ return body
215
+
216
+ @classmethod
217
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsGetMetastoreResponse:
218
+ """Deserializes the AccountsGetMetastoreResponse from a dictionary."""
219
+ return cls(metastore_info=_from_dict(d, "metastore_info", MetastoreInfo))
220
+
221
+
222
+ @dataclass
223
+ class AccountsListMetastoresResponse:
224
+ """Metastores were returned successfully."""
225
+
226
+ metastores: Optional[List[MetastoreInfo]] = None
227
+ """An array of metastore information objects."""
228
+
229
+ def as_dict(self) -> dict:
230
+ """Serializes the AccountsListMetastoresResponse into a dictionary suitable for use as a JSON request body."""
231
+ body = {}
232
+ if self.metastores:
233
+ body["metastores"] = [v.as_dict() for v in self.metastores]
234
+ return body
235
+
236
+ def as_shallow_dict(self) -> dict:
237
+ """Serializes the AccountsListMetastoresResponse into a shallow dictionary of its immediate attributes."""
238
+ body = {}
239
+ if self.metastores:
240
+ body["metastores"] = self.metastores
241
+ return body
242
+
243
+ @classmethod
244
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsListMetastoresResponse:
245
+ """Deserializes the AccountsListMetastoresResponse from a dictionary."""
246
+ return cls(metastores=_repeated_dict(d, "metastores", MetastoreInfo))
247
+
248
+
66
249
  @dataclass
67
250
  class AccountsMetastoreAssignment:
251
+ """The workspace metastore assignment was successfully returned."""
252
+
68
253
  metastore_assignment: Optional[MetastoreAssignment] = None
69
254
 
70
255
  def as_dict(self) -> dict:
@@ -88,50 +273,100 @@ class AccountsMetastoreAssignment:
88
273
 
89
274
 
90
275
  @dataclass
91
- class AccountsMetastoreInfo:
276
+ class AccountsStorageCredentialInfo:
277
+ """The storage credential was successfully retrieved."""
278
+
279
+ credential_info: Optional[StorageCredentialInfo] = None
280
+
281
+ def as_dict(self) -> dict:
282
+ """Serializes the AccountsStorageCredentialInfo into a dictionary suitable for use as a JSON request body."""
283
+ body = {}
284
+ if self.credential_info:
285
+ body["credential_info"] = self.credential_info.as_dict()
286
+ return body
287
+
288
+ def as_shallow_dict(self) -> dict:
289
+ """Serializes the AccountsStorageCredentialInfo into a shallow dictionary of its immediate attributes."""
290
+ body = {}
291
+ if self.credential_info:
292
+ body["credential_info"] = self.credential_info
293
+ return body
294
+
295
+ @classmethod
296
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsStorageCredentialInfo:
297
+ """Deserializes the AccountsStorageCredentialInfo from a dictionary."""
298
+ return cls(credential_info=_from_dict(d, "credential_info", StorageCredentialInfo))
299
+
300
+
301
+ @dataclass
302
+ class AccountsUpdateMetastoreAssignmentResponse:
303
+ """The metastore assignment was successfully updated."""
304
+
305
+ def as_dict(self) -> dict:
306
+ """Serializes the AccountsUpdateMetastoreAssignmentResponse into a dictionary suitable for use as a JSON request body."""
307
+ body = {}
308
+ return body
309
+
310
+ def as_shallow_dict(self) -> dict:
311
+ """Serializes the AccountsUpdateMetastoreAssignmentResponse into a shallow dictionary of its immediate attributes."""
312
+ body = {}
313
+ return body
314
+
315
+ @classmethod
316
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsUpdateMetastoreAssignmentResponse:
317
+ """Deserializes the AccountsUpdateMetastoreAssignmentResponse from a dictionary."""
318
+ return cls()
319
+
320
+
321
+ @dataclass
322
+ class AccountsUpdateMetastoreResponse:
323
+ """The metastore update request succeeded."""
324
+
92
325
  metastore_info: Optional[MetastoreInfo] = None
93
326
 
94
327
  def as_dict(self) -> dict:
95
- """Serializes the AccountsMetastoreInfo into a dictionary suitable for use as a JSON request body."""
328
+ """Serializes the AccountsUpdateMetastoreResponse into a dictionary suitable for use as a JSON request body."""
96
329
  body = {}
97
330
  if self.metastore_info:
98
331
  body["metastore_info"] = self.metastore_info.as_dict()
99
332
  return body
100
333
 
101
334
  def as_shallow_dict(self) -> dict:
102
- """Serializes the AccountsMetastoreInfo into a shallow dictionary of its immediate attributes."""
335
+ """Serializes the AccountsUpdateMetastoreResponse into a shallow dictionary of its immediate attributes."""
103
336
  body = {}
104
337
  if self.metastore_info:
105
338
  body["metastore_info"] = self.metastore_info
106
339
  return body
107
340
 
108
341
  @classmethod
109
- def from_dict(cls, d: Dict[str, Any]) -> AccountsMetastoreInfo:
110
- """Deserializes the AccountsMetastoreInfo from a dictionary."""
342
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsUpdateMetastoreResponse:
343
+ """Deserializes the AccountsUpdateMetastoreResponse from a dictionary."""
111
344
  return cls(metastore_info=_from_dict(d, "metastore_info", MetastoreInfo))
112
345
 
113
346
 
114
347
  @dataclass
115
- class AccountsStorageCredentialInfo:
348
+ class AccountsUpdateStorageCredentialResponse:
349
+ """The storage credential was successfully updated."""
350
+
116
351
  credential_info: Optional[StorageCredentialInfo] = None
117
352
 
118
353
  def as_dict(self) -> dict:
119
- """Serializes the AccountsStorageCredentialInfo into a dictionary suitable for use as a JSON request body."""
354
+ """Serializes the AccountsUpdateStorageCredentialResponse into a dictionary suitable for use as a JSON request body."""
120
355
  body = {}
121
356
  if self.credential_info:
122
357
  body["credential_info"] = self.credential_info.as_dict()
123
358
  return body
124
359
 
125
360
  def as_shallow_dict(self) -> dict:
126
- """Serializes the AccountsStorageCredentialInfo into a shallow dictionary of its immediate attributes."""
361
+ """Serializes the AccountsUpdateStorageCredentialResponse into a shallow dictionary of its immediate attributes."""
127
362
  body = {}
128
363
  if self.credential_info:
129
364
  body["credential_info"] = self.credential_info
130
365
  return body
131
366
 
132
367
  @classmethod
133
- def from_dict(cls, d: Dict[str, Any]) -> AccountsStorageCredentialInfo:
134
- """Deserializes the AccountsStorageCredentialInfo from a dictionary."""
368
+ def from_dict(cls, d: Dict[str, Any]) -> AccountsUpdateStorageCredentialResponse:
369
+ """Deserializes the AccountsUpdateStorageCredentialResponse from a dictionary."""
135
370
  return cls(credential_info=_from_dict(d, "credential_info", StorageCredentialInfo))
136
371
 
137
372
 
@@ -1666,58 +1901,185 @@ class CreateAccessRequestResponse:
1666
1901
 
1667
1902
 
1668
1903
  @dataclass
1669
- class CreateFunction:
1904
+ class CreateAccountsMetastore:
1670
1905
  name: str
1671
- """Name of function, relative to parent schema."""
1672
-
1673
- catalog_name: str
1674
- """Name of parent catalog."""
1675
-
1676
- schema_name: str
1677
- """Name of parent schema relative to its parent catalog."""
1906
+ """The user-specified name of the metastore."""
1678
1907
 
1679
- input_params: FunctionParameterInfos
1908
+ region: Optional[str] = None
1909
+ """Cloud region which the metastore serves (e.g., `us-west-2`, `westus`)."""
1680
1910
 
1681
- data_type: ColumnTypeName
1682
- """Scalar function return data type."""
1911
+ storage_root: Optional[str] = None
1912
+ """The storage root URL for metastore"""
1683
1913
 
1684
- full_data_type: str
1685
- """Pretty printed function data type."""
1914
+ def as_dict(self) -> dict:
1915
+ """Serializes the CreateAccountsMetastore into a dictionary suitable for use as a JSON request body."""
1916
+ body = {}
1917
+ if self.name is not None:
1918
+ body["name"] = self.name
1919
+ if self.region is not None:
1920
+ body["region"] = self.region
1921
+ if self.storage_root is not None:
1922
+ body["storage_root"] = self.storage_root
1923
+ return body
1686
1924
 
1687
- routine_body: CreateFunctionRoutineBody
1688
- """Function language. When **EXTERNAL** is used, the language of the routine function should be
1689
- specified in the __external_language__ field, and the __return_params__ of the function cannot
1690
- be used (as **TABLE** return type is not supported), and the __sql_data_access__ field must be
1691
- **NO_SQL**."""
1925
+ def as_shallow_dict(self) -> dict:
1926
+ """Serializes the CreateAccountsMetastore into a shallow dictionary of its immediate attributes."""
1927
+ body = {}
1928
+ if self.name is not None:
1929
+ body["name"] = self.name
1930
+ if self.region is not None:
1931
+ body["region"] = self.region
1932
+ if self.storage_root is not None:
1933
+ body["storage_root"] = self.storage_root
1934
+ return body
1692
1935
 
1693
- routine_definition: str
1694
- """Function body."""
1936
+ @classmethod
1937
+ def from_dict(cls, d: Dict[str, Any]) -> CreateAccountsMetastore:
1938
+ """Deserializes the CreateAccountsMetastore from a dictionary."""
1939
+ return cls(name=d.get("name", None), region=d.get("region", None), storage_root=d.get("storage_root", None))
1695
1940
 
1696
- parameter_style: CreateFunctionParameterStyle
1697
- """Function parameter style. **S** is the value for SQL."""
1698
1941
 
1699
- is_deterministic: bool
1700
- """Whether the function is deterministic."""
1942
+ @dataclass
1943
+ class CreateAccountsStorageCredential:
1944
+ name: str
1945
+ """The credential name. The name must be unique among storage and service credentials within the
1946
+ metastore."""
1701
1947
 
1702
- sql_data_access: CreateFunctionSqlDataAccess
1703
- """Function SQL data access."""
1948
+ aws_iam_role: Optional[AwsIamRoleRequest] = None
1949
+ """The AWS IAM role configuration."""
1704
1950
 
1705
- is_null_call: bool
1706
- """Function null call."""
1951
+ azure_managed_identity: Optional[AzureManagedIdentityRequest] = None
1952
+ """The Azure managed identity configuration."""
1707
1953
 
1708
- security_type: CreateFunctionSecurityType
1709
- """Function security type."""
1954
+ azure_service_principal: Optional[AzureServicePrincipal] = None
1955
+ """The Azure service principal configuration."""
1710
1956
 
1711
- specific_name: str
1712
- """Specific name of the function; Reserved for future use."""
1957
+ cloudflare_api_token: Optional[CloudflareApiToken] = None
1958
+ """The Cloudflare API token configuration."""
1713
1959
 
1714
1960
  comment: Optional[str] = None
1715
- """User-provided free-form text description."""
1961
+ """Comment associated with the credential."""
1716
1962
 
1717
- external_language: Optional[str] = None
1718
- """External function language."""
1963
+ databricks_gcp_service_account: Optional[DatabricksGcpServiceAccountRequest] = None
1964
+ """The Databricks managed GCP service account configuration."""
1719
1965
 
1720
- external_name: Optional[str] = None
1966
+ read_only: Optional[bool] = None
1967
+ """Whether the credential is usable only for read operations. Only applicable when purpose is
1968
+ **STORAGE**."""
1969
+
1970
+ def as_dict(self) -> dict:
1971
+ """Serializes the CreateAccountsStorageCredential into a dictionary suitable for use as a JSON request body."""
1972
+ body = {}
1973
+ if self.aws_iam_role:
1974
+ body["aws_iam_role"] = self.aws_iam_role.as_dict()
1975
+ if self.azure_managed_identity:
1976
+ body["azure_managed_identity"] = self.azure_managed_identity.as_dict()
1977
+ if self.azure_service_principal:
1978
+ body["azure_service_principal"] = self.azure_service_principal.as_dict()
1979
+ if self.cloudflare_api_token:
1980
+ body["cloudflare_api_token"] = self.cloudflare_api_token.as_dict()
1981
+ if self.comment is not None:
1982
+ body["comment"] = self.comment
1983
+ if self.databricks_gcp_service_account:
1984
+ body["databricks_gcp_service_account"] = self.databricks_gcp_service_account.as_dict()
1985
+ if self.name is not None:
1986
+ body["name"] = self.name
1987
+ if self.read_only is not None:
1988
+ body["read_only"] = self.read_only
1989
+ return body
1990
+
1991
+ def as_shallow_dict(self) -> dict:
1992
+ """Serializes the CreateAccountsStorageCredential into a shallow dictionary of its immediate attributes."""
1993
+ body = {}
1994
+ if self.aws_iam_role:
1995
+ body["aws_iam_role"] = self.aws_iam_role
1996
+ if self.azure_managed_identity:
1997
+ body["azure_managed_identity"] = self.azure_managed_identity
1998
+ if self.azure_service_principal:
1999
+ body["azure_service_principal"] = self.azure_service_principal
2000
+ if self.cloudflare_api_token:
2001
+ body["cloudflare_api_token"] = self.cloudflare_api_token
2002
+ if self.comment is not None:
2003
+ body["comment"] = self.comment
2004
+ if self.databricks_gcp_service_account:
2005
+ body["databricks_gcp_service_account"] = self.databricks_gcp_service_account
2006
+ if self.name is not None:
2007
+ body["name"] = self.name
2008
+ if self.read_only is not None:
2009
+ body["read_only"] = self.read_only
2010
+ return body
2011
+
2012
+ @classmethod
2013
+ def from_dict(cls, d: Dict[str, Any]) -> CreateAccountsStorageCredential:
2014
+ """Deserializes the CreateAccountsStorageCredential from a dictionary."""
2015
+ return cls(
2016
+ aws_iam_role=_from_dict(d, "aws_iam_role", AwsIamRoleRequest),
2017
+ azure_managed_identity=_from_dict(d, "azure_managed_identity", AzureManagedIdentityRequest),
2018
+ azure_service_principal=_from_dict(d, "azure_service_principal", AzureServicePrincipal),
2019
+ cloudflare_api_token=_from_dict(d, "cloudflare_api_token", CloudflareApiToken),
2020
+ comment=d.get("comment", None),
2021
+ databricks_gcp_service_account=_from_dict(
2022
+ d, "databricks_gcp_service_account", DatabricksGcpServiceAccountRequest
2023
+ ),
2024
+ name=d.get("name", None),
2025
+ read_only=d.get("read_only", None),
2026
+ )
2027
+
2028
+
2029
+ @dataclass
2030
+ class CreateFunction:
2031
+ name: str
2032
+ """Name of function, relative to parent schema."""
2033
+
2034
+ catalog_name: str
2035
+ """Name of parent Catalog."""
2036
+
2037
+ schema_name: str
2038
+ """Name of parent Schema relative to its parent Catalog."""
2039
+
2040
+ input_params: FunctionParameterInfos
2041
+ """Function input parameters."""
2042
+
2043
+ data_type: ColumnTypeName
2044
+ """Scalar function return data type."""
2045
+
2046
+ full_data_type: str
2047
+ """Pretty printed function data type."""
2048
+
2049
+ routine_body: CreateFunctionRoutineBody
2050
+ """Function language. When **EXTERNAL** is used, the language of the routine function should be
2051
+ specified in the **external_language** field, and the **return_params** of the function cannot
2052
+ be used (as **TABLE** return type is not supported), and the **sql_data_access** field must be
2053
+ **NO_SQL**."""
2054
+
2055
+ routine_definition: str
2056
+ """Function body."""
2057
+
2058
+ parameter_style: CreateFunctionParameterStyle
2059
+ """Function parameter style. **S** is the value for SQL."""
2060
+
2061
+ is_deterministic: bool
2062
+ """Whether the function is deterministic."""
2063
+
2064
+ sql_data_access: CreateFunctionSqlDataAccess
2065
+ """Function SQL data access."""
2066
+
2067
+ is_null_call: bool
2068
+ """Function null call."""
2069
+
2070
+ security_type: CreateFunctionSecurityType
2071
+ """Function security type."""
2072
+
2073
+ specific_name: str
2074
+ """Specific name of the function; Reserved for future use."""
2075
+
2076
+ comment: Optional[str] = None
2077
+ """User-provided free-form text description."""
2078
+
2079
+ external_language: Optional[str] = None
2080
+ """External function language."""
2081
+
2082
+ external_name: Optional[str] = None
1721
2083
  """External function name."""
1722
2084
 
1723
2085
  properties: Optional[str] = None
@@ -1727,7 +2089,7 @@ class CreateFunction:
1727
2089
  """Table function return parameters."""
1728
2090
 
1729
2091
  routine_dependencies: Optional[DependencyList] = None
1730
- """Function dependencies."""
2092
+ """function dependencies."""
1731
2093
 
1732
2094
  sql_path: Optional[str] = None
1733
2095
  """List of schemes whose objects can be referenced without qualification."""
@@ -1855,74 +2217,28 @@ class CreateFunction:
1855
2217
 
1856
2218
 
1857
2219
  class CreateFunctionParameterStyle(Enum):
1858
- """Function parameter style. **S** is the value for SQL."""
1859
2220
 
1860
2221
  S = "S"
1861
2222
 
1862
2223
 
1863
2224
  class CreateFunctionRoutineBody(Enum):
1864
- """Function language. When **EXTERNAL** is used, the language of the routine function should be
1865
- specified in the __external_language__ field, and the __return_params__ of the function cannot
1866
- be used (as **TABLE** return type is not supported), and the __sql_data_access__ field must be
1867
- **NO_SQL**."""
1868
2225
 
1869
2226
  EXTERNAL = "EXTERNAL"
1870
2227
  SQL = "SQL"
1871
2228
 
1872
2229
 
1873
2230
  class CreateFunctionSecurityType(Enum):
1874
- """The security type of the function."""
1875
2231
 
1876
2232
  DEFINER = "DEFINER"
1877
2233
 
1878
2234
 
1879
2235
  class CreateFunctionSqlDataAccess(Enum):
1880
- """Function SQL data access."""
1881
2236
 
1882
2237
  CONTAINS_SQL = "CONTAINS_SQL"
1883
2238
  NO_SQL = "NO_SQL"
1884
2239
  READS_SQL_DATA = "READS_SQL_DATA"
1885
2240
 
1886
2241
 
1887
- @dataclass
1888
- class CreateMetastore:
1889
- name: str
1890
- """The user-specified name of the metastore."""
1891
-
1892
- region: Optional[str] = None
1893
- """Cloud region which the metastore serves (e.g., `us-west-2`, `westus`)."""
1894
-
1895
- storage_root: Optional[str] = None
1896
- """The storage root URL for metastore"""
1897
-
1898
- def as_dict(self) -> dict:
1899
- """Serializes the CreateMetastore into a dictionary suitable for use as a JSON request body."""
1900
- body = {}
1901
- if self.name is not None:
1902
- body["name"] = self.name
1903
- if self.region is not None:
1904
- body["region"] = self.region
1905
- if self.storage_root is not None:
1906
- body["storage_root"] = self.storage_root
1907
- return body
1908
-
1909
- def as_shallow_dict(self) -> dict:
1910
- """Serializes the CreateMetastore into a shallow dictionary of its immediate attributes."""
1911
- body = {}
1912
- if self.name is not None:
1913
- body["name"] = self.name
1914
- if self.region is not None:
1915
- body["region"] = self.region
1916
- if self.storage_root is not None:
1917
- body["storage_root"] = self.storage_root
1918
- return body
1919
-
1920
- @classmethod
1921
- def from_dict(cls, d: Dict[str, Any]) -> CreateMetastore:
1922
- """Deserializes the CreateMetastore from a dictionary."""
1923
- return cls(name=d.get("name", None), region=d.get("region", None), storage_root=d.get("storage_root", None))
1924
-
1925
-
1926
2242
  @dataclass
1927
2243
  class CreateMetastoreAssignment:
1928
2244
  metastore_id: str
@@ -2026,119 +2342,6 @@ class CreateRequestExternalLineage:
2026
2342
  )
2027
2343
 
2028
2344
 
2029
- @dataclass
2030
- class CreateResponse:
2031
- def as_dict(self) -> dict:
2032
- """Serializes the CreateResponse into a dictionary suitable for use as a JSON request body."""
2033
- body = {}
2034
- return body
2035
-
2036
- def as_shallow_dict(self) -> dict:
2037
- """Serializes the CreateResponse into a shallow dictionary of its immediate attributes."""
2038
- body = {}
2039
- return body
2040
-
2041
- @classmethod
2042
- def from_dict(cls, d: Dict[str, Any]) -> CreateResponse:
2043
- """Deserializes the CreateResponse from a dictionary."""
2044
- return cls()
2045
-
2046
-
2047
- @dataclass
2048
- class CreateStorageCredential:
2049
- name: str
2050
- """The credential name. The name must be unique among storage and service credentials within the
2051
- metastore."""
2052
-
2053
- aws_iam_role: Optional[AwsIamRoleRequest] = None
2054
- """The AWS IAM role configuration."""
2055
-
2056
- azure_managed_identity: Optional[AzureManagedIdentityRequest] = None
2057
- """The Azure managed identity configuration."""
2058
-
2059
- azure_service_principal: Optional[AzureServicePrincipal] = None
2060
- """The Azure service principal configuration."""
2061
-
2062
- cloudflare_api_token: Optional[CloudflareApiToken] = None
2063
- """The Cloudflare API token configuration."""
2064
-
2065
- comment: Optional[str] = None
2066
- """Comment associated with the credential."""
2067
-
2068
- databricks_gcp_service_account: Optional[DatabricksGcpServiceAccountRequest] = None
2069
- """The Databricks managed GCP service account configuration."""
2070
-
2071
- read_only: Optional[bool] = None
2072
- """Whether the credential is usable only for read operations. Only applicable when purpose is
2073
- **STORAGE**."""
2074
-
2075
- skip_validation: Optional[bool] = None
2076
- """Supplying true to this argument skips validation of the created credential."""
2077
-
2078
- def as_dict(self) -> dict:
2079
- """Serializes the CreateStorageCredential into a dictionary suitable for use as a JSON request body."""
2080
- body = {}
2081
- if self.aws_iam_role:
2082
- body["aws_iam_role"] = self.aws_iam_role.as_dict()
2083
- if self.azure_managed_identity:
2084
- body["azure_managed_identity"] = self.azure_managed_identity.as_dict()
2085
- if self.azure_service_principal:
2086
- body["azure_service_principal"] = self.azure_service_principal.as_dict()
2087
- if self.cloudflare_api_token:
2088
- body["cloudflare_api_token"] = self.cloudflare_api_token.as_dict()
2089
- if self.comment is not None:
2090
- body["comment"] = self.comment
2091
- if self.databricks_gcp_service_account:
2092
- body["databricks_gcp_service_account"] = self.databricks_gcp_service_account.as_dict()
2093
- if self.name is not None:
2094
- body["name"] = self.name
2095
- if self.read_only is not None:
2096
- body["read_only"] = self.read_only
2097
- if self.skip_validation is not None:
2098
- body["skip_validation"] = self.skip_validation
2099
- return body
2100
-
2101
- def as_shallow_dict(self) -> dict:
2102
- """Serializes the CreateStorageCredential into a shallow dictionary of its immediate attributes."""
2103
- body = {}
2104
- if self.aws_iam_role:
2105
- body["aws_iam_role"] = self.aws_iam_role
2106
- if self.azure_managed_identity:
2107
- body["azure_managed_identity"] = self.azure_managed_identity
2108
- if self.azure_service_principal:
2109
- body["azure_service_principal"] = self.azure_service_principal
2110
- if self.cloudflare_api_token:
2111
- body["cloudflare_api_token"] = self.cloudflare_api_token
2112
- if self.comment is not None:
2113
- body["comment"] = self.comment
2114
- if self.databricks_gcp_service_account:
2115
- body["databricks_gcp_service_account"] = self.databricks_gcp_service_account
2116
- if self.name is not None:
2117
- body["name"] = self.name
2118
- if self.read_only is not None:
2119
- body["read_only"] = self.read_only
2120
- if self.skip_validation is not None:
2121
- body["skip_validation"] = self.skip_validation
2122
- return body
2123
-
2124
- @classmethod
2125
- def from_dict(cls, d: Dict[str, Any]) -> CreateStorageCredential:
2126
- """Deserializes the CreateStorageCredential from a dictionary."""
2127
- return cls(
2128
- aws_iam_role=_from_dict(d, "aws_iam_role", AwsIamRoleRequest),
2129
- azure_managed_identity=_from_dict(d, "azure_managed_identity", AzureManagedIdentityRequest),
2130
- azure_service_principal=_from_dict(d, "azure_service_principal", AzureServicePrincipal),
2131
- cloudflare_api_token=_from_dict(d, "cloudflare_api_token", CloudflareApiToken),
2132
- comment=d.get("comment", None),
2133
- databricks_gcp_service_account=_from_dict(
2134
- d, "databricks_gcp_service_account", DatabricksGcpServiceAccountRequest
2135
- ),
2136
- name=d.get("name", None),
2137
- read_only=d.get("read_only", None),
2138
- skip_validation=d.get("skip_validation", None),
2139
- )
2140
-
2141
-
2142
2345
  @dataclass
2143
2346
  class CredentialDependency:
2144
2347
  """A credential that is dependent on a SQL object."""
@@ -4143,7 +4346,7 @@ class FunctionInfo:
4143
4346
  through the BROWSE privilege when include_browse is enabled in the request."""
4144
4347
 
4145
4348
  catalog_name: Optional[str] = None
4146
- """Name of parent catalog."""
4349
+ """Name of parent Catalog."""
4147
4350
 
4148
4351
  comment: Optional[str] = None
4149
4352
  """User-provided free-form text description."""
@@ -4167,12 +4370,13 @@ class FunctionInfo:
4167
4370
  """Pretty printed function data type."""
4168
4371
 
4169
4372
  full_name: Optional[str] = None
4170
- """Full name of function, in form of __catalog_name__.__schema_name__.__function__name__"""
4373
+ """Full name of Function, in form of **catalog_name**.**schema_name**.**function_name**"""
4171
4374
 
4172
4375
  function_id: Optional[str] = None
4173
4376
  """Id of Function, relative to parent schema."""
4174
4377
 
4175
4378
  input_params: Optional[FunctionParameterInfos] = None
4379
+ """Function input parameters."""
4176
4380
 
4177
4381
  is_deterministic: Optional[bool] = None
4178
4382
  """Whether the function is deterministic."""
@@ -4187,7 +4391,7 @@ class FunctionInfo:
4187
4391
  """Name of function, relative to parent schema."""
4188
4392
 
4189
4393
  owner: Optional[str] = None
4190
- """Username of current owner of function."""
4394
+ """Username of current owner of the function."""
4191
4395
 
4192
4396
  parameter_style: Optional[FunctionInfoParameterStyle] = None
4193
4397
  """Function parameter style. **S** is the value for SQL."""
@@ -4200,18 +4404,18 @@ class FunctionInfo:
4200
4404
 
4201
4405
  routine_body: Optional[FunctionInfoRoutineBody] = None
4202
4406
  """Function language. When **EXTERNAL** is used, the language of the routine function should be
4203
- specified in the __external_language__ field, and the __return_params__ of the function cannot
4204
- be used (as **TABLE** return type is not supported), and the __sql_data_access__ field must be
4407
+ specified in the **external_language** field, and the **return_params** of the function cannot
4408
+ be used (as **TABLE** return type is not supported), and the **sql_data_access** field must be
4205
4409
  **NO_SQL**."""
4206
4410
 
4207
4411
  routine_definition: Optional[str] = None
4208
4412
  """Function body."""
4209
4413
 
4210
4414
  routine_dependencies: Optional[DependencyList] = None
4211
- """Function dependencies."""
4415
+ """function dependencies."""
4212
4416
 
4213
4417
  schema_name: Optional[str] = None
4214
- """Name of parent schema relative to its parent catalog."""
4418
+ """Name of parent Schema relative to its parent Catalog."""
4215
4419
 
4216
4420
  security_type: Optional[FunctionInfoSecurityType] = None
4217
4421
  """Function security type."""
@@ -4226,10 +4430,10 @@ class FunctionInfo:
4226
4430
  """List of schemes whose objects can be referenced without qualification."""
4227
4431
 
4228
4432
  updated_at: Optional[int] = None
4229
- """Time at which this function was created, in epoch milliseconds."""
4433
+ """Time at which this function was last modified, in epoch milliseconds."""
4230
4434
 
4231
4435
  updated_by: Optional[str] = None
4232
- """Username of user who last modified function."""
4436
+ """Username of user who last modified the function."""
4233
4437
 
4234
4438
  def as_dict(self) -> dict:
4235
4439
  """Serializes the FunctionInfo into a dictionary suitable for use as a JSON request body."""
@@ -4399,29 +4603,22 @@ class FunctionInfo:
4399
4603
 
4400
4604
 
4401
4605
  class FunctionInfoParameterStyle(Enum):
4402
- """Function parameter style. **S** is the value for SQL."""
4403
4606
 
4404
4607
  S = "S"
4405
4608
 
4406
4609
 
4407
4610
  class FunctionInfoRoutineBody(Enum):
4408
- """Function language. When **EXTERNAL** is used, the language of the routine function should be
4409
- specified in the __external_language__ field, and the __return_params__ of the function cannot
4410
- be used (as **TABLE** return type is not supported), and the __sql_data_access__ field must be
4411
- **NO_SQL**."""
4412
4611
 
4413
4612
  EXTERNAL = "EXTERNAL"
4414
4613
  SQL = "SQL"
4415
4614
 
4416
4615
 
4417
4616
  class FunctionInfoSecurityType(Enum):
4418
- """The security type of the function."""
4419
4617
 
4420
4618
  DEFINER = "DEFINER"
4421
4619
 
4422
4620
 
4423
4621
  class FunctionInfoSqlDataAccess(Enum):
4424
- """Function SQL data access."""
4425
4622
 
4426
4623
  CONTAINS_SQL = "CONTAINS_SQL"
4427
4624
  NO_SQL = "NO_SQL"
@@ -4431,12 +4628,13 @@ class FunctionInfoSqlDataAccess(Enum):
4431
4628
  @dataclass
4432
4629
  class FunctionParameterInfo:
4433
4630
  name: str
4434
- """Name of parameter."""
4631
+ """Name of Parameter."""
4435
4632
 
4436
4633
  type_text: str
4437
4634
  """Full data type spec, SQL/catalogString text."""
4438
4635
 
4439
4636
  type_name: ColumnTypeName
4637
+ """Name of type (INT, STRUCT, MAP, etc.)"""
4440
4638
 
4441
4639
  position: int
4442
4640
  """Ordinal position of column (starting at position 0)."""
@@ -4448,8 +4646,10 @@ class FunctionParameterInfo:
4448
4646
  """Default value of the parameter."""
4449
4647
 
4450
4648
  parameter_mode: Optional[FunctionParameterMode] = None
4649
+ """Function parameter mode."""
4451
4650
 
4452
4651
  parameter_type: Optional[FunctionParameterType] = None
4652
+ """Function parameter type."""
4453
4653
 
4454
4654
  type_interval_type: Optional[str] = None
4455
4655
  """Format of IntervalType."""
@@ -4543,7 +4743,6 @@ class FunctionParameterInfo:
4543
4743
  @dataclass
4544
4744
  class FunctionParameterInfos:
4545
4745
  parameters: Optional[List[FunctionParameterInfo]] = None
4546
- """The array of __FunctionParameterInfo__ definitions of the function's parameters."""
4547
4746
 
4548
4747
  def as_dict(self) -> dict:
4549
4748
  """Serializes the FunctionParameterInfos into a dictionary suitable for use as a JSON request body."""
@@ -4566,13 +4765,11 @@ class FunctionParameterInfos:
4566
4765
 
4567
4766
 
4568
4767
  class FunctionParameterMode(Enum):
4569
- """The mode of the function parameter."""
4570
4768
 
4571
4769
  IN = "IN"
4572
4770
 
4573
4771
 
4574
4772
  class FunctionParameterType(Enum):
4575
- """The type of function parameter."""
4576
4773
 
4577
4774
  COLUMN = "COLUMN"
4578
4775
  PARAM = "PARAM"
@@ -5153,7 +5350,7 @@ class LineageDirection(Enum):
5153
5350
 
5154
5351
  @dataclass
5155
5352
  class ListAccountMetastoreAssignmentsResponse:
5156
- """The list of workspaces to which the given metastore is assigned."""
5353
+ """The metastore assignments were successfully returned."""
5157
5354
 
5158
5355
  workspace_ids: Optional[List[int]] = None
5159
5356
 
@@ -5179,6 +5376,8 @@ class ListAccountMetastoreAssignmentsResponse:
5179
5376
 
5180
5377
  @dataclass
5181
5378
  class ListAccountStorageCredentialsResponse:
5379
+ """The metastore storage credentials were successfully returned."""
5380
+
5182
5381
  storage_credentials: Optional[List[StorageCredentialInfo]] = None
5183
5382
  """An array of metastore storage credentials."""
5184
5383
 
@@ -5896,7 +6095,8 @@ class MetastoreAssignment:
5896
6095
  """The unique ID of the metastore."""
5897
6096
 
5898
6097
  default_catalog_name: Optional[str] = None
5899
- """The name of the default catalog in the metastore."""
6098
+ """The name of the default catalog in the metastore. This field is deprecated. Please use "Default
6099
+ Namespace API" to configure the default catalog for a Databricks workspace."""
5900
6100
 
5901
6101
  def as_dict(self) -> dict:
5902
6102
  """Serializes the MetastoreAssignment into a dictionary suitable for use as a JSON request body."""
@@ -6113,10 +6313,6 @@ class ModelVersionInfo:
6113
6313
  aliases: Optional[List[RegisteredModelAlias]] = None
6114
6314
  """List of aliases associated with the model version"""
6115
6315
 
6116
- browse_only: Optional[bool] = None
6117
- """Indicates whether the principal is limited to retrieving metadata for the associated object
6118
- through the BROWSE privilege when include_browse is enabled in the request."""
6119
-
6120
6316
  catalog_name: Optional[str] = None
6121
6317
  """The name of the catalog containing the model version"""
6122
6318
 
@@ -6175,8 +6371,6 @@ class ModelVersionInfo:
6175
6371
  body = {}
6176
6372
  if self.aliases:
6177
6373
  body["aliases"] = [v.as_dict() for v in self.aliases]
6178
- if self.browse_only is not None:
6179
- body["browse_only"] = self.browse_only
6180
6374
  if self.catalog_name is not None:
6181
6375
  body["catalog_name"] = self.catalog_name
6182
6376
  if self.comment is not None:
@@ -6218,8 +6412,6 @@ class ModelVersionInfo:
6218
6412
  body = {}
6219
6413
  if self.aliases:
6220
6414
  body["aliases"] = self.aliases
6221
- if self.browse_only is not None:
6222
- body["browse_only"] = self.browse_only
6223
6415
  if self.catalog_name is not None:
6224
6416
  body["catalog_name"] = self.catalog_name
6225
6417
  if self.comment is not None:
@@ -6261,7 +6453,6 @@ class ModelVersionInfo:
6261
6453
  """Deserializes the ModelVersionInfo from a dictionary."""
6262
6454
  return cls(
6263
6455
  aliases=_repeated_dict(d, "aliases", RegisteredModelAlias),
6264
- browse_only=d.get("browse_only", None),
6265
6456
  catalog_name=d.get("catalog_name", None),
6266
6457
  comment=d.get("comment", None),
6267
6458
  created_at=d.get("created_at", None),
@@ -6283,11 +6474,9 @@ class ModelVersionInfo:
6283
6474
 
6284
6475
 
6285
6476
  class ModelVersionInfoStatus(Enum):
6286
- """Current status of the model version. Newly created model versions start in PENDING_REGISTRATION
6287
- status, then move to READY status once the model version files are uploaded and the model
6288
- version is finalized. Only model versions in READY status can be loaded for inference or served."""
6289
6477
 
6290
6478
  FAILED_REGISTRATION = "FAILED_REGISTRATION"
6479
+ MODEL_VERSION_STATUS_UNKNOWN = "MODEL_VERSION_STATUS_UNKNOWN"
6291
6480
  PENDING_REGISTRATION = "PENDING_REGISTRATION"
6292
6481
  READY = "READY"
6293
6482
 
@@ -7856,6 +8045,7 @@ class Privilege(Enum):
7856
8045
  CREATE_VOLUME = "CREATE_VOLUME"
7857
8046
  EXECUTE = "EXECUTE"
7858
8047
  EXECUTE_CLEAN_ROOM_TASK = "EXECUTE_CLEAN_ROOM_TASK"
8048
+ EXTERNAL_USE_SCHEMA = "EXTERNAL_USE_SCHEMA"
7859
8049
  MANAGE = "MANAGE"
7860
8050
  MANAGE_ALLOWLIST = "MANAGE_ALLOWLIST"
7861
8051
  MODIFY = "MODIFY"
@@ -8124,11 +8314,21 @@ class RegenerateDashboardResponse:
8124
8314
 
8125
8315
  @dataclass
8126
8316
  class RegisteredModelAlias:
8127
- """Registered model alias."""
8128
-
8129
8317
  alias_name: Optional[str] = None
8130
8318
  """Name of the alias, e.g. 'champion' or 'latest_stable'"""
8131
8319
 
8320
+ catalog_name: Optional[str] = None
8321
+ """The name of the catalog containing the model version"""
8322
+
8323
+ id: Optional[str] = None
8324
+ """The unique identifier of the alias"""
8325
+
8326
+ model_name: Optional[str] = None
8327
+ """The name of the parent registered model of the model version, relative to parent schema"""
8328
+
8329
+ schema_name: Optional[str] = None
8330
+ """The name of the schema containing the model version, relative to parent catalog"""
8331
+
8132
8332
  version_num: Optional[int] = None
8133
8333
  """Integer version number of the model version to which this alias points."""
8134
8334
 
@@ -8137,6 +8337,14 @@ class RegisteredModelAlias:
8137
8337
  body = {}
8138
8338
  if self.alias_name is not None:
8139
8339
  body["alias_name"] = self.alias_name
8340
+ if self.catalog_name is not None:
8341
+ body["catalog_name"] = self.catalog_name
8342
+ if self.id is not None:
8343
+ body["id"] = self.id
8344
+ if self.model_name is not None:
8345
+ body["model_name"] = self.model_name
8346
+ if self.schema_name is not None:
8347
+ body["schema_name"] = self.schema_name
8140
8348
  if self.version_num is not None:
8141
8349
  body["version_num"] = self.version_num
8142
8350
  return body
@@ -8146,6 +8354,14 @@ class RegisteredModelAlias:
8146
8354
  body = {}
8147
8355
  if self.alias_name is not None:
8148
8356
  body["alias_name"] = self.alias_name
8357
+ if self.catalog_name is not None:
8358
+ body["catalog_name"] = self.catalog_name
8359
+ if self.id is not None:
8360
+ body["id"] = self.id
8361
+ if self.model_name is not None:
8362
+ body["model_name"] = self.model_name
8363
+ if self.schema_name is not None:
8364
+ body["schema_name"] = self.schema_name
8149
8365
  if self.version_num is not None:
8150
8366
  body["version_num"] = self.version_num
8151
8367
  return body
@@ -8153,7 +8369,14 @@ class RegisteredModelAlias:
8153
8369
  @classmethod
8154
8370
  def from_dict(cls, d: Dict[str, Any]) -> RegisteredModelAlias:
8155
8371
  """Deserializes the RegisteredModelAlias from a dictionary."""
8156
- return cls(alias_name=d.get("alias_name", None), version_num=d.get("version_num", None))
8372
+ return cls(
8373
+ alias_name=d.get("alias_name", None),
8374
+ catalog_name=d.get("catalog_name", None),
8375
+ id=d.get("id", None),
8376
+ model_name=d.get("model_name", None),
8377
+ schema_name=d.get("schema_name", None),
8378
+ version_num=d.get("version_num", None),
8379
+ )
8157
8380
 
8158
8381
 
8159
8382
  @dataclass
@@ -8539,7 +8762,7 @@ class Securable:
8539
8762
 
8540
8763
 
8541
8764
  class SecurableKind(Enum):
8542
- """Latest kind: CONNECTION_PALANTIR_OAUTH_M2M = 263; Next id:264"""
8765
+ """Latest kind: CONNECTION_REDSHIFT_IAM = 265; Next id:266"""
8543
8766
 
8544
8767
  TABLE_DB_STORAGE = "TABLE_DB_STORAGE"
8545
8768
  TABLE_DELTA = "TABLE_DELTA"
@@ -9003,6 +9226,7 @@ class SystemType(Enum):
9003
9226
  SAP = "SAP"
9004
9227
  SERVICENOW = "SERVICENOW"
9005
9228
  SNOWFLAKE = "SNOWFLAKE"
9229
+ STREAM_NATIVE = "STREAM_NATIVE"
9006
9230
  TABLEAU = "TABLEAU"
9007
9231
  TERADATA = "TERADATA"
9008
9232
  WORKDAY = "WORKDAY"
@@ -9634,50 +9858,7 @@ class UnassignResponse:
9634
9858
 
9635
9859
 
9636
9860
  @dataclass
9637
- class UpdateAssignmentResponse:
9638
- def as_dict(self) -> dict:
9639
- """Serializes the UpdateAssignmentResponse into a dictionary suitable for use as a JSON request body."""
9640
- body = {}
9641
- return body
9642
-
9643
- def as_shallow_dict(self) -> dict:
9644
- """Serializes the UpdateAssignmentResponse into a shallow dictionary of its immediate attributes."""
9645
- body = {}
9646
- return body
9647
-
9648
- @classmethod
9649
- def from_dict(cls, d: Dict[str, Any]) -> UpdateAssignmentResponse:
9650
- """Deserializes the UpdateAssignmentResponse from a dictionary."""
9651
- return cls()
9652
-
9653
-
9654
- @dataclass
9655
- class UpdateCatalogWorkspaceBindingsResponse:
9656
- workspaces: Optional[List[int]] = None
9657
- """A list of workspace IDs"""
9658
-
9659
- def as_dict(self) -> dict:
9660
- """Serializes the UpdateCatalogWorkspaceBindingsResponse into a dictionary suitable for use as a JSON request body."""
9661
- body = {}
9662
- if self.workspaces:
9663
- body["workspaces"] = [v for v in self.workspaces]
9664
- return body
9665
-
9666
- def as_shallow_dict(self) -> dict:
9667
- """Serializes the UpdateCatalogWorkspaceBindingsResponse into a shallow dictionary of its immediate attributes."""
9668
- body = {}
9669
- if self.workspaces:
9670
- body["workspaces"] = self.workspaces
9671
- return body
9672
-
9673
- @classmethod
9674
- def from_dict(cls, d: Dict[str, Any]) -> UpdateCatalogWorkspaceBindingsResponse:
9675
- """Deserializes the UpdateCatalogWorkspaceBindingsResponse from a dictionary."""
9676
- return cls(workspaces=d.get("workspaces", None))
9677
-
9678
-
9679
- @dataclass
9680
- class UpdateMetastore:
9861
+ class UpdateAccountsMetastore:
9681
9862
  delta_sharing_organization_name: Optional[str] = None
9682
9863
  """The organization name of a Delta Sharing entity, to be used in Databricks-to-Databricks Delta
9683
9864
  Sharing as the official name."""
@@ -9688,12 +9869,6 @@ class UpdateMetastore:
9688
9869
  delta_sharing_scope: Optional[DeltaSharingScopeEnum] = None
9689
9870
  """The scope of Delta Sharing enabled for the metastore."""
9690
9871
 
9691
- id: Optional[str] = None
9692
- """Unique ID of the metastore."""
9693
-
9694
- new_name: Optional[str] = None
9695
- """New name for the metastore."""
9696
-
9697
9872
  owner: Optional[str] = None
9698
9873
  """The owner of the metastore."""
9699
9874
 
@@ -9704,7 +9879,7 @@ class UpdateMetastore:
9704
9879
  """UUID of storage credential to access the metastore storage_root."""
9705
9880
 
9706
9881
  def as_dict(self) -> dict:
9707
- """Serializes the UpdateMetastore into a dictionary suitable for use as a JSON request body."""
9882
+ """Serializes the UpdateAccountsMetastore into a dictionary suitable for use as a JSON request body."""
9708
9883
  body = {}
9709
9884
  if self.delta_sharing_organization_name is not None:
9710
9885
  body["delta_sharing_organization_name"] = self.delta_sharing_organization_name
@@ -9714,10 +9889,6 @@ class UpdateMetastore:
9714
9889
  )
9715
9890
  if self.delta_sharing_scope is not None:
9716
9891
  body["delta_sharing_scope"] = self.delta_sharing_scope.value
9717
- if self.id is not None:
9718
- body["id"] = self.id
9719
- if self.new_name is not None:
9720
- body["new_name"] = self.new_name
9721
9892
  if self.owner is not None:
9722
9893
  body["owner"] = self.owner
9723
9894
  if self.privilege_model_version is not None:
@@ -9727,7 +9898,7 @@ class UpdateMetastore:
9727
9898
  return body
9728
9899
 
9729
9900
  def as_shallow_dict(self) -> dict:
9730
- """Serializes the UpdateMetastore into a shallow dictionary of its immediate attributes."""
9901
+ """Serializes the UpdateAccountsMetastore into a shallow dictionary of its immediate attributes."""
9731
9902
  body = {}
9732
9903
  if self.delta_sharing_organization_name is not None:
9733
9904
  body["delta_sharing_organization_name"] = self.delta_sharing_organization_name
@@ -9737,10 +9908,6 @@ class UpdateMetastore:
9737
9908
  )
9738
9909
  if self.delta_sharing_scope is not None:
9739
9910
  body["delta_sharing_scope"] = self.delta_sharing_scope
9740
- if self.id is not None:
9741
- body["id"] = self.id
9742
- if self.new_name is not None:
9743
- body["new_name"] = self.new_name
9744
9911
  if self.owner is not None:
9745
9912
  body["owner"] = self.owner
9746
9913
  if self.privilege_model_version is not None:
@@ -9750,22 +9917,157 @@ class UpdateMetastore:
9750
9917
  return body
9751
9918
 
9752
9919
  @classmethod
9753
- def from_dict(cls, d: Dict[str, Any]) -> UpdateMetastore:
9754
- """Deserializes the UpdateMetastore from a dictionary."""
9920
+ def from_dict(cls, d: Dict[str, Any]) -> UpdateAccountsMetastore:
9921
+ """Deserializes the UpdateAccountsMetastore from a dictionary."""
9755
9922
  return cls(
9756
9923
  delta_sharing_organization_name=d.get("delta_sharing_organization_name", None),
9757
9924
  delta_sharing_recipient_token_lifetime_in_seconds=d.get(
9758
9925
  "delta_sharing_recipient_token_lifetime_in_seconds", None
9759
9926
  ),
9760
9927
  delta_sharing_scope=_enum(d, "delta_sharing_scope", DeltaSharingScopeEnum),
9761
- id=d.get("id", None),
9762
- new_name=d.get("new_name", None),
9763
9928
  owner=d.get("owner", None),
9764
9929
  privilege_model_version=d.get("privilege_model_version", None),
9765
9930
  storage_root_credential_id=d.get("storage_root_credential_id", None),
9766
9931
  )
9767
9932
 
9768
9933
 
9934
+ @dataclass
9935
+ class UpdateAccountsStorageCredential:
9936
+ aws_iam_role: Optional[AwsIamRoleRequest] = None
9937
+ """The AWS IAM role configuration."""
9938
+
9939
+ azure_managed_identity: Optional[AzureManagedIdentityResponse] = None
9940
+ """The Azure managed identity configuration."""
9941
+
9942
+ azure_service_principal: Optional[AzureServicePrincipal] = None
9943
+ """The Azure service principal configuration."""
9944
+
9945
+ cloudflare_api_token: Optional[CloudflareApiToken] = None
9946
+ """The Cloudflare API token configuration."""
9947
+
9948
+ comment: Optional[str] = None
9949
+ """Comment associated with the credential."""
9950
+
9951
+ databricks_gcp_service_account: Optional[DatabricksGcpServiceAccountRequest] = None
9952
+ """The Databricks managed GCP service account configuration."""
9953
+
9954
+ isolation_mode: Optional[IsolationMode] = None
9955
+ """Whether the current securable is accessible from all workspaces or a specific set of workspaces."""
9956
+
9957
+ owner: Optional[str] = None
9958
+ """Username of current owner of credential."""
9959
+
9960
+ read_only: Optional[bool] = None
9961
+ """Whether the credential is usable only for read operations. Only applicable when purpose is
9962
+ **STORAGE**."""
9963
+
9964
+ def as_dict(self) -> dict:
9965
+ """Serializes the UpdateAccountsStorageCredential into a dictionary suitable for use as a JSON request body."""
9966
+ body = {}
9967
+ if self.aws_iam_role:
9968
+ body["aws_iam_role"] = self.aws_iam_role.as_dict()
9969
+ if self.azure_managed_identity:
9970
+ body["azure_managed_identity"] = self.azure_managed_identity.as_dict()
9971
+ if self.azure_service_principal:
9972
+ body["azure_service_principal"] = self.azure_service_principal.as_dict()
9973
+ if self.cloudflare_api_token:
9974
+ body["cloudflare_api_token"] = self.cloudflare_api_token.as_dict()
9975
+ if self.comment is not None:
9976
+ body["comment"] = self.comment
9977
+ if self.databricks_gcp_service_account:
9978
+ body["databricks_gcp_service_account"] = self.databricks_gcp_service_account.as_dict()
9979
+ if self.isolation_mode is not None:
9980
+ body["isolation_mode"] = self.isolation_mode.value
9981
+ if self.owner is not None:
9982
+ body["owner"] = self.owner
9983
+ if self.read_only is not None:
9984
+ body["read_only"] = self.read_only
9985
+ return body
9986
+
9987
+ def as_shallow_dict(self) -> dict:
9988
+ """Serializes the UpdateAccountsStorageCredential into a shallow dictionary of its immediate attributes."""
9989
+ body = {}
9990
+ if self.aws_iam_role:
9991
+ body["aws_iam_role"] = self.aws_iam_role
9992
+ if self.azure_managed_identity:
9993
+ body["azure_managed_identity"] = self.azure_managed_identity
9994
+ if self.azure_service_principal:
9995
+ body["azure_service_principal"] = self.azure_service_principal
9996
+ if self.cloudflare_api_token:
9997
+ body["cloudflare_api_token"] = self.cloudflare_api_token
9998
+ if self.comment is not None:
9999
+ body["comment"] = self.comment
10000
+ if self.databricks_gcp_service_account:
10001
+ body["databricks_gcp_service_account"] = self.databricks_gcp_service_account
10002
+ if self.isolation_mode is not None:
10003
+ body["isolation_mode"] = self.isolation_mode
10004
+ if self.owner is not None:
10005
+ body["owner"] = self.owner
10006
+ if self.read_only is not None:
10007
+ body["read_only"] = self.read_only
10008
+ return body
10009
+
10010
+ @classmethod
10011
+ def from_dict(cls, d: Dict[str, Any]) -> UpdateAccountsStorageCredential:
10012
+ """Deserializes the UpdateAccountsStorageCredential from a dictionary."""
10013
+ return cls(
10014
+ aws_iam_role=_from_dict(d, "aws_iam_role", AwsIamRoleRequest),
10015
+ azure_managed_identity=_from_dict(d, "azure_managed_identity", AzureManagedIdentityResponse),
10016
+ azure_service_principal=_from_dict(d, "azure_service_principal", AzureServicePrincipal),
10017
+ cloudflare_api_token=_from_dict(d, "cloudflare_api_token", CloudflareApiToken),
10018
+ comment=d.get("comment", None),
10019
+ databricks_gcp_service_account=_from_dict(
10020
+ d, "databricks_gcp_service_account", DatabricksGcpServiceAccountRequest
10021
+ ),
10022
+ isolation_mode=_enum(d, "isolation_mode", IsolationMode),
10023
+ owner=d.get("owner", None),
10024
+ read_only=d.get("read_only", None),
10025
+ )
10026
+
10027
+
10028
+ @dataclass
10029
+ class UpdateAssignmentResponse:
10030
+ def as_dict(self) -> dict:
10031
+ """Serializes the UpdateAssignmentResponse into a dictionary suitable for use as a JSON request body."""
10032
+ body = {}
10033
+ return body
10034
+
10035
+ def as_shallow_dict(self) -> dict:
10036
+ """Serializes the UpdateAssignmentResponse into a shallow dictionary of its immediate attributes."""
10037
+ body = {}
10038
+ return body
10039
+
10040
+ @classmethod
10041
+ def from_dict(cls, d: Dict[str, Any]) -> UpdateAssignmentResponse:
10042
+ """Deserializes the UpdateAssignmentResponse from a dictionary."""
10043
+ return cls()
10044
+
10045
+
10046
+ @dataclass
10047
+ class UpdateCatalogWorkspaceBindingsResponse:
10048
+ workspaces: Optional[List[int]] = None
10049
+ """A list of workspace IDs"""
10050
+
10051
+ def as_dict(self) -> dict:
10052
+ """Serializes the UpdateCatalogWorkspaceBindingsResponse into a dictionary suitable for use as a JSON request body."""
10053
+ body = {}
10054
+ if self.workspaces:
10055
+ body["workspaces"] = [v for v in self.workspaces]
10056
+ return body
10057
+
10058
+ def as_shallow_dict(self) -> dict:
10059
+ """Serializes the UpdateCatalogWorkspaceBindingsResponse into a shallow dictionary of its immediate attributes."""
10060
+ body = {}
10061
+ if self.workspaces:
10062
+ body["workspaces"] = self.workspaces
10063
+ return body
10064
+
10065
+ @classmethod
10066
+ def from_dict(cls, d: Dict[str, Any]) -> UpdateCatalogWorkspaceBindingsResponse:
10067
+ """Deserializes the UpdateCatalogWorkspaceBindingsResponse from a dictionary."""
10068
+ return cls(workspaces=d.get("workspaces", None))
10069
+
10070
+
9769
10071
  @dataclass
9770
10072
  class UpdateMetastoreAssignment:
9771
10073
  default_catalog_name: Optional[str] = None
@@ -9868,174 +10170,48 @@ class UpdateRequestExternalLineage:
9868
10170
  return body
9869
10171
 
9870
10172
  def as_shallow_dict(self) -> dict:
9871
- """Serializes the UpdateRequestExternalLineage into a shallow dictionary of its immediate attributes."""
9872
- body = {}
9873
- if self.columns:
9874
- body["columns"] = self.columns
9875
- if self.id is not None:
9876
- body["id"] = self.id
9877
- if self.properties:
9878
- body["properties"] = self.properties
9879
- if self.source:
9880
- body["source"] = self.source
9881
- if self.target:
9882
- body["target"] = self.target
9883
- return body
9884
-
9885
- @classmethod
9886
- def from_dict(cls, d: Dict[str, Any]) -> UpdateRequestExternalLineage:
9887
- """Deserializes the UpdateRequestExternalLineage from a dictionary."""
9888
- return cls(
9889
- columns=_repeated_dict(d, "columns", ColumnRelationship),
9890
- id=d.get("id", None),
9891
- properties=d.get("properties", None),
9892
- source=_from_dict(d, "source", ExternalLineageObject),
9893
- target=_from_dict(d, "target", ExternalLineageObject),
9894
- )
9895
-
9896
-
9897
- @dataclass
9898
- class UpdateResponse:
9899
- def as_dict(self) -> dict:
9900
- """Serializes the UpdateResponse into a dictionary suitable for use as a JSON request body."""
9901
- body = {}
9902
- return body
9903
-
9904
- def as_shallow_dict(self) -> dict:
9905
- """Serializes the UpdateResponse into a shallow dictionary of its immediate attributes."""
9906
- body = {}
9907
- return body
9908
-
9909
- @classmethod
9910
- def from_dict(cls, d: Dict[str, Any]) -> UpdateResponse:
9911
- """Deserializes the UpdateResponse from a dictionary."""
9912
- return cls()
9913
-
9914
-
9915
- @dataclass
9916
- class UpdateStorageCredential:
9917
- aws_iam_role: Optional[AwsIamRoleRequest] = None
9918
- """The AWS IAM role configuration."""
9919
-
9920
- azure_managed_identity: Optional[AzureManagedIdentityResponse] = None
9921
- """The Azure managed identity configuration."""
9922
-
9923
- azure_service_principal: Optional[AzureServicePrincipal] = None
9924
- """The Azure service principal configuration."""
9925
-
9926
- cloudflare_api_token: Optional[CloudflareApiToken] = None
9927
- """The Cloudflare API token configuration."""
9928
-
9929
- comment: Optional[str] = None
9930
- """Comment associated with the credential."""
9931
-
9932
- databricks_gcp_service_account: Optional[DatabricksGcpServiceAccountRequest] = None
9933
- """The Databricks managed GCP service account configuration."""
9934
-
9935
- force: Optional[bool] = None
9936
- """Force update even if there are dependent external locations or external tables."""
9937
-
9938
- isolation_mode: Optional[IsolationMode] = None
9939
- """Whether the current securable is accessible from all workspaces or a specific set of workspaces."""
9940
-
9941
- name: Optional[str] = None
9942
- """Name of the storage credential."""
9943
-
9944
- new_name: Optional[str] = None
9945
- """New name for the storage credential."""
9946
-
9947
- owner: Optional[str] = None
9948
- """Username of current owner of credential."""
10173
+ """Serializes the UpdateRequestExternalLineage into a shallow dictionary of its immediate attributes."""
10174
+ body = {}
10175
+ if self.columns:
10176
+ body["columns"] = self.columns
10177
+ if self.id is not None:
10178
+ body["id"] = self.id
10179
+ if self.properties:
10180
+ body["properties"] = self.properties
10181
+ if self.source:
10182
+ body["source"] = self.source
10183
+ if self.target:
10184
+ body["target"] = self.target
10185
+ return body
9949
10186
 
9950
- read_only: Optional[bool] = None
9951
- """Whether the credential is usable only for read operations. Only applicable when purpose is
9952
- **STORAGE**."""
10187
+ @classmethod
10188
+ def from_dict(cls, d: Dict[str, Any]) -> UpdateRequestExternalLineage:
10189
+ """Deserializes the UpdateRequestExternalLineage from a dictionary."""
10190
+ return cls(
10191
+ columns=_repeated_dict(d, "columns", ColumnRelationship),
10192
+ id=d.get("id", None),
10193
+ properties=d.get("properties", None),
10194
+ source=_from_dict(d, "source", ExternalLineageObject),
10195
+ target=_from_dict(d, "target", ExternalLineageObject),
10196
+ )
9953
10197
 
9954
- skip_validation: Optional[bool] = None
9955
- """Supplying true to this argument skips validation of the updated credential."""
9956
10198
 
10199
+ @dataclass
10200
+ class UpdateResponse:
9957
10201
  def as_dict(self) -> dict:
9958
- """Serializes the UpdateStorageCredential into a dictionary suitable for use as a JSON request body."""
10202
+ """Serializes the UpdateResponse into a dictionary suitable for use as a JSON request body."""
9959
10203
  body = {}
9960
- if self.aws_iam_role:
9961
- body["aws_iam_role"] = self.aws_iam_role.as_dict()
9962
- if self.azure_managed_identity:
9963
- body["azure_managed_identity"] = self.azure_managed_identity.as_dict()
9964
- if self.azure_service_principal:
9965
- body["azure_service_principal"] = self.azure_service_principal.as_dict()
9966
- if self.cloudflare_api_token:
9967
- body["cloudflare_api_token"] = self.cloudflare_api_token.as_dict()
9968
- if self.comment is not None:
9969
- body["comment"] = self.comment
9970
- if self.databricks_gcp_service_account:
9971
- body["databricks_gcp_service_account"] = self.databricks_gcp_service_account.as_dict()
9972
- if self.force is not None:
9973
- body["force"] = self.force
9974
- if self.isolation_mode is not None:
9975
- body["isolation_mode"] = self.isolation_mode.value
9976
- if self.name is not None:
9977
- body["name"] = self.name
9978
- if self.new_name is not None:
9979
- body["new_name"] = self.new_name
9980
- if self.owner is not None:
9981
- body["owner"] = self.owner
9982
- if self.read_only is not None:
9983
- body["read_only"] = self.read_only
9984
- if self.skip_validation is not None:
9985
- body["skip_validation"] = self.skip_validation
9986
10204
  return body
9987
10205
 
9988
10206
  def as_shallow_dict(self) -> dict:
9989
- """Serializes the UpdateStorageCredential into a shallow dictionary of its immediate attributes."""
10207
+ """Serializes the UpdateResponse into a shallow dictionary of its immediate attributes."""
9990
10208
  body = {}
9991
- if self.aws_iam_role:
9992
- body["aws_iam_role"] = self.aws_iam_role
9993
- if self.azure_managed_identity:
9994
- body["azure_managed_identity"] = self.azure_managed_identity
9995
- if self.azure_service_principal:
9996
- body["azure_service_principal"] = self.azure_service_principal
9997
- if self.cloudflare_api_token:
9998
- body["cloudflare_api_token"] = self.cloudflare_api_token
9999
- if self.comment is not None:
10000
- body["comment"] = self.comment
10001
- if self.databricks_gcp_service_account:
10002
- body["databricks_gcp_service_account"] = self.databricks_gcp_service_account
10003
- if self.force is not None:
10004
- body["force"] = self.force
10005
- if self.isolation_mode is not None:
10006
- body["isolation_mode"] = self.isolation_mode
10007
- if self.name is not None:
10008
- body["name"] = self.name
10009
- if self.new_name is not None:
10010
- body["new_name"] = self.new_name
10011
- if self.owner is not None:
10012
- body["owner"] = self.owner
10013
- if self.read_only is not None:
10014
- body["read_only"] = self.read_only
10015
- if self.skip_validation is not None:
10016
- body["skip_validation"] = self.skip_validation
10017
10209
  return body
10018
10210
 
10019
10211
  @classmethod
10020
- def from_dict(cls, d: Dict[str, Any]) -> UpdateStorageCredential:
10021
- """Deserializes the UpdateStorageCredential from a dictionary."""
10022
- return cls(
10023
- aws_iam_role=_from_dict(d, "aws_iam_role", AwsIamRoleRequest),
10024
- azure_managed_identity=_from_dict(d, "azure_managed_identity", AzureManagedIdentityResponse),
10025
- azure_service_principal=_from_dict(d, "azure_service_principal", AzureServicePrincipal),
10026
- cloudflare_api_token=_from_dict(d, "cloudflare_api_token", CloudflareApiToken),
10027
- comment=d.get("comment", None),
10028
- databricks_gcp_service_account=_from_dict(
10029
- d, "databricks_gcp_service_account", DatabricksGcpServiceAccountRequest
10030
- ),
10031
- force=d.get("force", None),
10032
- isolation_mode=_enum(d, "isolation_mode", IsolationMode),
10033
- name=d.get("name", None),
10034
- new_name=d.get("new_name", None),
10035
- owner=d.get("owner", None),
10036
- read_only=d.get("read_only", None),
10037
- skip_validation=d.get("skip_validation", None),
10038
- )
10212
+ def from_dict(cls, d: Dict[str, Any]) -> UpdateResponse:
10213
+ """Deserializes the UpdateResponse from a dictionary."""
10214
+ return cls()
10039
10215
 
10040
10216
 
10041
10217
  @dataclass
@@ -10249,6 +10425,11 @@ class VolumeInfo:
10249
10425
  """The unique identifier of the volume"""
10250
10426
 
10251
10427
  volume_type: Optional[VolumeType] = None
10428
+ """The type of the volume. An external volume is located in the specified external location. A
10429
+ managed volume is located in the default location which is specified by the parent schema, or
10430
+ the parent catalog, or the Metastore. [Learn more]
10431
+
10432
+ [Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external"""
10252
10433
 
10253
10434
  def as_dict(self) -> dict:
10254
10435
  """Serializes the VolumeInfo into a dictionary suitable for use as a JSON request body."""
@@ -10353,11 +10534,6 @@ class VolumeInfo:
10353
10534
 
10354
10535
 
10355
10536
  class VolumeType(Enum):
10356
- """The type of the volume. An external volume is located in the specified external location. A
10357
- managed volume is located in the default location which is specified by the parent schema, or
10358
- the parent catalog, or the Metastore. [Learn more]
10359
-
10360
- [Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external"""
10361
10537
 
10362
10538
  EXTERNAL = "EXTERNAL"
10363
10539
  MANAGED = "MANAGED"
@@ -10413,7 +10589,7 @@ class AccountMetastoreAssignmentsAPI:
10413
10589
 
10414
10590
  def create(
10415
10591
  self, workspace_id: int, metastore_id: str, *, metastore_assignment: Optional[CreateMetastoreAssignment] = None
10416
- ):
10592
+ ) -> AccountsCreateMetastoreAssignmentResponse:
10417
10593
  """Creates an assignment to a metastore for a workspace
10418
10594
 
10419
10595
  :param workspace_id: int
@@ -10422,7 +10598,7 @@ class AccountMetastoreAssignmentsAPI:
10422
10598
  Unity Catalog metastore ID
10423
10599
  :param metastore_assignment: :class:`CreateMetastoreAssignment` (optional)
10424
10600
 
10425
-
10601
+ :returns: :class:`AccountsCreateMetastoreAssignmentResponse`
10426
10602
  """
10427
10603
  body = {}
10428
10604
  if metastore_assignment is not None:
@@ -10432,14 +10608,15 @@ class AccountMetastoreAssignmentsAPI:
10432
10608
  "Content-Type": "application/json",
10433
10609
  }
10434
10610
 
10435
- self._api.do(
10611
+ res = self._api.do(
10436
10612
  "POST",
10437
10613
  f"/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}/metastores/{metastore_id}",
10438
10614
  body=body,
10439
10615
  headers=headers,
10440
10616
  )
10617
+ return AccountsCreateMetastoreAssignmentResponse.from_dict(res)
10441
10618
 
10442
- def delete(self, workspace_id: int, metastore_id: str):
10619
+ def delete(self, workspace_id: int, metastore_id: str) -> AccountsDeleteMetastoreAssignmentResponse:
10443
10620
  """Deletes a metastore assignment to a workspace, leaving the workspace with no metastore.
10444
10621
 
10445
10622
  :param workspace_id: int
@@ -10447,23 +10624,24 @@ class AccountMetastoreAssignmentsAPI:
10447
10624
  :param metastore_id: str
10448
10625
  Unity Catalog metastore ID
10449
10626
 
10450
-
10627
+ :returns: :class:`AccountsDeleteMetastoreAssignmentResponse`
10451
10628
  """
10452
10629
 
10453
10630
  headers = {
10454
10631
  "Accept": "application/json",
10455
10632
  }
10456
10633
 
10457
- self._api.do(
10634
+ res = self._api.do(
10458
10635
  "DELETE",
10459
10636
  f"/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}/metastores/{metastore_id}",
10460
10637
  headers=headers,
10461
10638
  )
10639
+ return AccountsDeleteMetastoreAssignmentResponse.from_dict(res)
10462
10640
 
10463
10641
  def get(self, workspace_id: int) -> AccountsMetastoreAssignment:
10464
10642
  """Gets the metastore assignment, if any, for the workspace specified by ID. If the workspace is assigned
10465
- a metastore, the mappig will be returned. If no metastore is assigned to the workspace, the assignment
10466
- will not be found and a 404 returned.
10643
+ a metastore, the mapping will be returned. If no metastore is assigned to the workspace, the
10644
+ assignment will not be found and a 404 returned.
10467
10645
 
10468
10646
  :param workspace_id: int
10469
10647
  Workspace ID.
@@ -10501,7 +10679,7 @@ class AccountMetastoreAssignmentsAPI:
10501
10679
 
10502
10680
  def update(
10503
10681
  self, workspace_id: int, metastore_id: str, *, metastore_assignment: Optional[UpdateMetastoreAssignment] = None
10504
- ):
10682
+ ) -> AccountsUpdateMetastoreAssignmentResponse:
10505
10683
  """Updates an assignment to a metastore for a workspace. Currently, only the default catalog may be
10506
10684
  updated.
10507
10685
 
@@ -10511,7 +10689,7 @@ class AccountMetastoreAssignmentsAPI:
10511
10689
  Unity Catalog metastore ID
10512
10690
  :param metastore_assignment: :class:`UpdateMetastoreAssignment` (optional)
10513
10691
 
10514
-
10692
+ :returns: :class:`AccountsUpdateMetastoreAssignmentResponse`
10515
10693
  """
10516
10694
  body = {}
10517
10695
  if metastore_assignment is not None:
@@ -10521,12 +10699,13 @@ class AccountMetastoreAssignmentsAPI:
10521
10699
  "Content-Type": "application/json",
10522
10700
  }
10523
10701
 
10524
- self._api.do(
10702
+ res = self._api.do(
10525
10703
  "PUT",
10526
10704
  f"/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}/metastores/{metastore_id}",
10527
10705
  body=body,
10528
10706
  headers=headers,
10529
10707
  )
10708
+ return AccountsUpdateMetastoreAssignmentResponse.from_dict(res)
10530
10709
 
10531
10710
 
10532
10711
  class AccountMetastoresAPI:
@@ -10536,12 +10715,12 @@ class AccountMetastoresAPI:
10536
10715
  def __init__(self, api_client):
10537
10716
  self._api = api_client
10538
10717
 
10539
- def create(self, *, metastore_info: Optional[CreateMetastore] = None) -> AccountsMetastoreInfo:
10718
+ def create(self, *, metastore_info: Optional[CreateAccountsMetastore] = None) -> AccountsCreateMetastoreResponse:
10540
10719
  """Creates a Unity Catalog metastore.
10541
10720
 
10542
- :param metastore_info: :class:`CreateMetastore` (optional)
10721
+ :param metastore_info: :class:`CreateAccountsMetastore` (optional)
10543
10722
 
10544
- :returns: :class:`AccountsMetastoreInfo`
10723
+ :returns: :class:`AccountsCreateMetastoreResponse`
10545
10724
  """
10546
10725
  body = {}
10547
10726
  if metastore_info is not None:
@@ -10552,9 +10731,9 @@ class AccountMetastoresAPI:
10552
10731
  }
10553
10732
 
10554
10733
  res = self._api.do("POST", f"/api/2.0/accounts/{self._api.account_id}/metastores", body=body, headers=headers)
10555
- return AccountsMetastoreInfo.from_dict(res)
10734
+ return AccountsCreateMetastoreResponse.from_dict(res)
10556
10735
 
10557
- def delete(self, metastore_id: str, *, force: Optional[bool] = None):
10736
+ def delete(self, metastore_id: str, *, force: Optional[bool] = None) -> AccountsDeleteMetastoreResponse:
10558
10737
  """Deletes a Unity Catalog metastore for an account, both specified by ID.
10559
10738
 
10560
10739
  :param metastore_id: str
@@ -10562,7 +10741,7 @@ class AccountMetastoresAPI:
10562
10741
  :param force: bool (optional)
10563
10742
  Force deletion even if the metastore is not empty. Default is false.
10564
10743
 
10565
-
10744
+ :returns: :class:`AccountsDeleteMetastoreResponse`
10566
10745
  """
10567
10746
 
10568
10747
  query = {}
@@ -10572,20 +10751,21 @@ class AccountMetastoresAPI:
10572
10751
  "Accept": "application/json",
10573
10752
  }
10574
10753
 
10575
- self._api.do(
10754
+ res = self._api.do(
10576
10755
  "DELETE",
10577
10756
  f"/api/2.0/accounts/{self._api.account_id}/metastores/{metastore_id}",
10578
10757
  query=query,
10579
10758
  headers=headers,
10580
10759
  )
10760
+ return AccountsDeleteMetastoreResponse.from_dict(res)
10581
10761
 
10582
- def get(self, metastore_id: str) -> AccountsMetastoreInfo:
10762
+ def get(self, metastore_id: str) -> AccountsGetMetastoreResponse:
10583
10763
  """Gets a Unity Catalog metastore from an account, both specified by ID.
10584
10764
 
10585
10765
  :param metastore_id: str
10586
10766
  Unity Catalog metastore ID
10587
10767
 
10588
- :returns: :class:`AccountsMetastoreInfo`
10768
+ :returns: :class:`AccountsGetMetastoreResponse`
10589
10769
  """
10590
10770
 
10591
10771
  headers = {
@@ -10595,7 +10775,7 @@ class AccountMetastoresAPI:
10595
10775
  res = self._api.do(
10596
10776
  "GET", f"/api/2.0/accounts/{self._api.account_id}/metastores/{metastore_id}", headers=headers
10597
10777
  )
10598
- return AccountsMetastoreInfo.from_dict(res)
10778
+ return AccountsGetMetastoreResponse.from_dict(res)
10599
10779
 
10600
10780
  def list(self) -> Iterator[MetastoreInfo]:
10601
10781
  """Gets all Unity Catalog metastores associated with an account specified by ID.
@@ -10609,17 +10789,20 @@ class AccountMetastoresAPI:
10609
10789
  }
10610
10790
 
10611
10791
  json = self._api.do("GET", f"/api/2.0/accounts/{self._api.account_id}/metastores", headers=headers)
10612
- parsed = ListMetastoresResponse.from_dict(json).metastores
10792
+ parsed = AccountsListMetastoresResponse.from_dict(json).metastores
10613
10793
  return parsed if parsed is not None else []
10614
10794
 
10615
- def update(self, metastore_id: str, *, metastore_info: Optional[UpdateMetastore] = None) -> AccountsMetastoreInfo:
10795
+ def update(
10796
+ self, metastore_id: str, *, metastore_info: Optional[UpdateAccountsMetastore] = None
10797
+ ) -> AccountsUpdateMetastoreResponse:
10616
10798
  """Updates an existing Unity Catalog metastore.
10617
10799
 
10618
10800
  :param metastore_id: str
10619
10801
  Unity Catalog metastore ID
10620
- :param metastore_info: :class:`UpdateMetastore` (optional)
10802
+ :param metastore_info: :class:`UpdateAccountsMetastore` (optional)
10803
+ Properties of the metastore to change.
10621
10804
 
10622
- :returns: :class:`AccountsMetastoreInfo`
10805
+ :returns: :class:`AccountsUpdateMetastoreResponse`
10623
10806
  """
10624
10807
  body = {}
10625
10808
  if metastore_info is not None:
@@ -10632,7 +10815,7 @@ class AccountMetastoresAPI:
10632
10815
  res = self._api.do(
10633
10816
  "PUT", f"/api/2.0/accounts/{self._api.account_id}/metastores/{metastore_id}", body=body, headers=headers
10634
10817
  )
10635
- return AccountsMetastoreInfo.from_dict(res)
10818
+ return AccountsUpdateMetastoreResponse.from_dict(res)
10636
10819
 
10637
10820
 
10638
10821
  class AccountStorageCredentialsAPI:
@@ -10642,25 +10825,33 @@ class AccountStorageCredentialsAPI:
10642
10825
  self._api = api_client
10643
10826
 
10644
10827
  def create(
10645
- self, metastore_id: str, *, credential_info: Optional[CreateStorageCredential] = None
10646
- ) -> AccountsStorageCredentialInfo:
10647
- """Creates a new storage credential. The request object is specific to the cloud:
10648
-
10649
- * **AwsIamRole** for AWS credentials * **AzureServicePrincipal** for Azure credentials *
10650
- **GcpServiceAcountKey** for GCP credentials.
10828
+ self,
10829
+ metastore_id: str,
10830
+ *,
10831
+ credential_info: Optional[CreateAccountsStorageCredential] = None,
10832
+ skip_validation: Optional[bool] = None,
10833
+ ) -> AccountsCreateStorageCredentialInfo:
10834
+ """Creates a new storage credential. The request object is specific to the cloud: - **AwsIamRole** for
10835
+ AWS credentials - **AzureServicePrincipal** for Azure credentials - **GcpServiceAccountKey** for GCP
10836
+ credentials
10651
10837
 
10652
- The caller must be a metastore admin and have the **CREATE_STORAGE_CREDENTIAL** privilege on the
10838
+ The caller must be a metastore admin and have the `CREATE_STORAGE_CREDENTIAL` privilege on the
10653
10839
  metastore.
10654
10840
 
10655
10841
  :param metastore_id: str
10656
10842
  Unity Catalog metastore ID
10657
- :param credential_info: :class:`CreateStorageCredential` (optional)
10843
+ :param credential_info: :class:`CreateAccountsStorageCredential` (optional)
10844
+ :param skip_validation: bool (optional)
10845
+ Optional, default false. Supplying true to this argument skips validation of the created set of
10846
+ credentials.
10658
10847
 
10659
- :returns: :class:`AccountsStorageCredentialInfo`
10848
+ :returns: :class:`AccountsCreateStorageCredentialInfo`
10660
10849
  """
10661
10850
  body = {}
10662
10851
  if credential_info is not None:
10663
10852
  body["credential_info"] = credential_info.as_dict()
10853
+ if skip_validation is not None:
10854
+ body["skip_validation"] = skip_validation
10664
10855
  headers = {
10665
10856
  "Accept": "application/json",
10666
10857
  "Content-Type": "application/json",
@@ -10672,9 +10863,11 @@ class AccountStorageCredentialsAPI:
10672
10863
  body=body,
10673
10864
  headers=headers,
10674
10865
  )
10675
- return AccountsStorageCredentialInfo.from_dict(res)
10866
+ return AccountsCreateStorageCredentialInfo.from_dict(res)
10676
10867
 
10677
- def delete(self, metastore_id: str, storage_credential_name: str, *, force: Optional[bool] = None):
10868
+ def delete(
10869
+ self, metastore_id: str, storage_credential_name: str, *, force: Optional[bool] = None
10870
+ ) -> AccountsDeleteStorageCredentialResponse:
10678
10871
  """Deletes a storage credential from the metastore. The caller must be an owner of the storage
10679
10872
  credential.
10680
10873
 
@@ -10685,7 +10878,7 @@ class AccountStorageCredentialsAPI:
10685
10878
  :param force: bool (optional)
10686
10879
  Force deletion even if the Storage Credential is not empty. Default is false.
10687
10880
 
10688
-
10881
+ :returns: :class:`AccountsDeleteStorageCredentialResponse`
10689
10882
  """
10690
10883
 
10691
10884
  query = {}
@@ -10695,12 +10888,13 @@ class AccountStorageCredentialsAPI:
10695
10888
  "Accept": "application/json",
10696
10889
  }
10697
10890
 
10698
- self._api.do(
10891
+ res = self._api.do(
10699
10892
  "DELETE",
10700
10893
  f"/api/2.0/accounts/{self._api.account_id}/metastores/{metastore_id}/storage-credentials/{storage_credential_name}",
10701
10894
  query=query,
10702
10895
  headers=headers,
10703
10896
  )
10897
+ return AccountsDeleteStorageCredentialResponse.from_dict(res)
10704
10898
 
10705
10899
  def get(self, metastore_id: str, storage_credential_name: str) -> AccountsStorageCredentialInfo:
10706
10900
  """Gets a storage credential from the metastore. The caller must be a metastore admin, the owner of the
@@ -10709,7 +10903,7 @@ class AccountStorageCredentialsAPI:
10709
10903
  :param metastore_id: str
10710
10904
  Unity Catalog metastore ID
10711
10905
  :param storage_credential_name: str
10712
- Name of the storage credential.
10906
+ Required. Name of the storage credential.
10713
10907
 
10714
10908
  :returns: :class:`AccountsStorageCredentialInfo`
10715
10909
  """
@@ -10751,22 +10945,27 @@ class AccountStorageCredentialsAPI:
10751
10945
  metastore_id: str,
10752
10946
  storage_credential_name: str,
10753
10947
  *,
10754
- credential_info: Optional[UpdateStorageCredential] = None,
10755
- ) -> AccountsStorageCredentialInfo:
10948
+ credential_info: Optional[UpdateAccountsStorageCredential] = None,
10949
+ skip_validation: Optional[bool] = None,
10950
+ ) -> AccountsUpdateStorageCredentialResponse:
10756
10951
  """Updates a storage credential on the metastore. The caller must be the owner of the storage credential.
10757
- If the caller is a metastore admin, only the __owner__ credential can be changed.
10952
+ If the caller is a metastore admin, only the **owner** credential can be changed.
10758
10953
 
10759
10954
  :param metastore_id: str
10760
10955
  Unity Catalog metastore ID
10761
10956
  :param storage_credential_name: str
10762
10957
  Name of the storage credential.
10763
- :param credential_info: :class:`UpdateStorageCredential` (optional)
10958
+ :param credential_info: :class:`UpdateAccountsStorageCredential` (optional)
10959
+ :param skip_validation: bool (optional)
10960
+ Optional. Supplying true to this argument skips validation of the updated set of credentials.
10764
10961
 
10765
- :returns: :class:`AccountsStorageCredentialInfo`
10962
+ :returns: :class:`AccountsUpdateStorageCredentialResponse`
10766
10963
  """
10767
10964
  body = {}
10768
10965
  if credential_info is not None:
10769
10966
  body["credential_info"] = credential_info.as_dict()
10967
+ if skip_validation is not None:
10968
+ body["skip_validation"] = skip_validation
10770
10969
  headers = {
10771
10970
  "Accept": "application/json",
10772
10971
  "Content-Type": "application/json",
@@ -10778,7 +10977,7 @@ class AccountStorageCredentialsAPI:
10778
10977
  body=body,
10779
10978
  headers=headers,
10780
10979
  )
10781
- return AccountsStorageCredentialInfo.from_dict(res)
10980
+ return AccountsUpdateStorageCredentialResponse.from_dict(res)
10782
10981
 
10783
10982
 
10784
10983
  class ArtifactAllowlistsAPI:
@@ -10971,6 +11170,7 @@ class CatalogsAPI:
10971
11170
  self,
10972
11171
  *,
10973
11172
  include_browse: Optional[bool] = None,
11173
+ include_unbound: Optional[bool] = None,
10974
11174
  max_results: Optional[int] = None,
10975
11175
  page_token: Optional[str] = None,
10976
11176
  ) -> Iterator[CatalogInfo]:
@@ -10979,9 +11179,20 @@ class CatalogsAPI:
10979
11179
  **USE_CATALOG** privilege) will be retrieved. There is no guarantee of a specific ordering of the
10980
11180
  elements in the array.
10981
11181
 
11182
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
11183
+ will be deprecated soon.
11184
+
11185
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
11186
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
11187
+ absent, which is the only indication that the end of results has been reached. This behavior follows
11188
+ Google AIP-158 guidelines.
11189
+
10982
11190
  :param include_browse: bool (optional)
10983
11191
  Whether to include catalogs in the response for which the principal can only access selective
10984
11192
  metadata for
11193
+ :param include_unbound: bool (optional)
11194
+ Whether to include catalogs not bound to the workspace. Effective only if the user has permission to
11195
+ update the catalog–workspace binding.
10985
11196
  :param max_results: int (optional)
10986
11197
  Maximum number of catalogs to return. - when set to 0, the page length is set to a server configured
10987
11198
  value (recommended); - when set to a value greater than 0, the page length is the minimum of this
@@ -10999,6 +11210,8 @@ class CatalogsAPI:
10999
11210
  query = {}
11000
11211
  if include_browse is not None:
11001
11212
  query["include_browse"] = include_browse
11213
+ if include_unbound is not None:
11214
+ query["include_unbound"] = include_unbound
11002
11215
  if max_results is not None:
11003
11216
  query["max_results"] = max_results
11004
11217
  if page_token is not None:
@@ -11172,6 +11385,14 @@ class ConnectionsAPI:
11172
11385
  def list(self, *, max_results: Optional[int] = None, page_token: Optional[str] = None) -> Iterator[ConnectionInfo]:
11173
11386
  """List all connections.
11174
11387
 
11388
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
11389
+ will be deprecated soon.
11390
+
11391
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
11392
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
11393
+ absent, which is the only indication that the end of results has been reached. This behavior follows
11394
+ Google AIP-158 guidelines.
11395
+
11175
11396
  :param max_results: int (optional)
11176
11397
  Maximum number of connections to return. - If not set, all connections are returned (not
11177
11398
  recommended). - when set to a value greater than 0, the page length is the minimum of this value and
@@ -11388,6 +11609,7 @@ class CredentialsAPI:
11388
11609
  def list_credentials(
11389
11610
  self,
11390
11611
  *,
11612
+ include_unbound: Optional[bool] = None,
11391
11613
  max_results: Optional[int] = None,
11392
11614
  page_token: Optional[str] = None,
11393
11615
  purpose: Optional[CredentialPurpose] = None,
@@ -11398,6 +11620,9 @@ class CredentialsAPI:
11398
11620
  is a metastore admin, retrieval of credentials is unrestricted. There is no guarantee of a specific
11399
11621
  ordering of the elements in the array.
11400
11622
 
11623
+ :param include_unbound: bool (optional)
11624
+ Whether to include credentials not bound to the workspace. Effective only if the user has permission
11625
+ to update the credential–workspace binding.
11401
11626
  :param max_results: int (optional)
11402
11627
  Maximum number of credentials to return. - If not set, the default max page size is used. - When set
11403
11628
  to a value greater than 0, the page length is the minimum of this value and a server-configured
@@ -11412,6 +11637,8 @@ class CredentialsAPI:
11412
11637
  """
11413
11638
 
11414
11639
  query = {}
11640
+ if include_unbound is not None:
11641
+ query["include_unbound"] = include_unbound
11415
11642
  if max_results is not None:
11416
11643
  query["max_results"] = max_results
11417
11644
  if page_token is not None:
@@ -12035,6 +12262,7 @@ class ExternalLocationsAPI:
12035
12262
  self,
12036
12263
  *,
12037
12264
  include_browse: Optional[bool] = None,
12265
+ include_unbound: Optional[bool] = None,
12038
12266
  max_results: Optional[int] = None,
12039
12267
  page_token: Optional[str] = None,
12040
12268
  ) -> Iterator[ExternalLocationInfo]:
@@ -12042,9 +12270,20 @@ class ExternalLocationsAPI:
12042
12270
  must be a metastore admin, the owner of the external location, or a user that has some privilege on
12043
12271
  the external location. There is no guarantee of a specific ordering of the elements in the array.
12044
12272
 
12273
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
12274
+ will be deprecated soon.
12275
+
12276
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
12277
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
12278
+ absent, which is the only indication that the end of results has been reached. This behavior follows
12279
+ Google AIP-158 guidelines.
12280
+
12045
12281
  :param include_browse: bool (optional)
12046
12282
  Whether to include external locations in the response for which the principal can only access
12047
12283
  selective metadata for
12284
+ :param include_unbound: bool (optional)
12285
+ Whether to include external locations not bound to the workspace. Effective only if the user has
12286
+ permission to update the location–workspace binding.
12048
12287
  :param max_results: int (optional)
12049
12288
  Maximum number of external locations to return. If not set, all the external locations are returned
12050
12289
  (not recommended). - when set to a value greater than 0, the page length is the minimum of this
@@ -12059,6 +12298,8 @@ class ExternalLocationsAPI:
12059
12298
  query = {}
12060
12299
  if include_browse is not None:
12061
12300
  query["include_browse"] = include_browse
12301
+ if include_unbound is not None:
12302
+ query["include_unbound"] = include_unbound
12062
12303
  if max_results is not None:
12063
12304
  query["max_results"] = max_results
12064
12305
  if page_token is not None:
@@ -12344,7 +12585,7 @@ class FunctionsAPI:
12344
12585
 
12345
12586
  :param name: str
12346
12587
  The fully-qualified name of the function (of the form
12347
- __catalog_name__.__schema_name__.__function__name__).
12588
+ __catalog_name__.__schema_name__.__function__name__) .
12348
12589
  :param force: bool (optional)
12349
12590
  Force deletion even if the function is notempty.
12350
12591
 
@@ -12354,9 +12595,7 @@ class FunctionsAPI:
12354
12595
  query = {}
12355
12596
  if force is not None:
12356
12597
  query["force"] = force
12357
- headers = {
12358
- "Accept": "application/json",
12359
- }
12598
+ headers = {}
12360
12599
 
12361
12600
  self._api.do("DELETE", f"/api/2.1/unity-catalog/functions/{name}", query=query, headers=headers)
12362
12601
 
@@ -12403,6 +12642,14 @@ class FunctionsAPI:
12403
12642
  functions for which either the user has the **EXECUTE** privilege or the user is the owner. There is
12404
12643
  no guarantee of a specific ordering of the elements in the array.
12405
12644
 
12645
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
12646
+ will be deprecated soon.
12647
+
12648
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
12649
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
12650
+ absent, which is the only indication that the end of results has been reached. This behavior follows
12651
+ Google AIP-158 guidelines.
12652
+
12406
12653
  :param catalog_name: str
12407
12654
  Name of parent catalog for functions of interest.
12408
12655
  :param schema_name: str
@@ -12457,7 +12704,7 @@ class FunctionsAPI:
12457
12704
  The fully-qualified name of the function (of the form
12458
12705
  __catalog_name__.__schema_name__.__function__name__).
12459
12706
  :param owner: str (optional)
12460
- Username of current owner of function.
12707
+ Username of current owner of the function.
12461
12708
 
12462
12709
  :returns: :class:`FunctionInfo`
12463
12710
  """
@@ -12747,6 +12994,14 @@ class MetastoresAPI:
12747
12994
  """Gets an array of the available metastores (as __MetastoreInfo__ objects). The caller must be an admin
12748
12995
  to retrieve this info. There is no guarantee of a specific ordering of the elements in the array.
12749
12996
 
12997
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
12998
+ will be deprecated soon.
12999
+
13000
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
13001
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
13002
+ absent, which is the only indication that the end of results has been reached. This behavior follows
13003
+ Google AIP-158 guidelines.
13004
+
12750
13005
  :param max_results: int (optional)
12751
13006
  Maximum number of metastores to return. - when set to a value greater than 0, the page length is the
12752
13007
  minimum of this value and a server configured value; - when set to 0, the page length is set to a
@@ -13067,7 +13322,29 @@ class ModelVersionsAPI:
13067
13322
  return
13068
13323
  query["page_token"] = json["next_page_token"]
13069
13324
 
13070
- def update(self, full_name: str, version: int, *, comment: Optional[str] = None) -> ModelVersionInfo:
13325
+ def update(
13326
+ self,
13327
+ full_name: str,
13328
+ version: int,
13329
+ *,
13330
+ aliases: Optional[List[RegisteredModelAlias]] = None,
13331
+ catalog_name: Optional[str] = None,
13332
+ comment: Optional[str] = None,
13333
+ created_at: Optional[int] = None,
13334
+ created_by: Optional[str] = None,
13335
+ id: Optional[str] = None,
13336
+ metastore_id: Optional[str] = None,
13337
+ model_name: Optional[str] = None,
13338
+ model_version_dependencies: Optional[DependencyList] = None,
13339
+ run_id: Optional[str] = None,
13340
+ run_workspace_id: Optional[int] = None,
13341
+ schema_name: Optional[str] = None,
13342
+ source: Optional[str] = None,
13343
+ status: Optional[ModelVersionInfoStatus] = None,
13344
+ storage_location: Optional[str] = None,
13345
+ updated_at: Optional[int] = None,
13346
+ updated_by: Optional[str] = None,
13347
+ ) -> ModelVersionInfo:
13071
13348
  """Updates the specified model version.
13072
13349
 
13073
13350
  The caller must be a metastore admin or an owner of the parent registered model. For the latter case,
@@ -13080,14 +13357,80 @@ class ModelVersionsAPI:
13080
13357
  The three-level (fully qualified) name of the model version
13081
13358
  :param version: int
13082
13359
  The integer version number of the model version
13360
+ :param aliases: List[:class:`RegisteredModelAlias`] (optional)
13361
+ List of aliases associated with the model version
13362
+ :param catalog_name: str (optional)
13363
+ The name of the catalog containing the model version
13083
13364
  :param comment: str (optional)
13084
13365
  The comment attached to the model version
13366
+ :param created_at: int (optional)
13367
+ :param created_by: str (optional)
13368
+ The identifier of the user who created the model version
13369
+ :param id: str (optional)
13370
+ The unique identifier of the model version
13371
+ :param metastore_id: str (optional)
13372
+ The unique identifier of the metastore containing the model version
13373
+ :param model_name: str (optional)
13374
+ The name of the parent registered model of the model version, relative to parent schema
13375
+ :param model_version_dependencies: :class:`DependencyList` (optional)
13376
+ Model version dependencies, for feature-store packaged models
13377
+ :param run_id: str (optional)
13378
+ MLflow run ID used when creating the model version, if ``source`` was generated by an experiment run
13379
+ stored in an MLflow tracking server
13380
+ :param run_workspace_id: int (optional)
13381
+ ID of the Databricks workspace containing the MLflow run that generated this model version, if
13382
+ applicable
13383
+ :param schema_name: str (optional)
13384
+ The name of the schema containing the model version, relative to parent catalog
13385
+ :param source: str (optional)
13386
+ URI indicating the location of the source artifacts (files) for the model version
13387
+ :param status: :class:`ModelVersionInfoStatus` (optional)
13388
+ Current status of the model version. Newly created model versions start in PENDING_REGISTRATION
13389
+ status, then move to READY status once the model version files are uploaded and the model version is
13390
+ finalized. Only model versions in READY status can be loaded for inference or served.
13391
+ :param storage_location: str (optional)
13392
+ The storage location on the cloud under which model version data files are stored
13393
+ :param updated_at: int (optional)
13394
+ :param updated_by: str (optional)
13395
+ The identifier of the user who updated the model version last time
13085
13396
 
13086
13397
  :returns: :class:`ModelVersionInfo`
13087
13398
  """
13088
13399
  body = {}
13400
+ if aliases is not None:
13401
+ body["aliases"] = [v.as_dict() for v in aliases]
13402
+ if catalog_name is not None:
13403
+ body["catalog_name"] = catalog_name
13089
13404
  if comment is not None:
13090
13405
  body["comment"] = comment
13406
+ if created_at is not None:
13407
+ body["created_at"] = created_at
13408
+ if created_by is not None:
13409
+ body["created_by"] = created_by
13410
+ if id is not None:
13411
+ body["id"] = id
13412
+ if metastore_id is not None:
13413
+ body["metastore_id"] = metastore_id
13414
+ if model_name is not None:
13415
+ body["model_name"] = model_name
13416
+ if model_version_dependencies is not None:
13417
+ body["model_version_dependencies"] = model_version_dependencies.as_dict()
13418
+ if run_id is not None:
13419
+ body["run_id"] = run_id
13420
+ if run_workspace_id is not None:
13421
+ body["run_workspace_id"] = run_workspace_id
13422
+ if schema_name is not None:
13423
+ body["schema_name"] = schema_name
13424
+ if source is not None:
13425
+ body["source"] = source
13426
+ if status is not None:
13427
+ body["status"] = status.value
13428
+ if storage_location is not None:
13429
+ body["storage_location"] = storage_location
13430
+ if updated_at is not None:
13431
+ body["updated_at"] = updated_at
13432
+ if updated_by is not None:
13433
+ body["updated_by"] = updated_by
13091
13434
  headers = {
13092
13435
  "Accept": "application/json",
13093
13436
  "Content-Type": "application/json",
@@ -13795,20 +14138,29 @@ class RegisteredModelsAPI:
13795
14138
  new model version, or update permissions on the registered model, users must be owners of the registered
13796
14139
  model.
13797
14140
 
13798
- Note: The securable type for models is "FUNCTION". When using REST APIs (e.g. tagging, grants) that
13799
- specify a securable type, use "FUNCTION" as the securable type."""
14141
+ Note: The securable type for models is FUNCTION. When using REST APIs (e.g. tagging, grants) that specify
14142
+ a securable type, use FUNCTION as the securable type."""
13800
14143
 
13801
14144
  def __init__(self, api_client):
13802
14145
  self._api = api_client
13803
14146
 
13804
14147
  def create(
13805
14148
  self,
13806
- catalog_name: str,
13807
- schema_name: str,
13808
- name: str,
13809
14149
  *,
14150
+ aliases: Optional[List[RegisteredModelAlias]] = None,
14151
+ browse_only: Optional[bool] = None,
14152
+ catalog_name: Optional[str] = None,
13810
14153
  comment: Optional[str] = None,
14154
+ created_at: Optional[int] = None,
14155
+ created_by: Optional[str] = None,
14156
+ full_name: Optional[str] = None,
14157
+ metastore_id: Optional[str] = None,
14158
+ name: Optional[str] = None,
14159
+ owner: Optional[str] = None,
14160
+ schema_name: Optional[str] = None,
13811
14161
  storage_location: Optional[str] = None,
14162
+ updated_at: Optional[int] = None,
14163
+ updated_by: Optional[str] = None,
13812
14164
  ) -> RegisteredModelInfo:
13813
14165
  """Creates a new registered model in Unity Catalog.
13814
14166
 
@@ -13820,30 +14172,67 @@ class RegisteredModelsAPI:
13820
14172
  **USE_CATALOG** privilege on the parent catalog and the **USE_SCHEMA** privilege on the parent schema.
13821
14173
  - The caller must have the **CREATE MODEL** or **CREATE FUNCTION** privilege on the parent schema.
13822
14174
 
13823
- :param catalog_name: str
14175
+ :param aliases: List[:class:`RegisteredModelAlias`] (optional)
14176
+ List of aliases associated with the registered model
14177
+ :param browse_only: bool (optional)
14178
+ Indicates whether the principal is limited to retrieving metadata for the associated object through
14179
+ the BROWSE privilege when include_browse is enabled in the request.
14180
+ :param catalog_name: str (optional)
13824
14181
  The name of the catalog where the schema and the registered model reside
13825
- :param schema_name: str
13826
- The name of the schema where the registered model resides
13827
- :param name: str
13828
- The name of the registered model
13829
14182
  :param comment: str (optional)
13830
14183
  The comment attached to the registered model
14184
+ :param created_at: int (optional)
14185
+ Creation timestamp of the registered model in milliseconds since the Unix epoch
14186
+ :param created_by: str (optional)
14187
+ The identifier of the user who created the registered model
14188
+ :param full_name: str (optional)
14189
+ The three-level (fully qualified) name of the registered model
14190
+ :param metastore_id: str (optional)
14191
+ The unique identifier of the metastore
14192
+ :param name: str (optional)
14193
+ The name of the registered model
14194
+ :param owner: str (optional)
14195
+ The identifier of the user who owns the registered model
14196
+ :param schema_name: str (optional)
14197
+ The name of the schema where the registered model resides
13831
14198
  :param storage_location: str (optional)
13832
14199
  The storage location on the cloud under which model version data files are stored
14200
+ :param updated_at: int (optional)
14201
+ Last-update timestamp of the registered model in milliseconds since the Unix epoch
14202
+ :param updated_by: str (optional)
14203
+ The identifier of the user who updated the registered model last time
13833
14204
 
13834
14205
  :returns: :class:`RegisteredModelInfo`
13835
14206
  """
13836
14207
  body = {}
14208
+ if aliases is not None:
14209
+ body["aliases"] = [v.as_dict() for v in aliases]
14210
+ if browse_only is not None:
14211
+ body["browse_only"] = browse_only
13837
14212
  if catalog_name is not None:
13838
14213
  body["catalog_name"] = catalog_name
13839
14214
  if comment is not None:
13840
14215
  body["comment"] = comment
14216
+ if created_at is not None:
14217
+ body["created_at"] = created_at
14218
+ if created_by is not None:
14219
+ body["created_by"] = created_by
14220
+ if full_name is not None:
14221
+ body["full_name"] = full_name
14222
+ if metastore_id is not None:
14223
+ body["metastore_id"] = metastore_id
13841
14224
  if name is not None:
13842
14225
  body["name"] = name
14226
+ if owner is not None:
14227
+ body["owner"] = owner
13843
14228
  if schema_name is not None:
13844
14229
  body["schema_name"] = schema_name
13845
14230
  if storage_location is not None:
13846
14231
  body["storage_location"] = storage_location
14232
+ if updated_at is not None:
14233
+ body["updated_at"] = updated_at
14234
+ if updated_by is not None:
14235
+ body["updated_by"] = updated_by
13847
14236
  headers = {
13848
14237
  "Accept": "application/json",
13849
14238
  "Content-Type": "application/json",
@@ -14001,7 +14390,7 @@ class RegisteredModelsAPI:
14001
14390
  **USE_SCHEMA** privilege on the parent schema.
14002
14391
 
14003
14392
  :param full_name: str
14004
- Full name of the registered model
14393
+ The three-level (fully qualified) name of the registered model
14005
14394
  :param alias: str
14006
14395
  The name of the alias
14007
14396
  :param version_num: int
@@ -14026,9 +14415,20 @@ class RegisteredModelsAPI:
14026
14415
  self,
14027
14416
  full_name: str,
14028
14417
  *,
14418
+ aliases: Optional[List[RegisteredModelAlias]] = None,
14419
+ browse_only: Optional[bool] = None,
14420
+ catalog_name: Optional[str] = None,
14029
14421
  comment: Optional[str] = None,
14422
+ created_at: Optional[int] = None,
14423
+ created_by: Optional[str] = None,
14424
+ metastore_id: Optional[str] = None,
14425
+ name: Optional[str] = None,
14030
14426
  new_name: Optional[str] = None,
14031
14427
  owner: Optional[str] = None,
14428
+ schema_name: Optional[str] = None,
14429
+ storage_location: Optional[str] = None,
14430
+ updated_at: Optional[int] = None,
14431
+ updated_by: Optional[str] = None,
14032
14432
  ) -> RegisteredModelInfo:
14033
14433
  """Updates the specified registered model.
14034
14434
 
@@ -14040,22 +14440,67 @@ class RegisteredModelsAPI:
14040
14440
 
14041
14441
  :param full_name: str
14042
14442
  The three-level (fully qualified) name of the registered model
14443
+ :param aliases: List[:class:`RegisteredModelAlias`] (optional)
14444
+ List of aliases associated with the registered model
14445
+ :param browse_only: bool (optional)
14446
+ Indicates whether the principal is limited to retrieving metadata for the associated object through
14447
+ the BROWSE privilege when include_browse is enabled in the request.
14448
+ :param catalog_name: str (optional)
14449
+ The name of the catalog where the schema and the registered model reside
14043
14450
  :param comment: str (optional)
14044
14451
  The comment attached to the registered model
14452
+ :param created_at: int (optional)
14453
+ Creation timestamp of the registered model in milliseconds since the Unix epoch
14454
+ :param created_by: str (optional)
14455
+ The identifier of the user who created the registered model
14456
+ :param metastore_id: str (optional)
14457
+ The unique identifier of the metastore
14458
+ :param name: str (optional)
14459
+ The name of the registered model
14045
14460
  :param new_name: str (optional)
14046
14461
  New name for the registered model.
14047
14462
  :param owner: str (optional)
14048
14463
  The identifier of the user who owns the registered model
14464
+ :param schema_name: str (optional)
14465
+ The name of the schema where the registered model resides
14466
+ :param storage_location: str (optional)
14467
+ The storage location on the cloud under which model version data files are stored
14468
+ :param updated_at: int (optional)
14469
+ Last-update timestamp of the registered model in milliseconds since the Unix epoch
14470
+ :param updated_by: str (optional)
14471
+ The identifier of the user who updated the registered model last time
14049
14472
 
14050
14473
  :returns: :class:`RegisteredModelInfo`
14051
14474
  """
14052
14475
  body = {}
14476
+ if aliases is not None:
14477
+ body["aliases"] = [v.as_dict() for v in aliases]
14478
+ if browse_only is not None:
14479
+ body["browse_only"] = browse_only
14480
+ if catalog_name is not None:
14481
+ body["catalog_name"] = catalog_name
14053
14482
  if comment is not None:
14054
14483
  body["comment"] = comment
14484
+ if created_at is not None:
14485
+ body["created_at"] = created_at
14486
+ if created_by is not None:
14487
+ body["created_by"] = created_by
14488
+ if metastore_id is not None:
14489
+ body["metastore_id"] = metastore_id
14490
+ if name is not None:
14491
+ body["name"] = name
14055
14492
  if new_name is not None:
14056
14493
  body["new_name"] = new_name
14057
14494
  if owner is not None:
14058
14495
  body["owner"] = owner
14496
+ if schema_name is not None:
14497
+ body["schema_name"] = schema_name
14498
+ if storage_location is not None:
14499
+ body["storage_location"] = storage_location
14500
+ if updated_at is not None:
14501
+ body["updated_at"] = updated_at
14502
+ if updated_by is not None:
14503
+ body["updated_by"] = updated_by
14059
14504
  headers = {
14060
14505
  "Accept": "application/json",
14061
14506
  "Content-Type": "application/json",
@@ -14354,6 +14799,14 @@ class SchemasAPI:
14354
14799
  owned by the caller (or for which the caller has the **USE_SCHEMA** privilege) will be retrieved.
14355
14800
  There is no guarantee of a specific ordering of the elements in the array.
14356
14801
 
14802
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
14803
+ will be deprecated soon.
14804
+
14805
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
14806
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
14807
+ absent, which is the only indication that the end of results has been reached. This behavior follows
14808
+ Google AIP-158 guidelines.
14809
+
14357
14810
  :param catalog_name: str
14358
14811
  Parent catalog for schemas of interest.
14359
14812
  :param include_browse: bool (optional)
@@ -14565,13 +15018,28 @@ class StorageCredentialsAPI:
14565
15018
  return StorageCredentialInfo.from_dict(res)
14566
15019
 
14567
15020
  def list(
14568
- self, *, max_results: Optional[int] = None, page_token: Optional[str] = None
15021
+ self,
15022
+ *,
15023
+ include_unbound: Optional[bool] = None,
15024
+ max_results: Optional[int] = None,
15025
+ page_token: Optional[str] = None,
14569
15026
  ) -> Iterator[StorageCredentialInfo]:
14570
15027
  """Gets an array of storage credentials (as __StorageCredentialInfo__ objects). The array is limited to
14571
15028
  only those storage credentials the caller has permission to access. If the caller is a metastore
14572
15029
  admin, retrieval of credentials is unrestricted. There is no guarantee of a specific ordering of the
14573
15030
  elements in the array.
14574
15031
 
15032
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
15033
+ will be deprecated soon.
15034
+
15035
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
15036
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
15037
+ absent, which is the only indication that the end of results has been reached. This behavior follows
15038
+ Google AIP-158 guidelines.
15039
+
15040
+ :param include_unbound: bool (optional)
15041
+ Whether to include credentials not bound to the workspace. Effective only if the user has permission
15042
+ to update the credential–workspace binding.
14575
15043
  :param max_results: int (optional)
14576
15044
  Maximum number of storage credentials to return. If not set, all the storage credentials are
14577
15045
  returned (not recommended). - when set to a value greater than 0, the page length is the minimum of
@@ -14585,6 +15053,8 @@ class StorageCredentialsAPI:
14585
15053
  """
14586
15054
 
14587
15055
  query = {}
15056
+ if include_unbound is not None:
15057
+ query["include_unbound"] = include_unbound
14588
15058
  if max_results is not None:
14589
15059
  query["max_results"] = max_results
14590
15060
  if page_token is not None:
@@ -14820,6 +15290,14 @@ class SystemSchemasAPI:
14820
15290
  """Gets an array of system schemas for a metastore. The caller must be an account admin or a metastore
14821
15291
  admin.
14822
15292
 
15293
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
15294
+ will be deprecated soon.
15295
+
15296
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
15297
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
15298
+ absent, which is the only indication that the end of results has been reached. This behavior follows
15299
+ Google AIP-158 guidelines.
15300
+
14823
15301
  :param metastore_id: str
14824
15302
  The ID for the metastore in which the system schema resides.
14825
15303
  :param max_results: int (optional)
@@ -15116,6 +15594,14 @@ class TablesAPI:
15116
15594
  catalog and the **USE_SCHEMA** privilege on the parent schema. There is no guarantee of a specific
15117
15595
  ordering of the elements in the array.
15118
15596
 
15597
+ NOTE: we recommend using max_results=0 to use the paginated version of this API. Unpaginated calls
15598
+ will be deprecated soon.
15599
+
15600
+ PAGINATION BEHAVIOR: When using pagination (max_results >= 0), a page may contain zero results while
15601
+ still providing a next_page_token. Clients must continue reading pages until next_page_token is
15602
+ absent, which is the only indication that the end of results has been reached. This behavior follows
15603
+ Google AIP-158 guidelines.
15604
+
15119
15605
  :param catalog_name: str
15120
15606
  Name of parent catalog for tables of interest.
15121
15607
  :param schema_name: str
@@ -15424,6 +15910,11 @@ class VolumesAPI:
15424
15910
  :param name: str
15425
15911
  The name of the volume
15426
15912
  :param volume_type: :class:`VolumeType`
15913
+ The type of the volume. An external volume is located in the specified external location. A managed
15914
+ volume is located in the default location which is specified by the parent schema, or the parent
15915
+ catalog, or the Metastore. [Learn more]
15916
+
15917
+ [Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external
15427
15918
  :param comment: str (optional)
15428
15919
  The comment attached to the volume
15429
15920
  :param storage_location: str (optional)
@@ -15482,7 +15973,7 @@ class VolumesAPI:
15482
15973
 
15483
15974
  The returned volumes are filtered based on the privileges of the calling user. For example, the
15484
15975
  metastore admin is able to list all the volumes. A regular user needs to be the owner or have the
15485
- **READ VOLUME** privilege on the volume to recieve the volumes in the response. For the latter case,
15976
+ **READ VOLUME** privilege on the volume to receive the volumes in the response. For the latter case,
15486
15977
  the caller must also be the owner or have the **USE_CATALOG** privilege on the parent catalog and the
15487
15978
  **USE_SCHEMA** privilege on the parent schema.
15488
15979
 
@@ -15739,9 +16230,11 @@ class WorkspaceBindingsAPI:
15739
16230
  :param securable_name: str
15740
16231
  The name of the securable.
15741
16232
  :param add: List[:class:`WorkspaceBinding`] (optional)
15742
- List of workspace bindings.
16233
+ List of workspace bindings to add. If a binding for the workspace already exists with a different
16234
+ binding_type, adding it again with a new binding_type will update the existing binding (e.g., from
16235
+ READ_WRITE to READ_ONLY).
15743
16236
  :param remove: List[:class:`WorkspaceBinding`] (optional)
15744
- List of workspace bindings.
16237
+ List of workspace bindings to remove.
15745
16238
 
15746
16239
  :returns: :class:`UpdateWorkspaceBindingsResponse`
15747
16240
  """