databricks-sdk 0.67.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 +8 -0
  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 +1026 -540
  17. databricks/sdk/service/cleanrooms.py +3 -3
  18. databricks/sdk/service/compute.py +21 -33
  19. databricks/sdk/service/dashboards.py +7 -3
  20. databricks/sdk/service/database.py +3 -2
  21. databricks/sdk/service/dataquality.py +1145 -0
  22. databricks/sdk/service/files.py +2 -1
  23. databricks/sdk/service/iam.py +2 -1
  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 +3 -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.67.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.67.0.dist-info/RECORD +0 -79
  44. {databricks_sdk-0.67.0.dist-info → databricks_sdk-0.68.0.dist-info}/WHEEL +0 -0
  45. {databricks_sdk-0.67.0.dist-info → databricks_sdk-0.68.0.dist-info}/licenses/LICENSE +0 -0
  46. {databricks_sdk-0.67.0.dist-info → databricks_sdk-0.68.0.dist-info}/licenses/NOTICE +0 -0
  47. {databricks_sdk-0.67.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
 
@@ -8125,11 +8314,21 @@ class RegenerateDashboardResponse:
8125
8314
 
8126
8315
  @dataclass
8127
8316
  class RegisteredModelAlias:
8128
- """Registered model alias."""
8129
-
8130
8317
  alias_name: Optional[str] = None
8131
8318
  """Name of the alias, e.g. 'champion' or 'latest_stable'"""
8132
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
+
8133
8332
  version_num: Optional[int] = None
8134
8333
  """Integer version number of the model version to which this alias points."""
8135
8334
 
@@ -8138,6 +8337,14 @@ class RegisteredModelAlias:
8138
8337
  body = {}
8139
8338
  if self.alias_name is not None:
8140
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
8141
8348
  if self.version_num is not None:
8142
8349
  body["version_num"] = self.version_num
8143
8350
  return body
@@ -8147,6 +8354,14 @@ class RegisteredModelAlias:
8147
8354
  body = {}
8148
8355
  if self.alias_name is not None:
8149
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
8150
8365
  if self.version_num is not None:
8151
8366
  body["version_num"] = self.version_num
8152
8367
  return body
@@ -8154,7 +8369,14 @@ class RegisteredModelAlias:
8154
8369
  @classmethod
8155
8370
  def from_dict(cls, d: Dict[str, Any]) -> RegisteredModelAlias:
8156
8371
  """Deserializes the RegisteredModelAlias from a dictionary."""
8157
- 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
+ )
8158
8380
 
8159
8381
 
8160
8382
  @dataclass
@@ -8540,7 +8762,7 @@ class Securable:
8540
8762
 
8541
8763
 
8542
8764
  class SecurableKind(Enum):
8543
- """Latest kind: CONNECTION_SHAREPOINT_OAUTH_M2M = 264; Next id:265"""
8765
+ """Latest kind: CONNECTION_REDSHIFT_IAM = 265; Next id:266"""
8544
8766
 
8545
8767
  TABLE_DB_STORAGE = "TABLE_DB_STORAGE"
8546
8768
  TABLE_DELTA = "TABLE_DELTA"
@@ -9636,50 +9858,7 @@ class UnassignResponse:
9636
9858
 
9637
9859
 
9638
9860
  @dataclass
9639
- class UpdateAssignmentResponse:
9640
- def as_dict(self) -> dict:
9641
- """Serializes the UpdateAssignmentResponse into a dictionary suitable for use as a JSON request body."""
9642
- body = {}
9643
- return body
9644
-
9645
- def as_shallow_dict(self) -> dict:
9646
- """Serializes the UpdateAssignmentResponse into a shallow dictionary of its immediate attributes."""
9647
- body = {}
9648
- return body
9649
-
9650
- @classmethod
9651
- def from_dict(cls, d: Dict[str, Any]) -> UpdateAssignmentResponse:
9652
- """Deserializes the UpdateAssignmentResponse from a dictionary."""
9653
- return cls()
9654
-
9655
-
9656
- @dataclass
9657
- class UpdateCatalogWorkspaceBindingsResponse:
9658
- workspaces: Optional[List[int]] = None
9659
- """A list of workspace IDs"""
9660
-
9661
- def as_dict(self) -> dict:
9662
- """Serializes the UpdateCatalogWorkspaceBindingsResponse into a dictionary suitable for use as a JSON request body."""
9663
- body = {}
9664
- if self.workspaces:
9665
- body["workspaces"] = [v for v in self.workspaces]
9666
- return body
9667
-
9668
- def as_shallow_dict(self) -> dict:
9669
- """Serializes the UpdateCatalogWorkspaceBindingsResponse into a shallow dictionary of its immediate attributes."""
9670
- body = {}
9671
- if self.workspaces:
9672
- body["workspaces"] = self.workspaces
9673
- return body
9674
-
9675
- @classmethod
9676
- def from_dict(cls, d: Dict[str, Any]) -> UpdateCatalogWorkspaceBindingsResponse:
9677
- """Deserializes the UpdateCatalogWorkspaceBindingsResponse from a dictionary."""
9678
- return cls(workspaces=d.get("workspaces", None))
9679
-
9680
-
9681
- @dataclass
9682
- class UpdateMetastore:
9861
+ class UpdateAccountsMetastore:
9683
9862
  delta_sharing_organization_name: Optional[str] = None
9684
9863
  """The organization name of a Delta Sharing entity, to be used in Databricks-to-Databricks Delta
9685
9864
  Sharing as the official name."""
@@ -9690,12 +9869,6 @@ class UpdateMetastore:
9690
9869
  delta_sharing_scope: Optional[DeltaSharingScopeEnum] = None
9691
9870
  """The scope of Delta Sharing enabled for the metastore."""
9692
9871
 
9693
- id: Optional[str] = None
9694
- """Unique ID of the metastore."""
9695
-
9696
- new_name: Optional[str] = None
9697
- """New name for the metastore."""
9698
-
9699
9872
  owner: Optional[str] = None
9700
9873
  """The owner of the metastore."""
9701
9874
 
@@ -9706,7 +9879,7 @@ class UpdateMetastore:
9706
9879
  """UUID of storage credential to access the metastore storage_root."""
9707
9880
 
9708
9881
  def as_dict(self) -> dict:
9709
- """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."""
9710
9883
  body = {}
9711
9884
  if self.delta_sharing_organization_name is not None:
9712
9885
  body["delta_sharing_organization_name"] = self.delta_sharing_organization_name
@@ -9716,10 +9889,6 @@ class UpdateMetastore:
9716
9889
  )
9717
9890
  if self.delta_sharing_scope is not None:
9718
9891
  body["delta_sharing_scope"] = self.delta_sharing_scope.value
9719
- if self.id is not None:
9720
- body["id"] = self.id
9721
- if self.new_name is not None:
9722
- body["new_name"] = self.new_name
9723
9892
  if self.owner is not None:
9724
9893
  body["owner"] = self.owner
9725
9894
  if self.privilege_model_version is not None:
@@ -9729,7 +9898,7 @@ class UpdateMetastore:
9729
9898
  return body
9730
9899
 
9731
9900
  def as_shallow_dict(self) -> dict:
9732
- """Serializes the UpdateMetastore into a shallow dictionary of its immediate attributes."""
9901
+ """Serializes the UpdateAccountsMetastore into a shallow dictionary of its immediate attributes."""
9733
9902
  body = {}
9734
9903
  if self.delta_sharing_organization_name is not None:
9735
9904
  body["delta_sharing_organization_name"] = self.delta_sharing_organization_name
@@ -9739,10 +9908,6 @@ class UpdateMetastore:
9739
9908
  )
9740
9909
  if self.delta_sharing_scope is not None:
9741
9910
  body["delta_sharing_scope"] = self.delta_sharing_scope
9742
- if self.id is not None:
9743
- body["id"] = self.id
9744
- if self.new_name is not None:
9745
- body["new_name"] = self.new_name
9746
9911
  if self.owner is not None:
9747
9912
  body["owner"] = self.owner
9748
9913
  if self.privilege_model_version is not None:
@@ -9752,22 +9917,157 @@ class UpdateMetastore:
9752
9917
  return body
9753
9918
 
9754
9919
  @classmethod
9755
- def from_dict(cls, d: Dict[str, Any]) -> UpdateMetastore:
9756
- """Deserializes the UpdateMetastore from a dictionary."""
9920
+ def from_dict(cls, d: Dict[str, Any]) -> UpdateAccountsMetastore:
9921
+ """Deserializes the UpdateAccountsMetastore from a dictionary."""
9757
9922
  return cls(
9758
9923
  delta_sharing_organization_name=d.get("delta_sharing_organization_name", None),
9759
9924
  delta_sharing_recipient_token_lifetime_in_seconds=d.get(
9760
9925
  "delta_sharing_recipient_token_lifetime_in_seconds", None
9761
9926
  ),
9762
9927
  delta_sharing_scope=_enum(d, "delta_sharing_scope", DeltaSharingScopeEnum),
9763
- id=d.get("id", None),
9764
- new_name=d.get("new_name", None),
9765
9928
  owner=d.get("owner", None),
9766
9929
  privilege_model_version=d.get("privilege_model_version", None),
9767
9930
  storage_root_credential_id=d.get("storage_root_credential_id", None),
9768
9931
  )
9769
9932
 
9770
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
+
9771
10071
  @dataclass
9772
10072
  class UpdateMetastoreAssignment:
9773
10073
  default_catalog_name: Optional[str] = None
@@ -9860,184 +10160,58 @@ class UpdateRequestExternalLineage:
9860
10160
  if self.columns:
9861
10161
  body["columns"] = [v.as_dict() for v in self.columns]
9862
10162
  if self.id is not None:
9863
- body["id"] = self.id
9864
- if self.properties:
9865
- body["properties"] = self.properties
9866
- if self.source:
9867
- body["source"] = self.source.as_dict()
9868
- if self.target:
9869
- body["target"] = self.target.as_dict()
9870
- return body
9871
-
9872
- def as_shallow_dict(self) -> dict:
9873
- """Serializes the UpdateRequestExternalLineage into a shallow dictionary of its immediate attributes."""
9874
- body = {}
9875
- if self.columns:
9876
- body["columns"] = self.columns
9877
- if self.id is not None:
9878
- body["id"] = self.id
9879
- if self.properties:
9880
- body["properties"] = self.properties
9881
- if self.source:
9882
- body["source"] = self.source
9883
- if self.target:
9884
- body["target"] = self.target
9885
- return body
9886
-
9887
- @classmethod
9888
- def from_dict(cls, d: Dict[str, Any]) -> UpdateRequestExternalLineage:
9889
- """Deserializes the UpdateRequestExternalLineage from a dictionary."""
9890
- return cls(
9891
- columns=_repeated_dict(d, "columns", ColumnRelationship),
9892
- id=d.get("id", None),
9893
- properties=d.get("properties", None),
9894
- source=_from_dict(d, "source", ExternalLineageObject),
9895
- target=_from_dict(d, "target", ExternalLineageObject),
9896
- )
9897
-
9898
-
9899
- @dataclass
9900
- class UpdateResponse:
9901
- def as_dict(self) -> dict:
9902
- """Serializes the UpdateResponse into a dictionary suitable for use as a JSON request body."""
9903
- body = {}
9904
- return body
9905
-
9906
- def as_shallow_dict(self) -> dict:
9907
- """Serializes the UpdateResponse into a shallow dictionary of its immediate attributes."""
9908
- body = {}
9909
- return body
9910
-
9911
- @classmethod
9912
- def from_dict(cls, d: Dict[str, Any]) -> UpdateResponse:
9913
- """Deserializes the UpdateResponse from a dictionary."""
9914
- return cls()
9915
-
9916
-
9917
- @dataclass
9918
- class UpdateStorageCredential:
9919
- aws_iam_role: Optional[AwsIamRoleRequest] = None
9920
- """The AWS IAM role configuration."""
9921
-
9922
- azure_managed_identity: Optional[AzureManagedIdentityResponse] = None
9923
- """The Azure managed identity configuration."""
9924
-
9925
- azure_service_principal: Optional[AzureServicePrincipal] = None
9926
- """The Azure service principal configuration."""
9927
-
9928
- cloudflare_api_token: Optional[CloudflareApiToken] = None
9929
- """The Cloudflare API token configuration."""
9930
-
9931
- comment: Optional[str] = None
9932
- """Comment associated with the credential."""
9933
-
9934
- databricks_gcp_service_account: Optional[DatabricksGcpServiceAccountRequest] = None
9935
- """The Databricks managed GCP service account configuration."""
9936
-
9937
- force: Optional[bool] = None
9938
- """Force update even if there are dependent external locations or external tables."""
9939
-
9940
- isolation_mode: Optional[IsolationMode] = None
9941
- """Whether the current securable is accessible from all workspaces or a specific set of workspaces."""
9942
-
9943
- name: Optional[str] = None
9944
- """Name of the storage credential."""
9945
-
9946
- new_name: Optional[str] = None
9947
- """New name for the storage credential."""
10163
+ body["id"] = self.id
10164
+ if self.properties:
10165
+ body["properties"] = self.properties
10166
+ if self.source:
10167
+ body["source"] = self.source.as_dict()
10168
+ if self.target:
10169
+ body["target"] = self.target.as_dict()
10170
+ return body
9948
10171
 
9949
- owner: Optional[str] = None
9950
- """Username of current owner of credential."""
10172
+ def as_shallow_dict(self) -> dict:
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
9951
10186
 
9952
- read_only: Optional[bool] = None
9953
- """Whether the credential is usable only for read operations. Only applicable when purpose is
9954
- **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
+ )
9955
10197
 
9956
- skip_validation: Optional[bool] = None
9957
- """Supplying true to this argument skips validation of the updated credential."""
9958
10198
 
10199
+ @dataclass
10200
+ class UpdateResponse:
9959
10201
  def as_dict(self) -> dict:
9960
- """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."""
9961
10203
  body = {}
9962
- if self.aws_iam_role:
9963
- body["aws_iam_role"] = self.aws_iam_role.as_dict()
9964
- if self.azure_managed_identity:
9965
- body["azure_managed_identity"] = self.azure_managed_identity.as_dict()
9966
- if self.azure_service_principal:
9967
- body["azure_service_principal"] = self.azure_service_principal.as_dict()
9968
- if self.cloudflare_api_token:
9969
- body["cloudflare_api_token"] = self.cloudflare_api_token.as_dict()
9970
- if self.comment is not None:
9971
- body["comment"] = self.comment
9972
- if self.databricks_gcp_service_account:
9973
- body["databricks_gcp_service_account"] = self.databricks_gcp_service_account.as_dict()
9974
- if self.force is not None:
9975
- body["force"] = self.force
9976
- if self.isolation_mode is not None:
9977
- body["isolation_mode"] = self.isolation_mode.value
9978
- if self.name is not None:
9979
- body["name"] = self.name
9980
- if self.new_name is not None:
9981
- body["new_name"] = self.new_name
9982
- if self.owner is not None:
9983
- body["owner"] = self.owner
9984
- if self.read_only is not None:
9985
- body["read_only"] = self.read_only
9986
- if self.skip_validation is not None:
9987
- body["skip_validation"] = self.skip_validation
9988
10204
  return body
9989
10205
 
9990
10206
  def as_shallow_dict(self) -> dict:
9991
- """Serializes the UpdateStorageCredential into a shallow dictionary of its immediate attributes."""
10207
+ """Serializes the UpdateResponse into a shallow dictionary of its immediate attributes."""
9992
10208
  body = {}
9993
- if self.aws_iam_role:
9994
- body["aws_iam_role"] = self.aws_iam_role
9995
- if self.azure_managed_identity:
9996
- body["azure_managed_identity"] = self.azure_managed_identity
9997
- if self.azure_service_principal:
9998
- body["azure_service_principal"] = self.azure_service_principal
9999
- if self.cloudflare_api_token:
10000
- body["cloudflare_api_token"] = self.cloudflare_api_token
10001
- if self.comment is not None:
10002
- body["comment"] = self.comment
10003
- if self.databricks_gcp_service_account:
10004
- body["databricks_gcp_service_account"] = self.databricks_gcp_service_account
10005
- if self.force is not None:
10006
- body["force"] = self.force
10007
- if self.isolation_mode is not None:
10008
- body["isolation_mode"] = self.isolation_mode
10009
- if self.name is not None:
10010
- body["name"] = self.name
10011
- if self.new_name is not None:
10012
- body["new_name"] = self.new_name
10013
- if self.owner is not None:
10014
- body["owner"] = self.owner
10015
- if self.read_only is not None:
10016
- body["read_only"] = self.read_only
10017
- if self.skip_validation is not None:
10018
- body["skip_validation"] = self.skip_validation
10019
10209
  return body
10020
10210
 
10021
10211
  @classmethod
10022
- def from_dict(cls, d: Dict[str, Any]) -> UpdateStorageCredential:
10023
- """Deserializes the UpdateStorageCredential from a dictionary."""
10024
- return cls(
10025
- aws_iam_role=_from_dict(d, "aws_iam_role", AwsIamRoleRequest),
10026
- azure_managed_identity=_from_dict(d, "azure_managed_identity", AzureManagedIdentityResponse),
10027
- azure_service_principal=_from_dict(d, "azure_service_principal", AzureServicePrincipal),
10028
- cloudflare_api_token=_from_dict(d, "cloudflare_api_token", CloudflareApiToken),
10029
- comment=d.get("comment", None),
10030
- databricks_gcp_service_account=_from_dict(
10031
- d, "databricks_gcp_service_account", DatabricksGcpServiceAccountRequest
10032
- ),
10033
- force=d.get("force", None),
10034
- isolation_mode=_enum(d, "isolation_mode", IsolationMode),
10035
- name=d.get("name", None),
10036
- new_name=d.get("new_name", None),
10037
- owner=d.get("owner", None),
10038
- read_only=d.get("read_only", None),
10039
- skip_validation=d.get("skip_validation", None),
10040
- )
10212
+ def from_dict(cls, d: Dict[str, Any]) -> UpdateResponse:
10213
+ """Deserializes the UpdateResponse from a dictionary."""
10214
+ return cls()
10041
10215
 
10042
10216
 
10043
10217
  @dataclass
@@ -10415,7 +10589,7 @@ class AccountMetastoreAssignmentsAPI:
10415
10589
 
10416
10590
  def create(
10417
10591
  self, workspace_id: int, metastore_id: str, *, metastore_assignment: Optional[CreateMetastoreAssignment] = None
10418
- ):
10592
+ ) -> AccountsCreateMetastoreAssignmentResponse:
10419
10593
  """Creates an assignment to a metastore for a workspace
10420
10594
 
10421
10595
  :param workspace_id: int
@@ -10424,7 +10598,7 @@ class AccountMetastoreAssignmentsAPI:
10424
10598
  Unity Catalog metastore ID
10425
10599
  :param metastore_assignment: :class:`CreateMetastoreAssignment` (optional)
10426
10600
 
10427
-
10601
+ :returns: :class:`AccountsCreateMetastoreAssignmentResponse`
10428
10602
  """
10429
10603
  body = {}
10430
10604
  if metastore_assignment is not None:
@@ -10434,14 +10608,15 @@ class AccountMetastoreAssignmentsAPI:
10434
10608
  "Content-Type": "application/json",
10435
10609
  }
10436
10610
 
10437
- self._api.do(
10611
+ res = self._api.do(
10438
10612
  "POST",
10439
10613
  f"/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}/metastores/{metastore_id}",
10440
10614
  body=body,
10441
10615
  headers=headers,
10442
10616
  )
10617
+ return AccountsCreateMetastoreAssignmentResponse.from_dict(res)
10443
10618
 
10444
- def delete(self, workspace_id: int, metastore_id: str):
10619
+ def delete(self, workspace_id: int, metastore_id: str) -> AccountsDeleteMetastoreAssignmentResponse:
10445
10620
  """Deletes a metastore assignment to a workspace, leaving the workspace with no metastore.
10446
10621
 
10447
10622
  :param workspace_id: int
@@ -10449,23 +10624,24 @@ class AccountMetastoreAssignmentsAPI:
10449
10624
  :param metastore_id: str
10450
10625
  Unity Catalog metastore ID
10451
10626
 
10452
-
10627
+ :returns: :class:`AccountsDeleteMetastoreAssignmentResponse`
10453
10628
  """
10454
10629
 
10455
10630
  headers = {
10456
10631
  "Accept": "application/json",
10457
10632
  }
10458
10633
 
10459
- self._api.do(
10634
+ res = self._api.do(
10460
10635
  "DELETE",
10461
10636
  f"/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}/metastores/{metastore_id}",
10462
10637
  headers=headers,
10463
10638
  )
10639
+ return AccountsDeleteMetastoreAssignmentResponse.from_dict(res)
10464
10640
 
10465
10641
  def get(self, workspace_id: int) -> AccountsMetastoreAssignment:
10466
10642
  """Gets the metastore assignment, if any, for the workspace specified by ID. If the workspace is assigned
10467
- a metastore, the mappig will be returned. If no metastore is assigned to the workspace, the assignment
10468
- 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.
10469
10645
 
10470
10646
  :param workspace_id: int
10471
10647
  Workspace ID.
@@ -10503,7 +10679,7 @@ class AccountMetastoreAssignmentsAPI:
10503
10679
 
10504
10680
  def update(
10505
10681
  self, workspace_id: int, metastore_id: str, *, metastore_assignment: Optional[UpdateMetastoreAssignment] = None
10506
- ):
10682
+ ) -> AccountsUpdateMetastoreAssignmentResponse:
10507
10683
  """Updates an assignment to a metastore for a workspace. Currently, only the default catalog may be
10508
10684
  updated.
10509
10685
 
@@ -10513,7 +10689,7 @@ class AccountMetastoreAssignmentsAPI:
10513
10689
  Unity Catalog metastore ID
10514
10690
  :param metastore_assignment: :class:`UpdateMetastoreAssignment` (optional)
10515
10691
 
10516
-
10692
+ :returns: :class:`AccountsUpdateMetastoreAssignmentResponse`
10517
10693
  """
10518
10694
  body = {}
10519
10695
  if metastore_assignment is not None:
@@ -10523,12 +10699,13 @@ class AccountMetastoreAssignmentsAPI:
10523
10699
  "Content-Type": "application/json",
10524
10700
  }
10525
10701
 
10526
- self._api.do(
10702
+ res = self._api.do(
10527
10703
  "PUT",
10528
10704
  f"/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}/metastores/{metastore_id}",
10529
10705
  body=body,
10530
10706
  headers=headers,
10531
10707
  )
10708
+ return AccountsUpdateMetastoreAssignmentResponse.from_dict(res)
10532
10709
 
10533
10710
 
10534
10711
  class AccountMetastoresAPI:
@@ -10538,12 +10715,12 @@ class AccountMetastoresAPI:
10538
10715
  def __init__(self, api_client):
10539
10716
  self._api = api_client
10540
10717
 
10541
- def create(self, *, metastore_info: Optional[CreateMetastore] = None) -> AccountsMetastoreInfo:
10718
+ def create(self, *, metastore_info: Optional[CreateAccountsMetastore] = None) -> AccountsCreateMetastoreResponse:
10542
10719
  """Creates a Unity Catalog metastore.
10543
10720
 
10544
- :param metastore_info: :class:`CreateMetastore` (optional)
10721
+ :param metastore_info: :class:`CreateAccountsMetastore` (optional)
10545
10722
 
10546
- :returns: :class:`AccountsMetastoreInfo`
10723
+ :returns: :class:`AccountsCreateMetastoreResponse`
10547
10724
  """
10548
10725
  body = {}
10549
10726
  if metastore_info is not None:
@@ -10554,9 +10731,9 @@ class AccountMetastoresAPI:
10554
10731
  }
10555
10732
 
10556
10733
  res = self._api.do("POST", f"/api/2.0/accounts/{self._api.account_id}/metastores", body=body, headers=headers)
10557
- return AccountsMetastoreInfo.from_dict(res)
10734
+ return AccountsCreateMetastoreResponse.from_dict(res)
10558
10735
 
10559
- def delete(self, metastore_id: str, *, force: Optional[bool] = None):
10736
+ def delete(self, metastore_id: str, *, force: Optional[bool] = None) -> AccountsDeleteMetastoreResponse:
10560
10737
  """Deletes a Unity Catalog metastore for an account, both specified by ID.
10561
10738
 
10562
10739
  :param metastore_id: str
@@ -10564,7 +10741,7 @@ class AccountMetastoresAPI:
10564
10741
  :param force: bool (optional)
10565
10742
  Force deletion even if the metastore is not empty. Default is false.
10566
10743
 
10567
-
10744
+ :returns: :class:`AccountsDeleteMetastoreResponse`
10568
10745
  """
10569
10746
 
10570
10747
  query = {}
@@ -10574,20 +10751,21 @@ class AccountMetastoresAPI:
10574
10751
  "Accept": "application/json",
10575
10752
  }
10576
10753
 
10577
- self._api.do(
10754
+ res = self._api.do(
10578
10755
  "DELETE",
10579
10756
  f"/api/2.0/accounts/{self._api.account_id}/metastores/{metastore_id}",
10580
10757
  query=query,
10581
10758
  headers=headers,
10582
10759
  )
10760
+ return AccountsDeleteMetastoreResponse.from_dict(res)
10583
10761
 
10584
- def get(self, metastore_id: str) -> AccountsMetastoreInfo:
10762
+ def get(self, metastore_id: str) -> AccountsGetMetastoreResponse:
10585
10763
  """Gets a Unity Catalog metastore from an account, both specified by ID.
10586
10764
 
10587
10765
  :param metastore_id: str
10588
10766
  Unity Catalog metastore ID
10589
10767
 
10590
- :returns: :class:`AccountsMetastoreInfo`
10768
+ :returns: :class:`AccountsGetMetastoreResponse`
10591
10769
  """
10592
10770
 
10593
10771
  headers = {
@@ -10597,7 +10775,7 @@ class AccountMetastoresAPI:
10597
10775
  res = self._api.do(
10598
10776
  "GET", f"/api/2.0/accounts/{self._api.account_id}/metastores/{metastore_id}", headers=headers
10599
10777
  )
10600
- return AccountsMetastoreInfo.from_dict(res)
10778
+ return AccountsGetMetastoreResponse.from_dict(res)
10601
10779
 
10602
10780
  def list(self) -> Iterator[MetastoreInfo]:
10603
10781
  """Gets all Unity Catalog metastores associated with an account specified by ID.
@@ -10611,17 +10789,20 @@ class AccountMetastoresAPI:
10611
10789
  }
10612
10790
 
10613
10791
  json = self._api.do("GET", f"/api/2.0/accounts/{self._api.account_id}/metastores", headers=headers)
10614
- parsed = ListMetastoresResponse.from_dict(json).metastores
10792
+ parsed = AccountsListMetastoresResponse.from_dict(json).metastores
10615
10793
  return parsed if parsed is not None else []
10616
10794
 
10617
- 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:
10618
10798
  """Updates an existing Unity Catalog metastore.
10619
10799
 
10620
10800
  :param metastore_id: str
10621
10801
  Unity Catalog metastore ID
10622
- :param metastore_info: :class:`UpdateMetastore` (optional)
10802
+ :param metastore_info: :class:`UpdateAccountsMetastore` (optional)
10803
+ Properties of the metastore to change.
10623
10804
 
10624
- :returns: :class:`AccountsMetastoreInfo`
10805
+ :returns: :class:`AccountsUpdateMetastoreResponse`
10625
10806
  """
10626
10807
  body = {}
10627
10808
  if metastore_info is not None:
@@ -10634,7 +10815,7 @@ class AccountMetastoresAPI:
10634
10815
  res = self._api.do(
10635
10816
  "PUT", f"/api/2.0/accounts/{self._api.account_id}/metastores/{metastore_id}", body=body, headers=headers
10636
10817
  )
10637
- return AccountsMetastoreInfo.from_dict(res)
10818
+ return AccountsUpdateMetastoreResponse.from_dict(res)
10638
10819
 
10639
10820
 
10640
10821
  class AccountStorageCredentialsAPI:
@@ -10644,25 +10825,33 @@ class AccountStorageCredentialsAPI:
10644
10825
  self._api = api_client
10645
10826
 
10646
10827
  def create(
10647
- self, metastore_id: str, *, credential_info: Optional[CreateStorageCredential] = None
10648
- ) -> AccountsStorageCredentialInfo:
10649
- """Creates a new storage credential. The request object is specific to the cloud:
10650
-
10651
- * **AwsIamRole** for AWS credentials * **AzureServicePrincipal** for Azure credentials *
10652
- **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
10653
10837
 
10654
- 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
10655
10839
  metastore.
10656
10840
 
10657
10841
  :param metastore_id: str
10658
10842
  Unity Catalog metastore ID
10659
- :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.
10660
10847
 
10661
- :returns: :class:`AccountsStorageCredentialInfo`
10848
+ :returns: :class:`AccountsCreateStorageCredentialInfo`
10662
10849
  """
10663
10850
  body = {}
10664
10851
  if credential_info is not None:
10665
10852
  body["credential_info"] = credential_info.as_dict()
10853
+ if skip_validation is not None:
10854
+ body["skip_validation"] = skip_validation
10666
10855
  headers = {
10667
10856
  "Accept": "application/json",
10668
10857
  "Content-Type": "application/json",
@@ -10674,9 +10863,11 @@ class AccountStorageCredentialsAPI:
10674
10863
  body=body,
10675
10864
  headers=headers,
10676
10865
  )
10677
- return AccountsStorageCredentialInfo.from_dict(res)
10866
+ return AccountsCreateStorageCredentialInfo.from_dict(res)
10678
10867
 
10679
- 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:
10680
10871
  """Deletes a storage credential from the metastore. The caller must be an owner of the storage
10681
10872
  credential.
10682
10873
 
@@ -10687,7 +10878,7 @@ class AccountStorageCredentialsAPI:
10687
10878
  :param force: bool (optional)
10688
10879
  Force deletion even if the Storage Credential is not empty. Default is false.
10689
10880
 
10690
-
10881
+ :returns: :class:`AccountsDeleteStorageCredentialResponse`
10691
10882
  """
10692
10883
 
10693
10884
  query = {}
@@ -10697,12 +10888,13 @@ class AccountStorageCredentialsAPI:
10697
10888
  "Accept": "application/json",
10698
10889
  }
10699
10890
 
10700
- self._api.do(
10891
+ res = self._api.do(
10701
10892
  "DELETE",
10702
10893
  f"/api/2.0/accounts/{self._api.account_id}/metastores/{metastore_id}/storage-credentials/{storage_credential_name}",
10703
10894
  query=query,
10704
10895
  headers=headers,
10705
10896
  )
10897
+ return AccountsDeleteStorageCredentialResponse.from_dict(res)
10706
10898
 
10707
10899
  def get(self, metastore_id: str, storage_credential_name: str) -> AccountsStorageCredentialInfo:
10708
10900
  """Gets a storage credential from the metastore. The caller must be a metastore admin, the owner of the
@@ -10711,7 +10903,7 @@ class AccountStorageCredentialsAPI:
10711
10903
  :param metastore_id: str
10712
10904
  Unity Catalog metastore ID
10713
10905
  :param storage_credential_name: str
10714
- Name of the storage credential.
10906
+ Required. Name of the storage credential.
10715
10907
 
10716
10908
  :returns: :class:`AccountsStorageCredentialInfo`
10717
10909
  """
@@ -10753,22 +10945,27 @@ class AccountStorageCredentialsAPI:
10753
10945
  metastore_id: str,
10754
10946
  storage_credential_name: str,
10755
10947
  *,
10756
- credential_info: Optional[UpdateStorageCredential] = None,
10757
- ) -> AccountsStorageCredentialInfo:
10948
+ credential_info: Optional[UpdateAccountsStorageCredential] = None,
10949
+ skip_validation: Optional[bool] = None,
10950
+ ) -> AccountsUpdateStorageCredentialResponse:
10758
10951
  """Updates a storage credential on the metastore. The caller must be the owner of the storage credential.
10759
- 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.
10760
10953
 
10761
10954
  :param metastore_id: str
10762
10955
  Unity Catalog metastore ID
10763
10956
  :param storage_credential_name: str
10764
10957
  Name of the storage credential.
10765
- :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.
10766
10961
 
10767
- :returns: :class:`AccountsStorageCredentialInfo`
10962
+ :returns: :class:`AccountsUpdateStorageCredentialResponse`
10768
10963
  """
10769
10964
  body = {}
10770
10965
  if credential_info is not None:
10771
10966
  body["credential_info"] = credential_info.as_dict()
10967
+ if skip_validation is not None:
10968
+ body["skip_validation"] = skip_validation
10772
10969
  headers = {
10773
10970
  "Accept": "application/json",
10774
10971
  "Content-Type": "application/json",
@@ -10780,7 +10977,7 @@ class AccountStorageCredentialsAPI:
10780
10977
  body=body,
10781
10978
  headers=headers,
10782
10979
  )
10783
- return AccountsStorageCredentialInfo.from_dict(res)
10980
+ return AccountsUpdateStorageCredentialResponse.from_dict(res)
10784
10981
 
10785
10982
 
10786
10983
  class ArtifactAllowlistsAPI:
@@ -10973,6 +11170,7 @@ class CatalogsAPI:
10973
11170
  self,
10974
11171
  *,
10975
11172
  include_browse: Optional[bool] = None,
11173
+ include_unbound: Optional[bool] = None,
10976
11174
  max_results: Optional[int] = None,
10977
11175
  page_token: Optional[str] = None,
10978
11176
  ) -> Iterator[CatalogInfo]:
@@ -10981,9 +11179,20 @@ class CatalogsAPI:
10981
11179
  **USE_CATALOG** privilege) will be retrieved. There is no guarantee of a specific ordering of the
10982
11180
  elements in the array.
10983
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
+
10984
11190
  :param include_browse: bool (optional)
10985
11191
  Whether to include catalogs in the response for which the principal can only access selective
10986
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.
10987
11196
  :param max_results: int (optional)
10988
11197
  Maximum number of catalogs to return. - when set to 0, the page length is set to a server configured
10989
11198
  value (recommended); - when set to a value greater than 0, the page length is the minimum of this
@@ -11001,6 +11210,8 @@ class CatalogsAPI:
11001
11210
  query = {}
11002
11211
  if include_browse is not None:
11003
11212
  query["include_browse"] = include_browse
11213
+ if include_unbound is not None:
11214
+ query["include_unbound"] = include_unbound
11004
11215
  if max_results is not None:
11005
11216
  query["max_results"] = max_results
11006
11217
  if page_token is not None:
@@ -11174,6 +11385,14 @@ class ConnectionsAPI:
11174
11385
  def list(self, *, max_results: Optional[int] = None, page_token: Optional[str] = None) -> Iterator[ConnectionInfo]:
11175
11386
  """List all connections.
11176
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
+
11177
11396
  :param max_results: int (optional)
11178
11397
  Maximum number of connections to return. - If not set, all connections are returned (not
11179
11398
  recommended). - when set to a value greater than 0, the page length is the minimum of this value and
@@ -11390,6 +11609,7 @@ class CredentialsAPI:
11390
11609
  def list_credentials(
11391
11610
  self,
11392
11611
  *,
11612
+ include_unbound: Optional[bool] = None,
11393
11613
  max_results: Optional[int] = None,
11394
11614
  page_token: Optional[str] = None,
11395
11615
  purpose: Optional[CredentialPurpose] = None,
@@ -11400,6 +11620,9 @@ class CredentialsAPI:
11400
11620
  is a metastore admin, retrieval of credentials is unrestricted. There is no guarantee of a specific
11401
11621
  ordering of the elements in the array.
11402
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.
11403
11626
  :param max_results: int (optional)
11404
11627
  Maximum number of credentials to return. - If not set, the default max page size is used. - When set
11405
11628
  to a value greater than 0, the page length is the minimum of this value and a server-configured
@@ -11414,6 +11637,8 @@ class CredentialsAPI:
11414
11637
  """
11415
11638
 
11416
11639
  query = {}
11640
+ if include_unbound is not None:
11641
+ query["include_unbound"] = include_unbound
11417
11642
  if max_results is not None:
11418
11643
  query["max_results"] = max_results
11419
11644
  if page_token is not None:
@@ -12037,6 +12262,7 @@ class ExternalLocationsAPI:
12037
12262
  self,
12038
12263
  *,
12039
12264
  include_browse: Optional[bool] = None,
12265
+ include_unbound: Optional[bool] = None,
12040
12266
  max_results: Optional[int] = None,
12041
12267
  page_token: Optional[str] = None,
12042
12268
  ) -> Iterator[ExternalLocationInfo]:
@@ -12044,9 +12270,20 @@ class ExternalLocationsAPI:
12044
12270
  must be a metastore admin, the owner of the external location, or a user that has some privilege on
12045
12271
  the external location. There is no guarantee of a specific ordering of the elements in the array.
12046
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
+
12047
12281
  :param include_browse: bool (optional)
12048
12282
  Whether to include external locations in the response for which the principal can only access
12049
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.
12050
12287
  :param max_results: int (optional)
12051
12288
  Maximum number of external locations to return. If not set, all the external locations are returned
12052
12289
  (not recommended). - when set to a value greater than 0, the page length is the minimum of this
@@ -12061,6 +12298,8 @@ class ExternalLocationsAPI:
12061
12298
  query = {}
12062
12299
  if include_browse is not None:
12063
12300
  query["include_browse"] = include_browse
12301
+ if include_unbound is not None:
12302
+ query["include_unbound"] = include_unbound
12064
12303
  if max_results is not None:
12065
12304
  query["max_results"] = max_results
12066
12305
  if page_token is not None:
@@ -12346,7 +12585,7 @@ class FunctionsAPI:
12346
12585
 
12347
12586
  :param name: str
12348
12587
  The fully-qualified name of the function (of the form
12349
- __catalog_name__.__schema_name__.__function__name__).
12588
+ __catalog_name__.__schema_name__.__function__name__) .
12350
12589
  :param force: bool (optional)
12351
12590
  Force deletion even if the function is notempty.
12352
12591
 
@@ -12356,9 +12595,7 @@ class FunctionsAPI:
12356
12595
  query = {}
12357
12596
  if force is not None:
12358
12597
  query["force"] = force
12359
- headers = {
12360
- "Accept": "application/json",
12361
- }
12598
+ headers = {}
12362
12599
 
12363
12600
  self._api.do("DELETE", f"/api/2.1/unity-catalog/functions/{name}", query=query, headers=headers)
12364
12601
 
@@ -12405,6 +12642,14 @@ class FunctionsAPI:
12405
12642
  functions for which either the user has the **EXECUTE** privilege or the user is the owner. There is
12406
12643
  no guarantee of a specific ordering of the elements in the array.
12407
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
+
12408
12653
  :param catalog_name: str
12409
12654
  Name of parent catalog for functions of interest.
12410
12655
  :param schema_name: str
@@ -12459,7 +12704,7 @@ class FunctionsAPI:
12459
12704
  The fully-qualified name of the function (of the form
12460
12705
  __catalog_name__.__schema_name__.__function__name__).
12461
12706
  :param owner: str (optional)
12462
- Username of current owner of function.
12707
+ Username of current owner of the function.
12463
12708
 
12464
12709
  :returns: :class:`FunctionInfo`
12465
12710
  """
@@ -12749,6 +12994,14 @@ class MetastoresAPI:
12749
12994
  """Gets an array of the available metastores (as __MetastoreInfo__ objects). The caller must be an admin
12750
12995
  to retrieve this info. There is no guarantee of a specific ordering of the elements in the array.
12751
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
+
12752
13005
  :param max_results: int (optional)
12753
13006
  Maximum number of metastores to return. - when set to a value greater than 0, the page length is the
12754
13007
  minimum of this value and a server configured value; - when set to 0, the page length is set to a
@@ -13069,7 +13322,29 @@ class ModelVersionsAPI:
13069
13322
  return
13070
13323
  query["page_token"] = json["next_page_token"]
13071
13324
 
13072
- 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:
13073
13348
  """Updates the specified model version.
13074
13349
 
13075
13350
  The caller must be a metastore admin or an owner of the parent registered model. For the latter case,
@@ -13082,14 +13357,80 @@ class ModelVersionsAPI:
13082
13357
  The three-level (fully qualified) name of the model version
13083
13358
  :param version: int
13084
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
13085
13364
  :param comment: str (optional)
13086
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
13087
13396
 
13088
13397
  :returns: :class:`ModelVersionInfo`
13089
13398
  """
13090
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
13091
13404
  if comment is not None:
13092
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
13093
13434
  headers = {
13094
13435
  "Accept": "application/json",
13095
13436
  "Content-Type": "application/json",
@@ -13797,20 +14138,29 @@ class RegisteredModelsAPI:
13797
14138
  new model version, or update permissions on the registered model, users must be owners of the registered
13798
14139
  model.
13799
14140
 
13800
- Note: The securable type for models is "FUNCTION". When using REST APIs (e.g. tagging, grants) that
13801
- 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."""
13802
14143
 
13803
14144
  def __init__(self, api_client):
13804
14145
  self._api = api_client
13805
14146
 
13806
14147
  def create(
13807
14148
  self,
13808
- catalog_name: str,
13809
- schema_name: str,
13810
- name: str,
13811
14149
  *,
14150
+ aliases: Optional[List[RegisteredModelAlias]] = None,
14151
+ browse_only: Optional[bool] = None,
14152
+ catalog_name: Optional[str] = None,
13812
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,
13813
14161
  storage_location: Optional[str] = None,
14162
+ updated_at: Optional[int] = None,
14163
+ updated_by: Optional[str] = None,
13814
14164
  ) -> RegisteredModelInfo:
13815
14165
  """Creates a new registered model in Unity Catalog.
13816
14166
 
@@ -13822,30 +14172,67 @@ class RegisteredModelsAPI:
13822
14172
  **USE_CATALOG** privilege on the parent catalog and the **USE_SCHEMA** privilege on the parent schema.
13823
14173
  - The caller must have the **CREATE MODEL** or **CREATE FUNCTION** privilege on the parent schema.
13824
14174
 
13825
- :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)
13826
14181
  The name of the catalog where the schema and the registered model reside
13827
- :param schema_name: str
13828
- The name of the schema where the registered model resides
13829
- :param name: str
13830
- The name of the registered model
13831
14182
  :param comment: str (optional)
13832
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
13833
14198
  :param storage_location: str (optional)
13834
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
13835
14204
 
13836
14205
  :returns: :class:`RegisteredModelInfo`
13837
14206
  """
13838
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
13839
14212
  if catalog_name is not None:
13840
14213
  body["catalog_name"] = catalog_name
13841
14214
  if comment is not None:
13842
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
13843
14224
  if name is not None:
13844
14225
  body["name"] = name
14226
+ if owner is not None:
14227
+ body["owner"] = owner
13845
14228
  if schema_name is not None:
13846
14229
  body["schema_name"] = schema_name
13847
14230
  if storage_location is not None:
13848
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
13849
14236
  headers = {
13850
14237
  "Accept": "application/json",
13851
14238
  "Content-Type": "application/json",
@@ -14003,7 +14390,7 @@ class RegisteredModelsAPI:
14003
14390
  **USE_SCHEMA** privilege on the parent schema.
14004
14391
 
14005
14392
  :param full_name: str
14006
- Full name of the registered model
14393
+ The three-level (fully qualified) name of the registered model
14007
14394
  :param alias: str
14008
14395
  The name of the alias
14009
14396
  :param version_num: int
@@ -14028,9 +14415,20 @@ class RegisteredModelsAPI:
14028
14415
  self,
14029
14416
  full_name: str,
14030
14417
  *,
14418
+ aliases: Optional[List[RegisteredModelAlias]] = None,
14419
+ browse_only: Optional[bool] = None,
14420
+ catalog_name: Optional[str] = None,
14031
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,
14032
14426
  new_name: Optional[str] = None,
14033
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,
14034
14432
  ) -> RegisteredModelInfo:
14035
14433
  """Updates the specified registered model.
14036
14434
 
@@ -14042,22 +14440,67 @@ class RegisteredModelsAPI:
14042
14440
 
14043
14441
  :param full_name: str
14044
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
14045
14450
  :param comment: str (optional)
14046
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
14047
14460
  :param new_name: str (optional)
14048
14461
  New name for the registered model.
14049
14462
  :param owner: str (optional)
14050
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
14051
14472
 
14052
14473
  :returns: :class:`RegisteredModelInfo`
14053
14474
  """
14054
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
14055
14482
  if comment is not None:
14056
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
14057
14492
  if new_name is not None:
14058
14493
  body["new_name"] = new_name
14059
14494
  if owner is not None:
14060
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
14061
14504
  headers = {
14062
14505
  "Accept": "application/json",
14063
14506
  "Content-Type": "application/json",
@@ -14356,6 +14799,14 @@ class SchemasAPI:
14356
14799
  owned by the caller (or for which the caller has the **USE_SCHEMA** privilege) will be retrieved.
14357
14800
  There is no guarantee of a specific ordering of the elements in the array.
14358
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
+
14359
14810
  :param catalog_name: str
14360
14811
  Parent catalog for schemas of interest.
14361
14812
  :param include_browse: bool (optional)
@@ -14567,13 +15018,28 @@ class StorageCredentialsAPI:
14567
15018
  return StorageCredentialInfo.from_dict(res)
14568
15019
 
14569
15020
  def list(
14570
- 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,
14571
15026
  ) -> Iterator[StorageCredentialInfo]:
14572
15027
  """Gets an array of storage credentials (as __StorageCredentialInfo__ objects). The array is limited to
14573
15028
  only those storage credentials the caller has permission to access. If the caller is a metastore
14574
15029
  admin, retrieval of credentials is unrestricted. There is no guarantee of a specific ordering of the
14575
15030
  elements in the array.
14576
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.
14577
15043
  :param max_results: int (optional)
14578
15044
  Maximum number of storage credentials to return. If not set, all the storage credentials are
14579
15045
  returned (not recommended). - when set to a value greater than 0, the page length is the minimum of
@@ -14587,6 +15053,8 @@ class StorageCredentialsAPI:
14587
15053
  """
14588
15054
 
14589
15055
  query = {}
15056
+ if include_unbound is not None:
15057
+ query["include_unbound"] = include_unbound
14590
15058
  if max_results is not None:
14591
15059
  query["max_results"] = max_results
14592
15060
  if page_token is not None:
@@ -14822,6 +15290,14 @@ class SystemSchemasAPI:
14822
15290
  """Gets an array of system schemas for a metastore. The caller must be an account admin or a metastore
14823
15291
  admin.
14824
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
+
14825
15301
  :param metastore_id: str
14826
15302
  The ID for the metastore in which the system schema resides.
14827
15303
  :param max_results: int (optional)
@@ -15118,6 +15594,14 @@ class TablesAPI:
15118
15594
  catalog and the **USE_SCHEMA** privilege on the parent schema. There is no guarantee of a specific
15119
15595
  ordering of the elements in the array.
15120
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
+
15121
15605
  :param catalog_name: str
15122
15606
  Name of parent catalog for tables of interest.
15123
15607
  :param schema_name: str
@@ -15746,9 +16230,11 @@ class WorkspaceBindingsAPI:
15746
16230
  :param securable_name: str
15747
16231
  The name of the securable.
15748
16232
  :param add: List[:class:`WorkspaceBinding`] (optional)
15749
- 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).
15750
16236
  :param remove: List[:class:`WorkspaceBinding`] (optional)
15751
- List of workspace bindings.
16237
+ List of workspace bindings to remove.
15752
16238
 
15753
16239
  :returns: :class:`UpdateWorkspaceBindingsResponse`
15754
16240
  """