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

@@ -275,7 +275,24 @@ class AssignResponse:
275
275
 
276
276
 
277
277
  @dataclass
278
- class AwsIamRole:
278
+ class AwsIamRoleRequest:
279
+ role_arn: str
280
+ """The Amazon Resource Name (ARN) of the AWS IAM role for S3 data access."""
281
+
282
+ def as_dict(self) -> dict:
283
+ """Serializes the AwsIamRoleRequest into a dictionary suitable for use as a JSON request body."""
284
+ body = {}
285
+ if self.role_arn is not None: body['role_arn'] = self.role_arn
286
+ return body
287
+
288
+ @classmethod
289
+ def from_dict(cls, d: Dict[str, any]) -> AwsIamRoleRequest:
290
+ """Deserializes the AwsIamRoleRequest from a dictionary."""
291
+ return cls(role_arn=d.get('role_arn', None))
292
+
293
+
294
+ @dataclass
295
+ class AwsIamRoleResponse:
279
296
  role_arn: str
280
297
  """The Amazon Resource Name (ARN) of the AWS IAM role for S3 data access."""
281
298
 
@@ -287,7 +304,7 @@ class AwsIamRole:
287
304
  that is going to assume the AWS IAM role."""
288
305
 
289
306
  def as_dict(self) -> dict:
290
- """Serializes the AwsIamRole into a dictionary suitable for use as a JSON request body."""
307
+ """Serializes the AwsIamRoleResponse into a dictionary suitable for use as a JSON request body."""
291
308
  body = {}
292
309
  if self.external_id is not None: body['external_id'] = self.external_id
293
310
  if self.role_arn is not None: body['role_arn'] = self.role_arn
@@ -295,8 +312,8 @@ class AwsIamRole:
295
312
  return body
296
313
 
297
314
  @classmethod
298
- def from_dict(cls, d: Dict[str, any]) -> AwsIamRole:
299
- """Deserializes the AwsIamRole from a dictionary."""
315
+ def from_dict(cls, d: Dict[str, any]) -> AwsIamRoleResponse:
316
+ """Deserializes the AwsIamRoleResponse from a dictionary."""
300
317
  return cls(external_id=d.get('external_id', None),
301
318
  role_arn=d.get('role_arn', None),
302
319
  unity_catalog_iam_arn=d.get('unity_catalog_iam_arn', None))
@@ -378,7 +395,8 @@ class CancelRefreshResponse:
378
395
  @dataclass
379
396
  class CatalogInfo:
380
397
  browse_only: Optional[bool] = None
381
- """Indicate whether or not the catalog info contains only browsable metadata."""
398
+ """Indicates whether the principal is limited to retrieving metadata for the associated object
399
+ through the BROWSE privilege when include_browse is enabled in the request."""
382
400
 
383
401
  catalog_type: Optional[CatalogType] = None
384
402
  """The type of the catalog."""
@@ -1252,7 +1270,7 @@ class CreateMonitor:
1252
1270
  inference_log: Optional[MonitorInferenceLogProfileType] = None
1253
1271
  """Configuration for monitoring inference logs."""
1254
1272
 
1255
- notifications: Optional[List[MonitorNotificationsConfig]] = None
1273
+ notifications: Optional[MonitorNotificationsConfig] = None
1256
1274
  """The notification settings for the monitor."""
1257
1275
 
1258
1276
  schedule: Optional[MonitorCronSchedule] = None
@@ -1286,7 +1304,7 @@ class CreateMonitor:
1286
1304
  body['data_classification_config'] = self.data_classification_config.as_dict()
1287
1305
  if self.full_name is not None: body['full_name'] = self.full_name
1288
1306
  if self.inference_log: body['inference_log'] = self.inference_log.as_dict()
1289
- if self.notifications: body['notifications'] = [v.as_dict() for v in self.notifications]
1307
+ if self.notifications: body['notifications'] = self.notifications.as_dict()
1290
1308
  if self.output_schema_name is not None: body['output_schema_name'] = self.output_schema_name
1291
1309
  if self.schedule: body['schedule'] = self.schedule.as_dict()
1292
1310
  if self.skip_builtin_dashboard is not None:
@@ -1307,7 +1325,7 @@ class CreateMonitor:
1307
1325
  MonitorDataClassificationConfig),
1308
1326
  full_name=d.get('full_name', None),
1309
1327
  inference_log=_from_dict(d, 'inference_log', MonitorInferenceLogProfileType),
1310
- notifications=_repeated_dict(d, 'notifications', MonitorNotificationsConfig),
1328
+ notifications=_from_dict(d, 'notifications', MonitorNotificationsConfig),
1311
1329
  output_schema_name=d.get('output_schema_name', None),
1312
1330
  schedule=_from_dict(d, 'schedule', MonitorCronSchedule),
1313
1331
  skip_builtin_dashboard=d.get('skip_builtin_dashboard', None),
@@ -1317,6 +1335,29 @@ class CreateMonitor:
1317
1335
  warehouse_id=d.get('warehouse_id', None))
1318
1336
 
1319
1337
 
1338
+ @dataclass
1339
+ class CreateOnlineTableRequest:
1340
+ """Online Table information."""
1341
+
1342
+ name: Optional[str] = None
1343
+ """Full three-part (catalog, schema, table) name of the table."""
1344
+
1345
+ spec: Optional[OnlineTableSpec] = None
1346
+ """Specification of the online table."""
1347
+
1348
+ def as_dict(self) -> dict:
1349
+ """Serializes the CreateOnlineTableRequest into a dictionary suitable for use as a JSON request body."""
1350
+ body = {}
1351
+ if self.name is not None: body['name'] = self.name
1352
+ if self.spec: body['spec'] = self.spec.as_dict()
1353
+ return body
1354
+
1355
+ @classmethod
1356
+ def from_dict(cls, d: Dict[str, any]) -> CreateOnlineTableRequest:
1357
+ """Deserializes the CreateOnlineTableRequest from a dictionary."""
1358
+ return cls(name=d.get('name', None), spec=_from_dict(d, 'spec', OnlineTableSpec))
1359
+
1360
+
1320
1361
  @dataclass
1321
1362
  class CreateRegisteredModelRequest:
1322
1363
  catalog_name: str
@@ -1410,7 +1451,7 @@ class CreateStorageCredential:
1410
1451
  name: str
1411
1452
  """The credential name. The name must be unique within the metastore."""
1412
1453
 
1413
- aws_iam_role: Optional[AwsIamRole] = None
1454
+ aws_iam_role: Optional[AwsIamRoleRequest] = None
1414
1455
  """The AWS IAM role configuration."""
1415
1456
 
1416
1457
  azure_managed_identity: Optional[AzureManagedIdentity] = None
@@ -1453,7 +1494,7 @@ class CreateStorageCredential:
1453
1494
  @classmethod
1454
1495
  def from_dict(cls, d: Dict[str, any]) -> CreateStorageCredential:
1455
1496
  """Deserializes the CreateStorageCredential from a dictionary."""
1456
- return cls(aws_iam_role=_from_dict(d, 'aws_iam_role', AwsIamRole),
1497
+ return cls(aws_iam_role=_from_dict(d, 'aws_iam_role', AwsIamRoleRequest),
1457
1498
  azure_managed_identity=_from_dict(d, 'azure_managed_identity', AzureManagedIdentity),
1458
1499
  azure_service_principal=_from_dict(d, 'azure_service_principal', AzureServicePrincipal),
1459
1500
  cloudflare_api_token=_from_dict(d, 'cloudflare_api_token', CloudflareApiToken),
@@ -1879,6 +1920,10 @@ class ExternalLocationInfo:
1879
1920
  access_point: Optional[str] = None
1880
1921
  """The AWS access point to use when accesing s3 for this external location."""
1881
1922
 
1923
+ browse_only: Optional[bool] = None
1924
+ """Indicates whether the principal is limited to retrieving metadata for the associated object
1925
+ through the BROWSE privilege when include_browse is enabled in the request."""
1926
+
1882
1927
  comment: Optional[str] = None
1883
1928
  """User-provided free-form text description."""
1884
1929
 
@@ -1922,6 +1967,7 @@ class ExternalLocationInfo:
1922
1967
  """Serializes the ExternalLocationInfo into a dictionary suitable for use as a JSON request body."""
1923
1968
  body = {}
1924
1969
  if self.access_point is not None: body['access_point'] = self.access_point
1970
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
1925
1971
  if self.comment is not None: body['comment'] = self.comment
1926
1972
  if self.created_at is not None: body['created_at'] = self.created_at
1927
1973
  if self.created_by is not None: body['created_by'] = self.created_by
@@ -1941,6 +1987,7 @@ class ExternalLocationInfo:
1941
1987
  def from_dict(cls, d: Dict[str, any]) -> ExternalLocationInfo:
1942
1988
  """Deserializes the ExternalLocationInfo from a dictionary."""
1943
1989
  return cls(access_point=d.get('access_point', None),
1990
+ browse_only=d.get('browse_only', None),
1944
1991
  comment=d.get('comment', None),
1945
1992
  created_at=d.get('created_at', None),
1946
1993
  created_by=d.get('created_by', None),
@@ -2039,6 +2086,10 @@ class FunctionDependency:
2039
2086
 
2040
2087
  @dataclass
2041
2088
  class FunctionInfo:
2089
+ browse_only: Optional[bool] = None
2090
+ """Indicates whether the principal is limited to retrieving metadata for the associated object
2091
+ through the BROWSE privilege when include_browse is enabled in the request."""
2092
+
2042
2093
  catalog_name: Optional[str] = None
2043
2094
  """Name of parent catalog."""
2044
2095
 
@@ -2131,6 +2182,7 @@ class FunctionInfo:
2131
2182
  def as_dict(self) -> dict:
2132
2183
  """Serializes the FunctionInfo into a dictionary suitable for use as a JSON request body."""
2133
2184
  body = {}
2185
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
2134
2186
  if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
2135
2187
  if self.comment is not None: body['comment'] = self.comment
2136
2188
  if self.created_at is not None: body['created_at'] = self.created_at
@@ -2165,7 +2217,8 @@ class FunctionInfo:
2165
2217
  @classmethod
2166
2218
  def from_dict(cls, d: Dict[str, any]) -> FunctionInfo:
2167
2219
  """Deserializes the FunctionInfo from a dictionary."""
2168
- return cls(catalog_name=d.get('catalog_name', None),
2220
+ return cls(browse_only=d.get('browse_only', None),
2221
+ catalog_name=d.get('catalog_name', None),
2169
2222
  comment=d.get('comment', None),
2170
2223
  created_at=d.get('created_at', None),
2171
2224
  created_by=d.get('created_by', None),
@@ -2899,6 +2952,10 @@ class MetastoreInfoDeltaSharingScope(Enum):
2899
2952
 
2900
2953
  @dataclass
2901
2954
  class ModelVersionInfo:
2955
+ browse_only: Optional[bool] = None
2956
+ """Indicates whether the principal is limited to retrieving metadata for the associated object
2957
+ through the BROWSE privilege when include_browse is enabled in the request."""
2958
+
2902
2959
  catalog_name: Optional[str] = None
2903
2960
  """The name of the catalog containing the model version"""
2904
2961
 
@@ -2955,6 +3012,7 @@ class ModelVersionInfo:
2955
3012
  def as_dict(self) -> dict:
2956
3013
  """Serializes the ModelVersionInfo into a dictionary suitable for use as a JSON request body."""
2957
3014
  body = {}
3015
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
2958
3016
  if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
2959
3017
  if self.comment is not None: body['comment'] = self.comment
2960
3018
  if self.created_at is not None: body['created_at'] = self.created_at
@@ -2978,7 +3036,8 @@ class ModelVersionInfo:
2978
3036
  @classmethod
2979
3037
  def from_dict(cls, d: Dict[str, any]) -> ModelVersionInfo:
2980
3038
  """Deserializes the ModelVersionInfo from a dictionary."""
2981
- return cls(catalog_name=d.get('catalog_name', None),
3039
+ return cls(browse_only=d.get('browse_only', None),
3040
+ catalog_name=d.get('catalog_name', None),
2982
3041
  comment=d.get('comment', None),
2983
3042
  created_at=d.get('created_at', None),
2984
3043
  created_by=d.get('created_by', None),
@@ -3112,7 +3171,8 @@ class MonitorDataClassificationConfig:
3112
3171
  @dataclass
3113
3172
  class MonitorDestinations:
3114
3173
  email_addresses: Optional[List[str]] = None
3115
- """The list of email addresses to send the notification to."""
3174
+ """The list of email addresses to send the notification to. A maximum of 5 email addresses is
3175
+ supported."""
3116
3176
 
3117
3177
  def as_dict(self) -> dict:
3118
3178
  """Serializes the MonitorDestinations into a dictionary suitable for use as a JSON request body."""
@@ -3213,7 +3273,7 @@ class MonitorInfo:
3213
3273
  monitor_version: Optional[str] = None
3214
3274
  """The version of the monitor config (e.g. 1,2,3). If negative, the monitor may be corrupted."""
3215
3275
 
3216
- notifications: Optional[List[MonitorNotificationsConfig]] = None
3276
+ notifications: Optional[MonitorNotificationsConfig] = None
3217
3277
  """The notification settings for the monitor."""
3218
3278
 
3219
3279
  output_schema_name: Optional[str] = None
@@ -3258,7 +3318,7 @@ class MonitorInfo:
3258
3318
  if self.latest_monitor_failure_msg is not None:
3259
3319
  body['latest_monitor_failure_msg'] = self.latest_monitor_failure_msg
3260
3320
  if self.monitor_version is not None: body['monitor_version'] = self.monitor_version
3261
- if self.notifications: body['notifications'] = [v.as_dict() for v in self.notifications]
3321
+ if self.notifications: body['notifications'] = self.notifications.as_dict()
3262
3322
  if self.output_schema_name is not None: body['output_schema_name'] = self.output_schema_name
3263
3323
  if self.profile_metrics_table_name is not None:
3264
3324
  body['profile_metrics_table_name'] = self.profile_metrics_table_name
@@ -3283,7 +3343,7 @@ class MonitorInfo:
3283
3343
  inference_log=_from_dict(d, 'inference_log', MonitorInferenceLogProfileType),
3284
3344
  latest_monitor_failure_msg=d.get('latest_monitor_failure_msg', None),
3285
3345
  monitor_version=d.get('monitor_version', None),
3286
- notifications=_repeated_dict(d, 'notifications', MonitorNotificationsConfig),
3346
+ notifications=_from_dict(d, 'notifications', MonitorNotificationsConfig),
3287
3347
  output_schema_name=d.get('output_schema_name', None),
3288
3348
  profile_metrics_table_name=d.get('profile_metrics_table_name', None),
3289
3349
  schedule=_from_dict(d, 'schedule', MonitorCronSchedule),
@@ -3858,6 +3918,10 @@ class RegisteredModelInfo:
3858
3918
  aliases: Optional[List[RegisteredModelAlias]] = None
3859
3919
  """List of aliases associated with the registered model"""
3860
3920
 
3921
+ browse_only: Optional[bool] = None
3922
+ """Indicates whether the principal is limited to retrieving metadata for the associated object
3923
+ through the BROWSE privilege when include_browse is enabled in the request."""
3924
+
3861
3925
  catalog_name: Optional[str] = None
3862
3926
  """The name of the catalog where the schema and the registered model reside"""
3863
3927
 
@@ -3898,6 +3962,7 @@ class RegisteredModelInfo:
3898
3962
  """Serializes the RegisteredModelInfo into a dictionary suitable for use as a JSON request body."""
3899
3963
  body = {}
3900
3964
  if self.aliases: body['aliases'] = [v.as_dict() for v in self.aliases]
3965
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
3901
3966
  if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
3902
3967
  if self.comment is not None: body['comment'] = self.comment
3903
3968
  if self.created_at is not None: body['created_at'] = self.created_at
@@ -3916,6 +3981,7 @@ class RegisteredModelInfo:
3916
3981
  def from_dict(cls, d: Dict[str, any]) -> RegisteredModelInfo:
3917
3982
  """Deserializes the RegisteredModelInfo from a dictionary."""
3918
3983
  return cls(aliases=_repeated_dict(d, 'aliases', RegisteredModelAlias),
3984
+ browse_only=d.get('browse_only', None),
3919
3985
  catalog_name=d.get('catalog_name', None),
3920
3986
  comment=d.get('comment', None),
3921
3987
  created_at=d.get('created_at', None),
@@ -3932,6 +3998,10 @@ class RegisteredModelInfo:
3932
3998
 
3933
3999
  @dataclass
3934
4000
  class SchemaInfo:
4001
+ browse_only: Optional[bool] = None
4002
+ """Indicates whether the principal is limited to retrieving metadata for the associated object
4003
+ through the BROWSE privilege when include_browse is enabled in the request."""
4004
+
3935
4005
  catalog_name: Optional[str] = None
3936
4006
  """Name of parent catalog."""
3937
4007
 
@@ -3982,6 +4052,7 @@ class SchemaInfo:
3982
4052
  def as_dict(self) -> dict:
3983
4053
  """Serializes the SchemaInfo into a dictionary suitable for use as a JSON request body."""
3984
4054
  body = {}
4055
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
3985
4056
  if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
3986
4057
  if self.catalog_type is not None: body['catalog_type'] = self.catalog_type
3987
4058
  if self.comment is not None: body['comment'] = self.comment
@@ -4007,7 +4078,8 @@ class SchemaInfo:
4007
4078
  @classmethod
4008
4079
  def from_dict(cls, d: Dict[str, any]) -> SchemaInfo:
4009
4080
  """Deserializes the SchemaInfo from a dictionary."""
4010
- return cls(catalog_name=d.get('catalog_name', None),
4081
+ return cls(browse_only=d.get('browse_only', None),
4082
+ catalog_name=d.get('catalog_name', None),
4011
4083
  catalog_type=d.get('catalog_type', None),
4012
4084
  comment=d.get('comment', None),
4013
4085
  created_at=d.get('created_at', None),
@@ -4132,7 +4204,7 @@ class SseEncryptionDetailsAlgorithm(Enum):
4132
4204
 
4133
4205
  @dataclass
4134
4206
  class StorageCredentialInfo:
4135
- aws_iam_role: Optional[AwsIamRole] = None
4207
+ aws_iam_role: Optional[AwsIamRoleResponse] = None
4136
4208
  """The AWS IAM role configuration."""
4137
4209
 
4138
4210
  azure_managed_identity: Optional[AzureManagedIdentity] = None
@@ -4207,7 +4279,7 @@ class StorageCredentialInfo:
4207
4279
  @classmethod
4208
4280
  def from_dict(cls, d: Dict[str, any]) -> StorageCredentialInfo:
4209
4281
  """Deserializes the StorageCredentialInfo from a dictionary."""
4210
- return cls(aws_iam_role=_from_dict(d, 'aws_iam_role', AwsIamRole),
4282
+ return cls(aws_iam_role=_from_dict(d, 'aws_iam_role', AwsIamRoleResponse),
4211
4283
  azure_managed_identity=_from_dict(d, 'azure_managed_identity', AzureManagedIdentity),
4212
4284
  azure_service_principal=_from_dict(d, 'azure_service_principal', AzureServicePrincipal),
4213
4285
  cloudflare_api_token=_from_dict(d, 'cloudflare_api_token', CloudflareApiToken),
@@ -4328,6 +4400,10 @@ class TableInfo:
4328
4400
  access_point: Optional[str] = None
4329
4401
  """The AWS access point to use when accesing s3 for this external location."""
4330
4402
 
4403
+ browse_only: Optional[bool] = None
4404
+ """Indicates whether the principal is limited to retrieving metadata for the associated object
4405
+ through the BROWSE privilege when include_browse is enabled in the request."""
4406
+
4331
4407
  catalog_name: Optional[str] = None
4332
4408
  """Name of parent catalog."""
4333
4409
 
@@ -4425,6 +4501,7 @@ class TableInfo:
4425
4501
  """Serializes the TableInfo into a dictionary suitable for use as a JSON request body."""
4426
4502
  body = {}
4427
4503
  if self.access_point is not None: body['access_point'] = self.access_point
4504
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
4428
4505
  if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
4429
4506
  if self.columns: body['columns'] = [v.as_dict() for v in self.columns]
4430
4507
  if self.comment is not None: body['comment'] = self.comment
@@ -4468,6 +4545,7 @@ class TableInfo:
4468
4545
  def from_dict(cls, d: Dict[str, any]) -> TableInfo:
4469
4546
  """Deserializes the TableInfo from a dictionary."""
4470
4547
  return cls(access_point=d.get('access_point', None),
4548
+ browse_only=d.get('browse_only', None),
4471
4549
  catalog_name=d.get('catalog_name', None),
4472
4550
  columns=_repeated_dict(d, 'columns', ColumnInfo),
4473
4551
  comment=d.get('comment', None),
@@ -4929,7 +5007,7 @@ class UpdateMonitor:
4929
5007
  inference_log: Optional[MonitorInferenceLogProfileType] = None
4930
5008
  """Configuration for monitoring inference logs."""
4931
5009
 
4932
- notifications: Optional[List[MonitorNotificationsConfig]] = None
5010
+ notifications: Optional[MonitorNotificationsConfig] = None
4933
5011
  """The notification settings for the monitor."""
4934
5012
 
4935
5013
  schedule: Optional[MonitorCronSchedule] = None
@@ -4955,7 +5033,7 @@ class UpdateMonitor:
4955
5033
  body['data_classification_config'] = self.data_classification_config.as_dict()
4956
5034
  if self.full_name is not None: body['full_name'] = self.full_name
4957
5035
  if self.inference_log: body['inference_log'] = self.inference_log.as_dict()
4958
- if self.notifications: body['notifications'] = [v.as_dict() for v in self.notifications]
5036
+ if self.notifications: body['notifications'] = self.notifications.as_dict()
4959
5037
  if self.output_schema_name is not None: body['output_schema_name'] = self.output_schema_name
4960
5038
  if self.schedule: body['schedule'] = self.schedule.as_dict()
4961
5039
  if self.slicing_exprs: body['slicing_exprs'] = [v for v in self.slicing_exprs]
@@ -4972,7 +5050,7 @@ class UpdateMonitor:
4972
5050
  MonitorDataClassificationConfig),
4973
5051
  full_name=d.get('full_name', None),
4974
5052
  inference_log=_from_dict(d, 'inference_log', MonitorInferenceLogProfileType),
4975
- notifications=_repeated_dict(d, 'notifications', MonitorNotificationsConfig),
5053
+ notifications=_from_dict(d, 'notifications', MonitorNotificationsConfig),
4976
5054
  output_schema_name=d.get('output_schema_name', None),
4977
5055
  schedule=_from_dict(d, 'schedule', MonitorCronSchedule),
4978
5056
  slicing_exprs=d.get('slicing_exprs', None),
@@ -5099,7 +5177,7 @@ class UpdateSchema:
5099
5177
 
5100
5178
  @dataclass
5101
5179
  class UpdateStorageCredential:
5102
- aws_iam_role: Optional[AwsIamRole] = None
5180
+ aws_iam_role: Optional[AwsIamRoleRequest] = None
5103
5181
  """The AWS IAM role configuration."""
5104
5182
 
5105
5183
  azure_managed_identity: Optional[AzureManagedIdentity] = None
@@ -5157,7 +5235,7 @@ class UpdateStorageCredential:
5157
5235
  @classmethod
5158
5236
  def from_dict(cls, d: Dict[str, any]) -> UpdateStorageCredential:
5159
5237
  """Deserializes the UpdateStorageCredential from a dictionary."""
5160
- return cls(aws_iam_role=_from_dict(d, 'aws_iam_role', AwsIamRole),
5238
+ return cls(aws_iam_role=_from_dict(d, 'aws_iam_role', AwsIamRoleRequest),
5161
5239
  azure_managed_identity=_from_dict(d, 'azure_managed_identity', AzureManagedIdentity),
5162
5240
  azure_service_principal=_from_dict(d, 'azure_service_principal', AzureServicePrincipal),
5163
5241
  cloudflare_api_token=_from_dict(d, 'cloudflare_api_token', CloudflareApiToken),
@@ -5265,7 +5343,7 @@ class UpdateWorkspaceBindingsParameters:
5265
5343
 
5266
5344
  @dataclass
5267
5345
  class ValidateStorageCredential:
5268
- aws_iam_role: Optional[AwsIamRole] = None
5346
+ aws_iam_role: Optional[AwsIamRoleRequest] = None
5269
5347
  """The AWS IAM role configuration."""
5270
5348
 
5271
5349
  azure_managed_identity: Optional[AzureManagedIdentity] = None
@@ -5313,7 +5391,7 @@ class ValidateStorageCredential:
5313
5391
  @classmethod
5314
5392
  def from_dict(cls, d: Dict[str, any]) -> ValidateStorageCredential:
5315
5393
  """Deserializes the ValidateStorageCredential from a dictionary."""
5316
- return cls(aws_iam_role=_from_dict(d, 'aws_iam_role', AwsIamRole),
5394
+ return cls(aws_iam_role=_from_dict(d, 'aws_iam_role', AwsIamRoleRequest),
5317
5395
  azure_managed_identity=_from_dict(d, 'azure_managed_identity', AzureManagedIdentity),
5318
5396
  azure_service_principal=_from_dict(d, 'azure_service_principal', AzureServicePrincipal),
5319
5397
  cloudflare_api_token=_from_dict(d, 'cloudflare_api_token', CloudflareApiToken),
@@ -5390,34 +5468,15 @@ class ValidationResultResult(Enum):
5390
5468
  SKIP = 'SKIP'
5391
5469
 
5392
5470
 
5393
- @dataclass
5394
- class ViewData:
5395
- """Online Table information."""
5396
-
5397
- name: Optional[str] = None
5398
- """Full three-part (catalog, schema, table) name of the table."""
5399
-
5400
- spec: Optional[OnlineTableSpec] = None
5401
- """Specification of the online table."""
5402
-
5403
- def as_dict(self) -> dict:
5404
- """Serializes the ViewData into a dictionary suitable for use as a JSON request body."""
5405
- body = {}
5406
- if self.name is not None: body['name'] = self.name
5407
- if self.spec: body['spec'] = self.spec.as_dict()
5408
- return body
5409
-
5410
- @classmethod
5411
- def from_dict(cls, d: Dict[str, any]) -> ViewData:
5412
- """Deserializes the ViewData from a dictionary."""
5413
- return cls(name=d.get('name', None), spec=_from_dict(d, 'spec', OnlineTableSpec))
5414
-
5415
-
5416
5471
  @dataclass
5417
5472
  class VolumeInfo:
5418
5473
  access_point: Optional[str] = None
5419
5474
  """The AWS access point to use when accesing s3 for this external location."""
5420
5475
 
5476
+ browse_only: Optional[bool] = None
5477
+ """Indicates whether the principal is limited to retrieving metadata for the associated object
5478
+ through the BROWSE privilege when include_browse is enabled in the request."""
5479
+
5421
5480
  catalog_name: Optional[str] = None
5422
5481
  """The name of the catalog where the schema and the volume are"""
5423
5482
 
@@ -5464,6 +5523,7 @@ class VolumeInfo:
5464
5523
  """Serializes the VolumeInfo into a dictionary suitable for use as a JSON request body."""
5465
5524
  body = {}
5466
5525
  if self.access_point is not None: body['access_point'] = self.access_point
5526
+ if self.browse_only is not None: body['browse_only'] = self.browse_only
5467
5527
  if self.catalog_name is not None: body['catalog_name'] = self.catalog_name
5468
5528
  if self.comment is not None: body['comment'] = self.comment
5469
5529
  if self.created_at is not None: body['created_at'] = self.created_at
@@ -5485,6 +5545,7 @@ class VolumeInfo:
5485
5545
  def from_dict(cls, d: Dict[str, any]) -> VolumeInfo:
5486
5546
  """Deserializes the VolumeInfo from a dictionary."""
5487
5547
  return cls(access_point=d.get('access_point', None),
5548
+ browse_only=d.get('browse_only', None),
5488
5549
  catalog_name=d.get('catalog_name', None),
5489
5550
  comment=d.get('comment', None),
5490
5551
  created_at=d.get('created_at', None),
@@ -6046,7 +6107,7 @@ class CatalogsAPI:
6046
6107
 
6047
6108
  self._api.do('DELETE', f'/api/2.1/unity-catalog/catalogs/{name}', query=query, headers=headers)
6048
6109
 
6049
- def get(self, name: str) -> CatalogInfo:
6110
+ def get(self, name: str, *, include_browse: Optional[bool] = None) -> CatalogInfo:
6050
6111
  """Get a catalog.
6051
6112
 
6052
6113
  Gets the specified catalog in a metastore. The caller must be a metastore admin, the owner of the
@@ -6054,16 +6115,21 @@ class CatalogsAPI:
6054
6115
 
6055
6116
  :param name: str
6056
6117
  The name of the catalog.
6118
+ :param include_browse: bool (optional)
6119
+ Whether to include catalogs in the response for which the principal can only access selective
6120
+ metadata for
6057
6121
 
6058
6122
  :returns: :class:`CatalogInfo`
6059
6123
  """
6060
6124
 
6125
+ query = {}
6126
+ if include_browse is not None: query['include_browse'] = include_browse
6061
6127
  headers = {'Accept': 'application/json', }
6062
6128
 
6063
- res = self._api.do('GET', f'/api/2.1/unity-catalog/catalogs/{name}', headers=headers)
6129
+ res = self._api.do('GET', f'/api/2.1/unity-catalog/catalogs/{name}', query=query, headers=headers)
6064
6130
  return CatalogInfo.from_dict(res)
6065
6131
 
6066
- def list(self) -> Iterator[CatalogInfo]:
6132
+ def list(self, *, include_browse: Optional[bool] = None) -> Iterator[CatalogInfo]:
6067
6133
  """List catalogs.
6068
6134
 
6069
6135
  Gets an array of catalogs in the metastore. If the caller is the metastore admin, all catalogs will be
@@ -6071,12 +6137,18 @@ class CatalogsAPI:
6071
6137
  **USE_CATALOG** privilege) will be retrieved. There is no guarantee of a specific ordering of the
6072
6138
  elements in the array.
6073
6139
 
6140
+ :param include_browse: bool (optional)
6141
+ Whether to include catalogs in the response for which the principal can only access selective
6142
+ metadata for
6143
+
6074
6144
  :returns: Iterator over :class:`CatalogInfo`
6075
6145
  """
6076
6146
 
6147
+ query = {}
6148
+ if include_browse is not None: query['include_browse'] = include_browse
6077
6149
  headers = {'Accept': 'application/json', }
6078
6150
 
6079
- json = self._api.do('GET', '/api/2.1/unity-catalog/catalogs', headers=headers)
6151
+ json = self._api.do('GET', '/api/2.1/unity-catalog/catalogs', query=query, headers=headers)
6080
6152
  parsed = ListCatalogsResponse.from_dict(json).catalogs
6081
6153
  return parsed if parsed is not None else []
6082
6154
 
@@ -6343,7 +6415,7 @@ class ExternalLocationsAPI:
6343
6415
  query=query,
6344
6416
  headers=headers)
6345
6417
 
6346
- def get(self, name: str) -> ExternalLocationInfo:
6418
+ def get(self, name: str, *, include_browse: Optional[bool] = None) -> ExternalLocationInfo:
6347
6419
  """Get an external location.
6348
6420
 
6349
6421
  Gets an external location from the metastore. The caller must be either a metastore admin, the owner
@@ -6351,26 +6423,37 @@ class ExternalLocationsAPI:
6351
6423
 
6352
6424
  :param name: str
6353
6425
  Name of the external location.
6426
+ :param include_browse: bool (optional)
6427
+ Whether to include external locations in the response for which the principal can only access
6428
+ selective metadata for
6354
6429
 
6355
6430
  :returns: :class:`ExternalLocationInfo`
6356
6431
  """
6357
6432
 
6433
+ query = {}
6434
+ if include_browse is not None: query['include_browse'] = include_browse
6358
6435
  headers = {'Accept': 'application/json', }
6359
6436
 
6360
- res = self._api.do('GET', f'/api/2.1/unity-catalog/external-locations/{name}', headers=headers)
6437
+ res = self._api.do('GET',
6438
+ f'/api/2.1/unity-catalog/external-locations/{name}',
6439
+ query=query,
6440
+ headers=headers)
6361
6441
  return ExternalLocationInfo.from_dict(res)
6362
6442
 
6363
6443
  def list(self,
6364
6444
  *,
6445
+ include_browse: Optional[bool] = None,
6365
6446
  max_results: Optional[int] = None,
6366
6447
  page_token: Optional[str] = None) -> Iterator[ExternalLocationInfo]:
6367
6448
  """List external locations.
6368
6449
 
6369
6450
  Gets an array of external locations (__ExternalLocationInfo__ objects) from the metastore. The caller
6370
6451
  must be a metastore admin, the owner of the external location, or a user that has some privilege on
6371
- the external location. For unpaginated request, there is no guarantee of a specific ordering of the
6372
- elements in the array. For paginated request, elements are ordered by their name.
6452
+ the external location. There is no guarantee of a specific ordering of the elements in the array.
6373
6453
 
6454
+ :param include_browse: bool (optional)
6455
+ Whether to include external locations in the response for which the principal can only access
6456
+ selective metadata for
6374
6457
  :param max_results: int (optional)
6375
6458
  Maximum number of external locations to return. If not set, all the external locations are returned
6376
6459
  (not recommended). - when set to a value greater than 0, the page length is the minimum of this
@@ -6383,6 +6466,7 @@ class ExternalLocationsAPI:
6383
6466
  """
6384
6467
 
6385
6468
  query = {}
6469
+ if include_browse is not None: query['include_browse'] = include_browse
6386
6470
  if max_results is not None: query['max_results'] = max_results
6387
6471
  if page_token is not None: query['page_token'] = page_token
6388
6472
  headers = {'Accept': 'application/json', }
@@ -6518,7 +6602,7 @@ class FunctionsAPI:
6518
6602
 
6519
6603
  self._api.do('DELETE', f'/api/2.1/unity-catalog/functions/{name}', query=query, headers=headers)
6520
6604
 
6521
- def get(self, name: str) -> FunctionInfo:
6605
+ def get(self, name: str, *, include_browse: Optional[bool] = None) -> FunctionInfo:
6522
6606
  """Get a function.
6523
6607
 
6524
6608
  Gets a function from within a parent catalog and schema. For the fetch to succeed, the user must
@@ -6531,19 +6615,25 @@ class FunctionsAPI:
6531
6615
  :param name: str
6532
6616
  The fully-qualified name of the function (of the form
6533
6617
  __catalog_name__.__schema_name__.__function__name__).
6618
+ :param include_browse: bool (optional)
6619
+ Whether to include functions in the response for which the principal can only access selective
6620
+ metadata for
6534
6621
 
6535
6622
  :returns: :class:`FunctionInfo`
6536
6623
  """
6537
6624
 
6625
+ query = {}
6626
+ if include_browse is not None: query['include_browse'] = include_browse
6538
6627
  headers = {'Accept': 'application/json', }
6539
6628
 
6540
- res = self._api.do('GET', f'/api/2.1/unity-catalog/functions/{name}', headers=headers)
6629
+ res = self._api.do('GET', f'/api/2.1/unity-catalog/functions/{name}', query=query, headers=headers)
6541
6630
  return FunctionInfo.from_dict(res)
6542
6631
 
6543
6632
  def list(self,
6544
6633
  catalog_name: str,
6545
6634
  schema_name: str,
6546
6635
  *,
6636
+ include_browse: Optional[bool] = None,
6547
6637
  max_results: Optional[int] = None,
6548
6638
  page_token: Optional[str] = None) -> Iterator[FunctionInfo]:
6549
6639
  """List functions.
@@ -6551,14 +6641,16 @@ class FunctionsAPI:
6551
6641
  List functions within the specified parent catalog and schema. If the user is a metastore admin, all
6552
6642
  functions are returned in the output list. Otherwise, the user must have the **USE_CATALOG** privilege
6553
6643
  on the catalog and the **USE_SCHEMA** privilege on the schema, and the output list contains only
6554
- functions for which either the user has the **EXECUTE** privilege or the user is the owner. For
6555
- unpaginated request, there is no guarantee of a specific ordering of the elements in the array. For
6556
- paginated request, elements are ordered by their name.
6644
+ functions for which either the user has the **EXECUTE** privilege or the user is the owner. There is
6645
+ no guarantee of a specific ordering of the elements in the array.
6557
6646
 
6558
6647
  :param catalog_name: str
6559
6648
  Name of parent catalog for functions of interest.
6560
6649
  :param schema_name: str
6561
6650
  Parent schema of functions.
6651
+ :param include_browse: bool (optional)
6652
+ Whether to include functions in the response for which the principal can only access selective
6653
+ metadata for
6562
6654
  :param max_results: int (optional)
6563
6655
  Maximum number of functions to return. If not set, all the functions are returned (not recommended).
6564
6656
  - when set to a value greater than 0, the page length is the minimum of this value and a server
@@ -6572,6 +6664,7 @@ class FunctionsAPI:
6572
6664
 
6573
6665
  query = {}
6574
6666
  if catalog_name is not None: query['catalog_name'] = catalog_name
6667
+ if include_browse is not None: query['include_browse'] = include_browse
6575
6668
  if max_results is not None: query['max_results'] = max_results
6576
6669
  if page_token is not None: query['page_token'] = page_token
6577
6670
  if schema_name is not None: query['schema_name'] = schema_name
@@ -6760,7 +6853,7 @@ class LakehouseMonitorsAPI:
6760
6853
  custom_metrics: Optional[List[MonitorCustomMetric]] = None,
6761
6854
  data_classification_config: Optional[MonitorDataClassificationConfig] = None,
6762
6855
  inference_log: Optional[MonitorInferenceLogProfileType] = None,
6763
- notifications: Optional[List[MonitorNotificationsConfig]] = None,
6856
+ notifications: Optional[MonitorNotificationsConfig] = None,
6764
6857
  schedule: Optional[MonitorCronSchedule] = None,
6765
6858
  skip_builtin_dashboard: Optional[bool] = None,
6766
6859
  slicing_exprs: Optional[List[str]] = None,
@@ -6795,7 +6888,7 @@ class LakehouseMonitorsAPI:
6795
6888
  The data classification config for the monitor.
6796
6889
  :param inference_log: :class:`MonitorInferenceLogProfileType` (optional)
6797
6890
  Configuration for monitoring inference logs.
6798
- :param notifications: List[:class:`MonitorNotificationsConfig`] (optional)
6891
+ :param notifications: :class:`MonitorNotificationsConfig` (optional)
6799
6892
  The notification settings for the monitor.
6800
6893
  :param schedule: :class:`MonitorCronSchedule` (optional)
6801
6894
  The schedule for automatically updating and refreshing metric tables.
@@ -6822,7 +6915,7 @@ class LakehouseMonitorsAPI:
6822
6915
  if data_classification_config is not None:
6823
6916
  body['data_classification_config'] = data_classification_config.as_dict()
6824
6917
  if inference_log is not None: body['inference_log'] = inference_log.as_dict()
6825
- if notifications is not None: body['notifications'] = [v.as_dict() for v in notifications]
6918
+ if notifications is not None: body['notifications'] = notifications.as_dict()
6826
6919
  if output_schema_name is not None: body['output_schema_name'] = output_schema_name
6827
6920
  if schedule is not None: body['schedule'] = schedule.as_dict()
6828
6921
  if skip_builtin_dashboard is not None: body['skip_builtin_dashboard'] = skip_builtin_dashboard
@@ -6974,7 +7067,7 @@ class LakehouseMonitorsAPI:
6974
7067
  custom_metrics: Optional[List[MonitorCustomMetric]] = None,
6975
7068
  data_classification_config: Optional[MonitorDataClassificationConfig] = None,
6976
7069
  inference_log: Optional[MonitorInferenceLogProfileType] = None,
6977
- notifications: Optional[List[MonitorNotificationsConfig]] = None,
7070
+ notifications: Optional[MonitorNotificationsConfig] = None,
6978
7071
  schedule: Optional[MonitorCronSchedule] = None,
6979
7072
  slicing_exprs: Optional[List[str]] = None,
6980
7073
  snapshot: Optional[MonitorSnapshotProfileType] = None,
@@ -7007,7 +7100,7 @@ class LakehouseMonitorsAPI:
7007
7100
  The data classification config for the monitor.
7008
7101
  :param inference_log: :class:`MonitorInferenceLogProfileType` (optional)
7009
7102
  Configuration for monitoring inference logs.
7010
- :param notifications: List[:class:`MonitorNotificationsConfig`] (optional)
7103
+ :param notifications: :class:`MonitorNotificationsConfig` (optional)
7011
7104
  The notification settings for the monitor.
7012
7105
  :param schedule: :class:`MonitorCronSchedule` (optional)
7013
7106
  The schedule for automatically updating and refreshing metric tables.
@@ -7028,7 +7121,7 @@ class LakehouseMonitorsAPI:
7028
7121
  if data_classification_config is not None:
7029
7122
  body['data_classification_config'] = data_classification_config.as_dict()
7030
7123
  if inference_log is not None: body['inference_log'] = inference_log.as_dict()
7031
- if notifications is not None: body['notifications'] = [v.as_dict() for v in notifications]
7124
+ if notifications is not None: body['notifications'] = notifications.as_dict()
7032
7125
  if output_schema_name is not None: body['output_schema_name'] = output_schema_name
7033
7126
  if schedule is not None: body['schedule'] = schedule.as_dict()
7034
7127
  if slicing_exprs is not None: body['slicing_exprs'] = [v for v in slicing_exprs]
@@ -7335,7 +7428,11 @@ class ModelVersionsAPI:
7335
7428
  f'/api/2.1/unity-catalog/models/{full_name}/versions/{version}',
7336
7429
  headers=headers)
7337
7430
 
7338
- def get(self, full_name: str, version: int) -> RegisteredModelInfo:
7431
+ def get(self,
7432
+ full_name: str,
7433
+ version: int,
7434
+ *,
7435
+ include_browse: Optional[bool] = None) -> RegisteredModelInfo:
7339
7436
  """Get a Model Version.
7340
7437
 
7341
7438
  Get a model version.
@@ -7348,14 +7445,20 @@ class ModelVersionsAPI:
7348
7445
  The three-level (fully qualified) name of the model version
7349
7446
  :param version: int
7350
7447
  The integer version number of the model version
7448
+ :param include_browse: bool (optional)
7449
+ Whether to include model versions in the response for which the principal can only access selective
7450
+ metadata for
7351
7451
 
7352
7452
  :returns: :class:`RegisteredModelInfo`
7353
7453
  """
7354
7454
 
7455
+ query = {}
7456
+ if include_browse is not None: query['include_browse'] = include_browse
7355
7457
  headers = {'Accept': 'application/json', }
7356
7458
 
7357
7459
  res = self._api.do('GET',
7358
7460
  f'/api/2.1/unity-catalog/models/{full_name}/versions/{version}',
7461
+ query=query,
7359
7462
  headers=headers)
7360
7463
  return RegisteredModelInfo.from_dict(res)
7361
7464
 
@@ -7386,6 +7489,7 @@ class ModelVersionsAPI:
7386
7489
  def list(self,
7387
7490
  full_name: str,
7388
7491
  *,
7492
+ include_browse: Optional[bool] = None,
7389
7493
  max_results: Optional[int] = None,
7390
7494
  page_token: Optional[str] = None) -> Iterator[ModelVersionInfo]:
7391
7495
  """List Model Versions.
@@ -7403,6 +7507,9 @@ class ModelVersionsAPI:
7403
7507
 
7404
7508
  :param full_name: str
7405
7509
  The full three-level name of the registered model under which to list model versions
7510
+ :param include_browse: bool (optional)
7511
+ Whether to include model versions in the response for which the principal can only access selective
7512
+ metadata for
7406
7513
  :param max_results: int (optional)
7407
7514
  Maximum number of model versions to return. If not set, the page length is set to a server
7408
7515
  configured value (100, as of 1/3/2024). - when set to a value greater than 0, the page length is the
@@ -7416,6 +7523,7 @@ class ModelVersionsAPI:
7416
7523
  """
7417
7524
 
7418
7525
  query = {}
7526
+ if include_browse is not None: query['include_browse'] = include_browse
7419
7527
  if max_results is not None: query['max_results'] = max_results
7420
7528
  if page_token is not None: query['page_token'] = page_token
7421
7529
  headers = {'Accept': 'application/json', }
@@ -7635,7 +7743,7 @@ class RegisteredModelsAPI:
7635
7743
 
7636
7744
  self._api.do('DELETE', f'/api/2.1/unity-catalog/models/{full_name}/aliases/{alias}', headers=headers)
7637
7745
 
7638
- def get(self, full_name: str) -> RegisteredModelInfo:
7746
+ def get(self, full_name: str, *, include_browse: Optional[bool] = None) -> RegisteredModelInfo:
7639
7747
  """Get a Registered Model.
7640
7748
 
7641
7749
  Get a registered model.
@@ -7646,18 +7754,24 @@ class RegisteredModelsAPI:
7646
7754
 
7647
7755
  :param full_name: str
7648
7756
  The three-level (fully qualified) name of the registered model
7757
+ :param include_browse: bool (optional)
7758
+ Whether to include registered models in the response for which the principal can only access
7759
+ selective metadata for
7649
7760
 
7650
7761
  :returns: :class:`RegisteredModelInfo`
7651
7762
  """
7652
7763
 
7764
+ query = {}
7765
+ if include_browse is not None: query['include_browse'] = include_browse
7653
7766
  headers = {'Accept': 'application/json', }
7654
7767
 
7655
- res = self._api.do('GET', f'/api/2.1/unity-catalog/models/{full_name}', headers=headers)
7768
+ res = self._api.do('GET', f'/api/2.1/unity-catalog/models/{full_name}', query=query, headers=headers)
7656
7769
  return RegisteredModelInfo.from_dict(res)
7657
7770
 
7658
7771
  def list(self,
7659
7772
  *,
7660
7773
  catalog_name: Optional[str] = None,
7774
+ include_browse: Optional[bool] = None,
7661
7775
  max_results: Optional[int] = None,
7662
7776
  page_token: Optional[str] = None,
7663
7777
  schema_name: Optional[str] = None) -> Iterator[RegisteredModelInfo]:
@@ -7677,6 +7791,9 @@ class RegisteredModelsAPI:
7677
7791
  :param catalog_name: str (optional)
7678
7792
  The identifier of the catalog under which to list registered models. If specified, schema_name must
7679
7793
  be specified.
7794
+ :param include_browse: bool (optional)
7795
+ Whether to include registered models in the response for which the principal can only access
7796
+ selective metadata for
7680
7797
  :param max_results: int (optional)
7681
7798
  Max number of registered models to return. If catalog and schema are unspecified, max_results must
7682
7799
  be specified. If max_results is unspecified, we return all results, starting from the page specified
@@ -7692,6 +7809,7 @@ class RegisteredModelsAPI:
7692
7809
 
7693
7810
  query = {}
7694
7811
  if catalog_name is not None: query['catalog_name'] = catalog_name
7812
+ if include_browse is not None: query['include_browse'] = include_browse
7695
7813
  if max_results is not None: query['max_results'] = max_results
7696
7814
  if page_token is not None: query['page_token'] = page_token
7697
7815
  if schema_name is not None: query['schema_name'] = schema_name
@@ -7832,7 +7950,7 @@ class SchemasAPI:
7832
7950
 
7833
7951
  self._api.do('DELETE', f'/api/2.1/unity-catalog/schemas/{full_name}', headers=headers)
7834
7952
 
7835
- def get(self, full_name: str) -> SchemaInfo:
7953
+ def get(self, full_name: str, *, include_browse: Optional[bool] = None) -> SchemaInfo:
7836
7954
  """Get a schema.
7837
7955
 
7838
7956
  Gets the specified schema within the metastore. The caller must be a metastore admin, the owner of the
@@ -7840,30 +7958,38 @@ class SchemasAPI:
7840
7958
 
7841
7959
  :param full_name: str
7842
7960
  Full name of the schema.
7961
+ :param include_browse: bool (optional)
7962
+ Whether to include schemas in the response for which the principal can only access selective
7963
+ metadata for
7843
7964
 
7844
7965
  :returns: :class:`SchemaInfo`
7845
7966
  """
7846
7967
 
7968
+ query = {}
7969
+ if include_browse is not None: query['include_browse'] = include_browse
7847
7970
  headers = {'Accept': 'application/json', }
7848
7971
 
7849
- res = self._api.do('GET', f'/api/2.1/unity-catalog/schemas/{full_name}', headers=headers)
7972
+ res = self._api.do('GET', f'/api/2.1/unity-catalog/schemas/{full_name}', query=query, headers=headers)
7850
7973
  return SchemaInfo.from_dict(res)
7851
7974
 
7852
7975
  def list(self,
7853
7976
  catalog_name: str,
7854
7977
  *,
7978
+ include_browse: Optional[bool] = None,
7855
7979
  max_results: Optional[int] = None,
7856
7980
  page_token: Optional[str] = None) -> Iterator[SchemaInfo]:
7857
7981
  """List schemas.
7858
7982
 
7859
7983
  Gets an array of schemas for a catalog in the metastore. If the caller is the metastore admin or the
7860
7984
  owner of the parent catalog, all schemas for the catalog will be retrieved. Otherwise, only schemas
7861
- owned by the caller (or for which the caller has the **USE_SCHEMA** privilege) will be retrieved. For
7862
- unpaginated request, there is no guarantee of a specific ordering of the elements in the array. For
7863
- paginated request, elements are ordered by their name.
7985
+ owned by the caller (or for which the caller has the **USE_SCHEMA** privilege) will be retrieved.
7986
+ There is no guarantee of a specific ordering of the elements in the array.
7864
7987
 
7865
7988
  :param catalog_name: str
7866
7989
  Parent catalog for schemas of interest.
7990
+ :param include_browse: bool (optional)
7991
+ Whether to include schemas in the response for which the principal can only access selective
7992
+ metadata for
7867
7993
  :param max_results: int (optional)
7868
7994
  Maximum number of schemas to return. If not set, all the schemas are returned (not recommended). -
7869
7995
  when set to a value greater than 0, the page length is the minimum of this value and a server
@@ -7877,6 +8003,7 @@ class SchemasAPI:
7877
8003
 
7878
8004
  query = {}
7879
8005
  if catalog_name is not None: query['catalog_name'] = catalog_name
8006
+ if include_browse is not None: query['include_browse'] = include_browse
7880
8007
  if max_results is not None: query['max_results'] = max_results
7881
8008
  if page_token is not None: query['page_token'] = page_token
7882
8009
  headers = {'Accept': 'application/json', }
@@ -7951,7 +8078,7 @@ class StorageCredentialsAPI:
7951
8078
  def create(self,
7952
8079
  name: str,
7953
8080
  *,
7954
- aws_iam_role: Optional[AwsIamRole] = None,
8081
+ aws_iam_role: Optional[AwsIamRoleRequest] = None,
7955
8082
  azure_managed_identity: Optional[AzureManagedIdentity] = None,
7956
8083
  azure_service_principal: Optional[AzureServicePrincipal] = None,
7957
8084
  cloudflare_api_token: Optional[CloudflareApiToken] = None,
@@ -7965,7 +8092,7 @@ class StorageCredentialsAPI:
7965
8092
 
7966
8093
  :param name: str
7967
8094
  The credential name. The name must be unique within the metastore.
7968
- :param aws_iam_role: :class:`AwsIamRole` (optional)
8095
+ :param aws_iam_role: :class:`AwsIamRoleRequest` (optional)
7969
8096
  The AWS IAM role configuration.
7970
8097
  :param azure_managed_identity: :class:`AzureManagedIdentity` (optional)
7971
8098
  The Azure managed identity configuration.
@@ -8050,9 +8177,8 @@ class StorageCredentialsAPI:
8050
8177
 
8051
8178
  Gets an array of storage credentials (as __StorageCredentialInfo__ objects). The array is limited to
8052
8179
  only those storage credentials the caller has permission to access. If the caller is a metastore
8053
- admin, retrieval of credentials is unrestricted. For unpaginated request, there is no guarantee of a
8054
- specific ordering of the elements in the array. For paginated request, elements are ordered by their
8055
- name.
8180
+ admin, retrieval of credentials is unrestricted. There is no guarantee of a specific ordering of the
8181
+ elements in the array.
8056
8182
 
8057
8183
  :param max_results: int (optional)
8058
8184
  Maximum number of storage credentials to return. If not set, all the storage credentials are
@@ -8086,7 +8212,7 @@ class StorageCredentialsAPI:
8086
8212
  def update(self,
8087
8213
  name: str,
8088
8214
  *,
8089
- aws_iam_role: Optional[AwsIamRole] = None,
8215
+ aws_iam_role: Optional[AwsIamRoleRequest] = None,
8090
8216
  azure_managed_identity: Optional[AzureManagedIdentity] = None,
8091
8217
  azure_service_principal: Optional[AzureServicePrincipal] = None,
8092
8218
  cloudflare_api_token: Optional[CloudflareApiToken] = None,
@@ -8103,7 +8229,7 @@ class StorageCredentialsAPI:
8103
8229
 
8104
8230
  :param name: str
8105
8231
  Name of the storage credential.
8106
- :param aws_iam_role: :class:`AwsIamRole` (optional)
8232
+ :param aws_iam_role: :class:`AwsIamRoleRequest` (optional)
8107
8233
  The AWS IAM role configuration.
8108
8234
  :param azure_managed_identity: :class:`AzureManagedIdentity` (optional)
8109
8235
  The Azure managed identity configuration.
@@ -8153,7 +8279,7 @@ class StorageCredentialsAPI:
8153
8279
 
8154
8280
  def validate(self,
8155
8281
  *,
8156
- aws_iam_role: Optional[AwsIamRole] = None,
8282
+ aws_iam_role: Optional[AwsIamRoleRequest] = None,
8157
8283
  azure_managed_identity: Optional[AzureManagedIdentity] = None,
8158
8284
  azure_service_principal: Optional[AzureServicePrincipal] = None,
8159
8285
  cloudflare_api_token: Optional[CloudflareApiToken] = None,
@@ -8174,7 +8300,7 @@ class StorageCredentialsAPI:
8174
8300
  The caller must be a metastore admin or the storage credential owner or have the
8175
8301
  **CREATE_EXTERNAL_LOCATION** privilege on the metastore and the storage credential.
8176
8302
 
8177
- :param aws_iam_role: :class:`AwsIamRole` (optional)
8303
+ :param aws_iam_role: :class:`AwsIamRoleRequest` (optional)
8178
8304
  The AWS IAM role configuration.
8179
8305
  :param azure_managed_identity: :class:`AzureManagedIdentity` (optional)
8180
8306
  The Azure managed identity configuration.
@@ -8414,7 +8540,11 @@ class TablesAPI:
8414
8540
  res = self._api.do('GET', f'/api/2.1/unity-catalog/tables/{full_name}/exists', headers=headers)
8415
8541
  return TableExistsResponse.from_dict(res)
8416
8542
 
8417
- def get(self, full_name: str, *, include_delta_metadata: Optional[bool] = None) -> TableInfo:
8543
+ def get(self,
8544
+ full_name: str,
8545
+ *,
8546
+ include_browse: Optional[bool] = None,
8547
+ include_delta_metadata: Optional[bool] = None) -> TableInfo:
8418
8548
  """Get a table.
8419
8549
 
8420
8550
  Gets a table from the metastore for a specific catalog and schema. The caller must satisfy one of the
@@ -8425,6 +8555,9 @@ class TablesAPI:
8425
8555
 
8426
8556
  :param full_name: str
8427
8557
  Full name of the table.
8558
+ :param include_browse: bool (optional)
8559
+ Whether to include tables in the response for which the principal can only access selective metadata
8560
+ for
8428
8561
  :param include_delta_metadata: bool (optional)
8429
8562
  Whether delta metadata should be included in the response.
8430
8563
 
@@ -8432,6 +8565,7 @@ class TablesAPI:
8432
8565
  """
8433
8566
 
8434
8567
  query = {}
8568
+ if include_browse is not None: query['include_browse'] = include_browse
8435
8569
  if include_delta_metadata is not None: query['include_delta_metadata'] = include_delta_metadata
8436
8570
  headers = {'Accept': 'application/json', }
8437
8571
 
@@ -8442,6 +8576,7 @@ class TablesAPI:
8442
8576
  catalog_name: str,
8443
8577
  schema_name: str,
8444
8578
  *,
8579
+ include_browse: Optional[bool] = None,
8445
8580
  include_delta_metadata: Optional[bool] = None,
8446
8581
  max_results: Optional[int] = None,
8447
8582
  omit_columns: Optional[bool] = None,
@@ -8459,6 +8594,9 @@ class TablesAPI:
8459
8594
  Name of parent catalog for tables of interest.
8460
8595
  :param schema_name: str
8461
8596
  Parent schema of tables.
8597
+ :param include_browse: bool (optional)
8598
+ Whether to include tables in the response for which the principal can only access selective metadata
8599
+ for
8462
8600
  :param include_delta_metadata: bool (optional)
8463
8601
  Whether delta metadata should be included in the response.
8464
8602
  :param max_results: int (optional)
@@ -8478,6 +8616,7 @@ class TablesAPI:
8478
8616
 
8479
8617
  query = {}
8480
8618
  if catalog_name is not None: query['catalog_name'] = catalog_name
8619
+ if include_browse is not None: query['include_browse'] = include_browse
8481
8620
  if include_delta_metadata is not None: query['include_delta_metadata'] = include_delta_metadata
8482
8621
  if max_results is not None: query['max_results'] = max_results
8483
8622
  if omit_columns is not None: query['omit_columns'] = omit_columns
@@ -8657,6 +8796,7 @@ class VolumesAPI:
8657
8796
  catalog_name: str,
8658
8797
  schema_name: str,
8659
8798
  *,
8799
+ include_browse: Optional[bool] = None,
8660
8800
  max_results: Optional[int] = None,
8661
8801
  page_token: Optional[str] = None) -> Iterator[VolumeInfo]:
8662
8802
  """List Volumes.
@@ -8675,6 +8815,9 @@ class VolumesAPI:
8675
8815
  The identifier of the catalog
8676
8816
  :param schema_name: str
8677
8817
  The identifier of the schema
8818
+ :param include_browse: bool (optional)
8819
+ Whether to include volumes in the response for which the principal can only access selective
8820
+ metadata for
8678
8821
  :param max_results: int (optional)
8679
8822
  Maximum number of volumes to return (page length).
8680
8823
 
@@ -8696,6 +8839,7 @@ class VolumesAPI:
8696
8839
 
8697
8840
  query = {}
8698
8841
  if catalog_name is not None: query['catalog_name'] = catalog_name
8842
+ if include_browse is not None: query['include_browse'] = include_browse
8699
8843
  if max_results is not None: query['max_results'] = max_results
8700
8844
  if page_token is not None: query['page_token'] = page_token
8701
8845
  if schema_name is not None: query['schema_name'] = schema_name
@@ -8710,7 +8854,7 @@ class VolumesAPI:
8710
8854
  return
8711
8855
  query['page_token'] = json['next_page_token']
8712
8856
 
8713
- def read(self, name: str) -> VolumeInfo:
8857
+ def read(self, name: str, *, include_browse: Optional[bool] = None) -> VolumeInfo:
8714
8858
  """Get a Volume.
8715
8859
 
8716
8860
  Gets a volume from the metastore for a specific catalog and schema.
@@ -8721,13 +8865,18 @@ class VolumesAPI:
8721
8865
 
8722
8866
  :param name: str
8723
8867
  The three-level (fully qualified) name of the volume
8868
+ :param include_browse: bool (optional)
8869
+ Whether to include volumes in the response for which the principal can only access selective
8870
+ metadata for
8724
8871
 
8725
8872
  :returns: :class:`VolumeInfo`
8726
8873
  """
8727
8874
 
8875
+ query = {}
8876
+ if include_browse is not None: query['include_browse'] = include_browse
8728
8877
  headers = {'Accept': 'application/json', }
8729
8878
 
8730
- res = self._api.do('GET', f'/api/2.1/unity-catalog/volumes/{name}', headers=headers)
8879
+ res = self._api.do('GET', f'/api/2.1/unity-catalog/volumes/{name}', query=query, headers=headers)
8731
8880
  return VolumeInfo.from_dict(res)
8732
8881
 
8733
8882
  def update(self,