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

@@ -274,6 +274,42 @@ class AssignResponse:
274
274
  return cls()
275
275
 
276
276
 
277
+ @dataclass
278
+ class AwsCredentials:
279
+ """AWS temporary credentials for API authentication. Read more at
280
+ https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html."""
281
+
282
+ access_key_id: Optional[str] = None
283
+ """The access key ID that identifies the temporary credentials."""
284
+
285
+ access_point: Optional[str] = None
286
+ """The Amazon Resource Name (ARN) of the S3 access point for temporary credentials related the
287
+ external location."""
288
+
289
+ secret_access_key: Optional[str] = None
290
+ """The secret access key that can be used to sign AWS API requests."""
291
+
292
+ session_token: Optional[str] = None
293
+ """The token that users must pass to AWS API to use the temporary credentials."""
294
+
295
+ def as_dict(self) -> dict:
296
+ """Serializes the AwsCredentials into a dictionary suitable for use as a JSON request body."""
297
+ body = {}
298
+ if self.access_key_id is not None: body['access_key_id'] = self.access_key_id
299
+ if self.access_point is not None: body['access_point'] = self.access_point
300
+ if self.secret_access_key is not None: body['secret_access_key'] = self.secret_access_key
301
+ if self.session_token is not None: body['session_token'] = self.session_token
302
+ return body
303
+
304
+ @classmethod
305
+ def from_dict(cls, d: Dict[str, any]) -> AwsCredentials:
306
+ """Deserializes the AwsCredentials from a dictionary."""
307
+ return cls(access_key_id=d.get('access_key_id', None),
308
+ access_point=d.get('access_point', None),
309
+ secret_access_key=d.get('secret_access_key', None),
310
+ session_token=d.get('session_token', None))
311
+
312
+
277
313
  @dataclass
278
314
  class AwsIamRoleRequest:
279
315
  role_arn: str
@@ -405,6 +441,26 @@ class AzureServicePrincipal:
405
441
  directory_id=d.get('directory_id', None))
406
442
 
407
443
 
444
+ @dataclass
445
+ class AzureUserDelegationSas:
446
+ """Azure temporary credentials for API authentication. Read more at
447
+ https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas"""
448
+
449
+ sas_token: Optional[str] = None
450
+ """The signed URI (SAS Token) used to access blob services for a given path"""
451
+
452
+ def as_dict(self) -> dict:
453
+ """Serializes the AzureUserDelegationSas into a dictionary suitable for use as a JSON request body."""
454
+ body = {}
455
+ if self.sas_token is not None: body['sas_token'] = self.sas_token
456
+ return body
457
+
458
+ @classmethod
459
+ def from_dict(cls, d: Dict[str, any]) -> AzureUserDelegationSas:
460
+ """Deserializes the AzureUserDelegationSas from a dictionary."""
461
+ return cls(sas_token=d.get('sas_token', None))
462
+
463
+
408
464
  @dataclass
409
465
  class CancelRefreshResponse:
410
466
 
@@ -853,6 +909,7 @@ class ConnectionInfoSecurableKind(Enum):
853
909
  CONNECTION_DATABRICKS = 'CONNECTION_DATABRICKS'
854
910
  CONNECTION_EXTERNAL_HIVE_METASTORE = 'CONNECTION_EXTERNAL_HIVE_METASTORE'
855
911
  CONNECTION_GLUE = 'CONNECTION_GLUE'
912
+ CONNECTION_HTTP_BEARER = 'CONNECTION_HTTP_BEARER'
856
913
  CONNECTION_MYSQL = 'CONNECTION_MYSQL'
857
914
  CONNECTION_ONLINE_CATALOG = 'CONNECTION_ONLINE_CATALOG'
858
915
  CONNECTION_POSTGRESQL = 'CONNECTION_POSTGRESQL'
@@ -869,6 +926,7 @@ class ConnectionType(Enum):
869
926
  DATABRICKS = 'DATABRICKS'
870
927
  GLUE = 'GLUE'
871
928
  HIVE_METASTORE = 'HIVE_METASTORE'
929
+ HTTP = 'HTTP'
872
930
  MYSQL = 'MYSQL'
873
931
  POSTGRESQL = 'POSTGRESQL'
874
932
  REDSHIFT = 'REDSHIFT'
@@ -1086,9 +1144,6 @@ class CreateFunction:
1086
1144
  full_data_type: str
1087
1145
  """Pretty printed function data type."""
1088
1146
 
1089
- return_params: FunctionParameterInfos
1090
- """Table function return parameters."""
1091
-
1092
1147
  routine_body: CreateFunctionRoutineBody
1093
1148
  """Function language. When **EXTERNAL** is used, the language of the routine function should be
1094
1149
  specified in the __external_language__ field, and the __return_params__ of the function cannot
@@ -1098,9 +1153,6 @@ class CreateFunction:
1098
1153
  routine_definition: str
1099
1154
  """Function body."""
1100
1155
 
1101
- routine_dependencies: DependencyList
1102
- """Function dependencies."""
1103
-
1104
1156
  parameter_style: CreateFunctionParameterStyle
1105
1157
  """Function parameter style. **S** is the value for SQL."""
1106
1158
 
@@ -1131,6 +1183,12 @@ class CreateFunction:
1131
1183
  properties: Optional[str] = None
1132
1184
  """JSON-serialized key-value pair map, encoded (escaped) as a string."""
1133
1185
 
1186
+ return_params: Optional[FunctionParameterInfos] = None
1187
+ """Table function return parameters."""
1188
+
1189
+ routine_dependencies: Optional[DependencyList] = None
1190
+ """Function dependencies."""
1191
+
1134
1192
  sql_path: Optional[str] = None
1135
1193
  """List of schemes whose objects can be referenced without qualification."""
1136
1194
 
@@ -1620,6 +1678,7 @@ class CreateVolumeRequestContent:
1620
1678
  class CredentialType(Enum):
1621
1679
  """The type of credential."""
1622
1680
 
1681
+ BEARER_TOKEN = 'BEARER_TOKEN'
1623
1682
  USERNAME_PASSWORD = 'USERNAME_PASSWORD'
1624
1683
 
1625
1684
 
@@ -2438,6 +2497,97 @@ class FunctionParameterType(Enum):
2438
2497
  PARAM = 'PARAM'
2439
2498
 
2440
2499
 
2500
+ @dataclass
2501
+ class GcpOauthToken:
2502
+ """GCP temporary credentials for API authentication. Read more at
2503
+ https://developers.google.com/identity/protocols/oauth2/service-account"""
2504
+
2505
+ oauth_token: Optional[str] = None
2506
+
2507
+ def as_dict(self) -> dict:
2508
+ """Serializes the GcpOauthToken into a dictionary suitable for use as a JSON request body."""
2509
+ body = {}
2510
+ if self.oauth_token is not None: body['oauth_token'] = self.oauth_token
2511
+ return body
2512
+
2513
+ @classmethod
2514
+ def from_dict(cls, d: Dict[str, any]) -> GcpOauthToken:
2515
+ """Deserializes the GcpOauthToken from a dictionary."""
2516
+ return cls(oauth_token=d.get('oauth_token', None))
2517
+
2518
+
2519
+ @dataclass
2520
+ class GenerateTemporaryTableCredentialRequest:
2521
+ operation: Optional[TableOperation] = None
2522
+ """The operation performed against the table data, either READ or READ_WRITE. If READ_WRITE is
2523
+ specified, the credentials returned will have write permissions, otherwise, it will be read
2524
+ only."""
2525
+
2526
+ table_id: Optional[str] = None
2527
+ """UUID of the table to read or write."""
2528
+
2529
+ def as_dict(self) -> dict:
2530
+ """Serializes the GenerateTemporaryTableCredentialRequest into a dictionary suitable for use as a JSON request body."""
2531
+ body = {}
2532
+ if self.operation is not None: body['operation'] = self.operation.value
2533
+ if self.table_id is not None: body['table_id'] = self.table_id
2534
+ return body
2535
+
2536
+ @classmethod
2537
+ def from_dict(cls, d: Dict[str, any]) -> GenerateTemporaryTableCredentialRequest:
2538
+ """Deserializes the GenerateTemporaryTableCredentialRequest from a dictionary."""
2539
+ return cls(operation=_enum(d, 'operation', TableOperation), table_id=d.get('table_id', None))
2540
+
2541
+
2542
+ @dataclass
2543
+ class GenerateTemporaryTableCredentialResponse:
2544
+ aws_temp_credentials: Optional[AwsCredentials] = None
2545
+ """AWS temporary credentials for API authentication. Read more at
2546
+ https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html."""
2547
+
2548
+ azure_user_delegation_sas: Optional[AzureUserDelegationSas] = None
2549
+ """Azure temporary credentials for API authentication. Read more at
2550
+ https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas"""
2551
+
2552
+ expiration_time: Optional[int] = None
2553
+ """Server time when the credential will expire, in epoch milliseconds. The API client is advised to
2554
+ cache the credential given this expiration time."""
2555
+
2556
+ gcp_oauth_token: Optional[GcpOauthToken] = None
2557
+ """GCP temporary credentials for API authentication. Read more at
2558
+ https://developers.google.com/identity/protocols/oauth2/service-account"""
2559
+
2560
+ r2_temp_credentials: Optional[R2Credentials] = None
2561
+ """R2 temporary credentials for API authentication. Read more at
2562
+ https://developers.cloudflare.com/r2/api/s3/tokens/."""
2563
+
2564
+ url: Optional[str] = None
2565
+ """The URL of the storage path accessible by the temporary credential."""
2566
+
2567
+ def as_dict(self) -> dict:
2568
+ """Serializes the GenerateTemporaryTableCredentialResponse into a dictionary suitable for use as a JSON request body."""
2569
+ body = {}
2570
+ if self.aws_temp_credentials: body['aws_temp_credentials'] = self.aws_temp_credentials.as_dict()
2571
+ if self.azure_user_delegation_sas:
2572
+ body['azure_user_delegation_sas'] = self.azure_user_delegation_sas.as_dict()
2573
+ if self.expiration_time is not None: body['expiration_time'] = self.expiration_time
2574
+ if self.gcp_oauth_token: body['gcp_oauth_token'] = self.gcp_oauth_token.as_dict()
2575
+ if self.r2_temp_credentials: body['r2_temp_credentials'] = self.r2_temp_credentials.as_dict()
2576
+ if self.url is not None: body['url'] = self.url
2577
+ return body
2578
+
2579
+ @classmethod
2580
+ def from_dict(cls, d: Dict[str, any]) -> GenerateTemporaryTableCredentialResponse:
2581
+ """Deserializes the GenerateTemporaryTableCredentialResponse from a dictionary."""
2582
+ return cls(aws_temp_credentials=_from_dict(d, 'aws_temp_credentials', AwsCredentials),
2583
+ azure_user_delegation_sas=_from_dict(d, 'azure_user_delegation_sas',
2584
+ AzureUserDelegationSas),
2585
+ expiration_time=d.get('expiration_time', None),
2586
+ gcp_oauth_token=_from_dict(d, 'gcp_oauth_token', GcpOauthToken),
2587
+ r2_temp_credentials=_from_dict(d, 'r2_temp_credentials', R2Credentials),
2588
+ url=d.get('url', None))
2589
+
2590
+
2441
2591
  class GetBindingsSecurableType(Enum):
2442
2592
 
2443
2593
  CATALOG = 'catalog'
@@ -2469,6 +2619,9 @@ class GetMetastoreSummaryResponse:
2469
2619
  delta_sharing_scope: Optional[GetMetastoreSummaryResponseDeltaSharingScope] = None
2470
2620
  """The scope of Delta Sharing enabled for the metastore."""
2471
2621
 
2622
+ external_access_enabled: Optional[bool] = None
2623
+ """Whether to allow non-DBR clients to directly access entities under the metastore."""
2624
+
2472
2625
  global_metastore_id: Optional[str] = None
2473
2626
  """Globally unique metastore ID across clouds and regions, of the form `cloud:region:metastore_id`."""
2474
2627
 
@@ -2516,6 +2669,8 @@ class GetMetastoreSummaryResponse:
2516
2669
  body[
2517
2670
  'delta_sharing_recipient_token_lifetime_in_seconds'] = self.delta_sharing_recipient_token_lifetime_in_seconds
2518
2671
  if self.delta_sharing_scope is not None: body['delta_sharing_scope'] = self.delta_sharing_scope.value
2672
+ if self.external_access_enabled is not None:
2673
+ body['external_access_enabled'] = self.external_access_enabled
2519
2674
  if self.global_metastore_id is not None: body['global_metastore_id'] = self.global_metastore_id
2520
2675
  if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
2521
2676
  if self.name is not None: body['name'] = self.name
@@ -2544,6 +2699,7 @@ class GetMetastoreSummaryResponse:
2544
2699
  'delta_sharing_recipient_token_lifetime_in_seconds', None),
2545
2700
  delta_sharing_scope=_enum(d, 'delta_sharing_scope',
2546
2701
  GetMetastoreSummaryResponseDeltaSharingScope),
2702
+ external_access_enabled=d.get('external_access_enabled', None),
2547
2703
  global_metastore_id=d.get('global_metastore_id', None),
2548
2704
  metastore_id=d.get('metastore_id', None),
2549
2705
  name=d.get('name', None),
@@ -2996,6 +3152,9 @@ class MetastoreInfo:
2996
3152
  delta_sharing_scope: Optional[MetastoreInfoDeltaSharingScope] = None
2997
3153
  """The scope of Delta Sharing enabled for the metastore."""
2998
3154
 
3155
+ external_access_enabled: Optional[bool] = None
3156
+ """Whether to allow non-DBR clients to directly access entities under the metastore."""
3157
+
2999
3158
  global_metastore_id: Optional[str] = None
3000
3159
  """Globally unique metastore ID across clouds and regions, of the form `cloud:region:metastore_id`."""
3001
3160
 
@@ -3043,6 +3202,8 @@ class MetastoreInfo:
3043
3202
  body[
3044
3203
  'delta_sharing_recipient_token_lifetime_in_seconds'] = self.delta_sharing_recipient_token_lifetime_in_seconds
3045
3204
  if self.delta_sharing_scope is not None: body['delta_sharing_scope'] = self.delta_sharing_scope.value
3205
+ if self.external_access_enabled is not None:
3206
+ body['external_access_enabled'] = self.external_access_enabled
3046
3207
  if self.global_metastore_id is not None: body['global_metastore_id'] = self.global_metastore_id
3047
3208
  if self.metastore_id is not None: body['metastore_id'] = self.metastore_id
3048
3209
  if self.name is not None: body['name'] = self.name
@@ -3070,6 +3231,7 @@ class MetastoreInfo:
3070
3231
  delta_sharing_recipient_token_lifetime_in_seconds=d.get(
3071
3232
  'delta_sharing_recipient_token_lifetime_in_seconds', None),
3072
3233
  delta_sharing_scope=_enum(d, 'delta_sharing_scope', MetastoreInfoDeltaSharingScope),
3234
+ external_access_enabled=d.get('external_access_enabled', None),
3073
3235
  global_metastore_id=d.get('global_metastore_id', None),
3074
3236
  metastore_id=d.get('metastore_id', None),
3075
3237
  name=d.get('name', None),
@@ -4151,6 +4313,36 @@ class QuotaInfo:
4151
4313
  quota_name=d.get('quota_name', None))
4152
4314
 
4153
4315
 
4316
+ @dataclass
4317
+ class R2Credentials:
4318
+ """R2 temporary credentials for API authentication. Read more at
4319
+ https://developers.cloudflare.com/r2/api/s3/tokens/."""
4320
+
4321
+ access_key_id: Optional[str] = None
4322
+ """The access key ID that identifies the temporary credentials."""
4323
+
4324
+ secret_access_key: Optional[str] = None
4325
+ """The secret access key associated with the access key."""
4326
+
4327
+ session_token: Optional[str] = None
4328
+ """The generated JWT that users must pass to use the temporary credentials."""
4329
+
4330
+ def as_dict(self) -> dict:
4331
+ """Serializes the R2Credentials into a dictionary suitable for use as a JSON request body."""
4332
+ body = {}
4333
+ if self.access_key_id is not None: body['access_key_id'] = self.access_key_id
4334
+ if self.secret_access_key is not None: body['secret_access_key'] = self.secret_access_key
4335
+ if self.session_token is not None: body['session_token'] = self.session_token
4336
+ return body
4337
+
4338
+ @classmethod
4339
+ def from_dict(cls, d: Dict[str, any]) -> R2Credentials:
4340
+ """Deserializes the R2Credentials from a dictionary."""
4341
+ return cls(access_key_id=d.get('access_key_id', None),
4342
+ secret_access_key=d.get('secret_access_key', None),
4343
+ session_token=d.get('session_token', None))
4344
+
4345
+
4154
4346
  @dataclass
4155
4347
  class RegenerateDashboardRequest:
4156
4348
  table_name: Optional[str] = None
@@ -4896,6 +5088,12 @@ class TableInfo:
4896
5088
  view_dependencies=_from_dict(d, 'view_dependencies', DependencyList))
4897
5089
 
4898
5090
 
5091
+ class TableOperation(Enum):
5092
+
5093
+ READ = 'READ'
5094
+ READ_WRITE = 'READ_WRITE'
5095
+
5096
+
4899
5097
  @dataclass
4900
5098
  class TableRowFilter:
4901
5099
  function_name: str
@@ -9135,7 +9333,8 @@ class TablesAPI:
9135
9333
  full_name: str,
9136
9334
  *,
9137
9335
  include_browse: Optional[bool] = None,
9138
- include_delta_metadata: Optional[bool] = None) -> TableInfo:
9336
+ include_delta_metadata: Optional[bool] = None,
9337
+ include_manifest_capabilities: Optional[bool] = None) -> TableInfo:
9139
9338
  """Get a table.
9140
9339
 
9141
9340
  Gets a table from the metastore for a specific catalog and schema. The caller must satisfy one of the
@@ -9151,6 +9350,8 @@ class TablesAPI:
9151
9350
  for
9152
9351
  :param include_delta_metadata: bool (optional)
9153
9352
  Whether delta metadata should be included in the response.
9353
+ :param include_manifest_capabilities: bool (optional)
9354
+ Whether to include a manifest containing capabilities the table has.
9154
9355
 
9155
9356
  :returns: :class:`TableInfo`
9156
9357
  """
@@ -9158,6 +9359,8 @@ class TablesAPI:
9158
9359
  query = {}
9159
9360
  if include_browse is not None: query['include_browse'] = include_browse
9160
9361
  if include_delta_metadata is not None: query['include_delta_metadata'] = include_delta_metadata
9362
+ if include_manifest_capabilities is not None:
9363
+ query['include_manifest_capabilities'] = include_manifest_capabilities
9161
9364
  headers = {'Accept': 'application/json', }
9162
9365
 
9163
9366
  res = self._api.do('GET', f'/api/2.1/unity-catalog/tables/{full_name}', query=query, headers=headers)
@@ -9169,6 +9372,7 @@ class TablesAPI:
9169
9372
  *,
9170
9373
  include_browse: Optional[bool] = None,
9171
9374
  include_delta_metadata: Optional[bool] = None,
9375
+ include_manifest_capabilities: Optional[bool] = None,
9172
9376
  max_results: Optional[int] = None,
9173
9377
  omit_columns: Optional[bool] = None,
9174
9378
  omit_properties: Optional[bool] = None,
@@ -9190,6 +9394,8 @@ class TablesAPI:
9190
9394
  for
9191
9395
  :param include_delta_metadata: bool (optional)
9192
9396
  Whether delta metadata should be included in the response.
9397
+ :param include_manifest_capabilities: bool (optional)
9398
+ Whether to include a manifest containing capabilities the table has.
9193
9399
  :param max_results: int (optional)
9194
9400
  Maximum number of tables to return. If not set, all the tables are returned (not recommended). -
9195
9401
  when set to a value greater than 0, the page length is the minimum of this value and a server
@@ -9209,6 +9415,8 @@ class TablesAPI:
9209
9415
  if catalog_name is not None: query['catalog_name'] = catalog_name
9210
9416
  if include_browse is not None: query['include_browse'] = include_browse
9211
9417
  if include_delta_metadata is not None: query['include_delta_metadata'] = include_delta_metadata
9418
+ if include_manifest_capabilities is not None:
9419
+ query['include_manifest_capabilities'] = include_manifest_capabilities
9212
9420
  if max_results is not None: query['max_results'] = max_results
9213
9421
  if omit_columns is not None: query['omit_columns'] = omit_columns
9214
9422
  if omit_properties is not None: query['omit_properties'] = omit_properties
@@ -9228,6 +9436,7 @@ class TablesAPI:
9228
9436
  def list_summaries(self,
9229
9437
  catalog_name: str,
9230
9438
  *,
9439
+ include_manifest_capabilities: Optional[bool] = None,
9231
9440
  max_results: Optional[int] = None,
9232
9441
  page_token: Optional[str] = None,
9233
9442
  schema_name_pattern: Optional[str] = None,
@@ -9247,6 +9456,8 @@ class TablesAPI:
9247
9456
 
9248
9457
  :param catalog_name: str
9249
9458
  Name of parent catalog for tables of interest.
9459
+ :param include_manifest_capabilities: bool (optional)
9460
+ Whether to include a manifest containing capabilities the table has.
9250
9461
  :param max_results: int (optional)
9251
9462
  Maximum number of summaries for tables to return. If not set, the page length is set to a server
9252
9463
  configured value (10000, as of 1/5/2024). - when set to a value greater than 0, the page length is
@@ -9265,6 +9476,8 @@ class TablesAPI:
9265
9476
 
9266
9477
  query = {}
9267
9478
  if catalog_name is not None: query['catalog_name'] = catalog_name
9479
+ if include_manifest_capabilities is not None:
9480
+ query['include_manifest_capabilities'] = include_manifest_capabilities
9268
9481
  if max_results is not None: query['max_results'] = max_results
9269
9482
  if page_token is not None: query['page_token'] = page_token
9270
9483
  if schema_name_pattern is not None: query['schema_name_pattern'] = schema_name_pattern
@@ -9301,6 +9514,55 @@ class TablesAPI:
9301
9514
  self._api.do('PATCH', f'/api/2.1/unity-catalog/tables/{full_name}', body=body, headers=headers)
9302
9515
 
9303
9516
 
9517
+ class TemporaryTableCredentialsAPI:
9518
+ """Temporary Table Credentials refer to short-lived, downscoped credentials used to access cloud storage
9519
+ locationswhere table data is stored in Databricks. These credentials are employed to provide secure and
9520
+ time-limitedaccess to data in cloud environments such as AWS, Azure, and Google Cloud. Each cloud provider
9521
+ has its own typeof credentials: AWS uses temporary session tokens via AWS Security Token Service (STS),
9522
+ Azure utilizesShared Access Signatures (SAS) for its data storage services, and Google Cloud supports
9523
+ temporary credentialsthrough OAuth 2.0.Temporary table credentials ensure that data access is limited in
9524
+ scope and duration, reducing the risk ofunauthorized access or misuse. To use the temporary table
9525
+ credentials API, a metastore admin needs to enable the external_access_enabled flag (off by default) at
9526
+ the metastore level, and user needs to be granted the EXTERNAL USE SCHEMA permission at the schema level
9527
+ by catalog admin. Note that EXTERNAL USE SCHEMA is a schema level permission that can only be granted by
9528
+ catalog admin explicitly and is not included in schema ownership or ALL PRIVILEGES on the schema for
9529
+ security reason."""
9530
+
9531
+ def __init__(self, api_client):
9532
+ self._api = api_client
9533
+
9534
+ def generate_temporary_table_credentials(
9535
+ self,
9536
+ *,
9537
+ operation: Optional[TableOperation] = None,
9538
+ table_id: Optional[str] = None) -> GenerateTemporaryTableCredentialResponse:
9539
+ """Generate a temporary table credential.
9540
+
9541
+ Get a short-lived credential for directly accessing the table data on cloud storage. The metastore
9542
+ must have external_access_enabled flag set to true (default false). The caller must have
9543
+ EXTERNAL_USE_SCHEMA privilege on the parent schema and this privilege can only be granted by catalog
9544
+ owners.
9545
+
9546
+ :param operation: :class:`TableOperation` (optional)
9547
+ The operation performed against the table data, either READ or READ_WRITE. If READ_WRITE is
9548
+ specified, the credentials returned will have write permissions, otherwise, it will be read only.
9549
+ :param table_id: str (optional)
9550
+ UUID of the table to read or write.
9551
+
9552
+ :returns: :class:`GenerateTemporaryTableCredentialResponse`
9553
+ """
9554
+ body = {}
9555
+ if operation is not None: body['operation'] = operation.value
9556
+ if table_id is not None: body['table_id'] = table_id
9557
+ headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
9558
+
9559
+ res = self._api.do('POST',
9560
+ '/api/2.0/unity-catalog/temporary-table-credentials',
9561
+ body=body,
9562
+ headers=headers)
9563
+ return GenerateTemporaryTableCredentialResponse.from_dict(res)
9564
+
9565
+
9304
9566
  class VolumesAPI:
9305
9567
  """Volumes are a Unity Catalog (UC) capability for accessing, storing, governing, organizing and processing
9306
9568
  files. Use cases include running machine learning on unstructured data such as image, audio, video, or PDF
@@ -598,8 +598,13 @@ class ClusterAttributes:
598
598
  """The ID of the cluster policy used to create the cluster if applicable."""
599
599
 
600
600
  runtime_engine: Optional[RuntimeEngine] = None
601
- """Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime
602
- engine is inferred from spark_version."""
601
+ """Determines the cluster's runtime engine, either standard or Photon.
602
+
603
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
604
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
605
+
606
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
607
+ -photon-, in which case Photon will be used."""
603
608
 
604
609
  single_user_name: Optional[str] = None
605
610
  """Single user name if data_security_mode is `SINGLE_USER`"""
@@ -882,8 +887,13 @@ class ClusterDetails:
882
887
  """The ID of the cluster policy used to create the cluster if applicable."""
883
888
 
884
889
  runtime_engine: Optional[RuntimeEngine] = None
885
- """Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime
886
- engine is inferred from spark_version."""
890
+ """Determines the cluster's runtime engine, either standard or Photon.
891
+
892
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
893
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
894
+
895
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
896
+ -photon-, in which case Photon will be used."""
887
897
 
888
898
  single_user_name: Optional[str] = None
889
899
  """Single user name if data_security_mode is `SINGLE_USER`"""
@@ -1596,8 +1606,13 @@ class ClusterSpec:
1596
1606
  """The ID of the cluster policy used to create the cluster if applicable."""
1597
1607
 
1598
1608
  runtime_engine: Optional[RuntimeEngine] = None
1599
- """Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime
1600
- engine is inferred from spark_version."""
1609
+ """Determines the cluster's runtime engine, either standard or Photon.
1610
+
1611
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
1612
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
1613
+
1614
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
1615
+ -photon-, in which case Photon will be used."""
1601
1616
 
1602
1617
  single_user_name: Optional[str] = None
1603
1618
  """Single user name if data_security_mode is `SINGLE_USER`"""
@@ -1912,8 +1927,13 @@ class CreateCluster:
1912
1927
  """The ID of the cluster policy used to create the cluster if applicable."""
1913
1928
 
1914
1929
  runtime_engine: Optional[RuntimeEngine] = None
1915
- """Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime
1916
- engine is inferred from spark_version."""
1930
+ """Determines the cluster's runtime engine, either standard or Photon.
1931
+
1932
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
1933
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
1934
+
1935
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
1936
+ -photon-, in which case Photon will be used."""
1917
1937
 
1918
1938
  single_user_name: Optional[str] = None
1919
1939
  """Single user name if data_security_mode is `SINGLE_USER`"""
@@ -2759,8 +2779,13 @@ class EditCluster:
2759
2779
  """The ID of the cluster policy used to create the cluster if applicable."""
2760
2780
 
2761
2781
  runtime_engine: Optional[RuntimeEngine] = None
2762
- """Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime
2763
- engine is inferred from spark_version."""
2782
+ """Determines the cluster's runtime engine, either standard or Photon.
2783
+
2784
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
2785
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
2786
+
2787
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
2788
+ -photon-, in which case Photon will be used."""
2764
2789
 
2765
2790
  single_user_name: Optional[str] = None
2766
2791
  """Single user name if data_security_mode is `SINGLE_USER`"""
@@ -5647,8 +5672,13 @@ class Results:
5647
5672
 
5648
5673
 
5649
5674
  class RuntimeEngine(Enum):
5650
- """Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime
5651
- engine is inferred from spark_version."""
5675
+ """Determines the cluster's runtime engine, either standard or Photon.
5676
+
5677
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
5678
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
5679
+
5680
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
5681
+ -photon-, in which case Photon will be used."""
5652
5682
 
5653
5683
  NULL = 'NULL'
5654
5684
  PHOTON = 'PHOTON'
@@ -6181,8 +6211,13 @@ class UpdateClusterResource:
6181
6211
  """The ID of the cluster policy used to create the cluster if applicable."""
6182
6212
 
6183
6213
  runtime_engine: Optional[RuntimeEngine] = None
6184
- """Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime
6185
- engine is inferred from spark_version."""
6214
+ """Determines the cluster's runtime engine, either standard or Photon.
6215
+
6216
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
6217
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
6218
+
6219
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
6220
+ -photon-, in which case Photon will be used."""
6186
6221
 
6187
6222
  single_user_name: Optional[str] = None
6188
6223
  """Single user name if data_security_mode is `SINGLE_USER`"""
@@ -6805,6 +6840,11 @@ class ClustersAPI:
6805
6840
  If Databricks acquires at least 85% of the requested on-demand nodes, cluster creation will succeed.
6806
6841
  Otherwise the cluster will terminate with an informative error message.
6807
6842
 
6843
+ Rather than authoring the cluster's JSON definition from scratch, Databricks recommends filling out
6844
+ the [create compute UI] and then copying the generated JSON definition from the UI.
6845
+
6846
+ [create compute UI]: https://docs.databricks.com/compute/configure.html
6847
+
6808
6848
  :param spark_version: str
6809
6849
  The Spark version of the cluster, e.g. `3.3.x-scala2.11`. A list of available Spark versions can be
6810
6850
  retrieved by using the :method:clusters/sparkVersions API call.
@@ -6900,8 +6940,13 @@ class ClustersAPI:
6900
6940
  :param policy_id: str (optional)
6901
6941
  The ID of the cluster policy used to create the cluster if applicable.
6902
6942
  :param runtime_engine: :class:`RuntimeEngine` (optional)
6903
- Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime engine
6904
- is inferred from spark_version.
6943
+ Determines the cluster's runtime engine, either standard or Photon.
6944
+
6945
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
6946
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
6947
+
6948
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
6949
+ -photon-, in which case Photon will be used.
6905
6950
  :param single_user_name: str (optional)
6906
6951
  Single user name if data_security_mode is `SINGLE_USER`
6907
6952
  :param spark_conf: Dict[str,str] (optional)
@@ -7194,8 +7239,13 @@ class ClustersAPI:
7194
7239
  :param policy_id: str (optional)
7195
7240
  The ID of the cluster policy used to create the cluster if applicable.
7196
7241
  :param runtime_engine: :class:`RuntimeEngine` (optional)
7197
- Decides which runtime engine to be use, e.g. Standard vs. Photon. If unspecified, the runtime engine
7198
- is inferred from spark_version.
7242
+ Determines the cluster's runtime engine, either standard or Photon.
7243
+
7244
+ This field is not compatible with legacy `spark_version` values that contain `-photon-`. Remove
7245
+ `-photon-` from the `spark_version` and set `runtime_engine` to `PHOTON`.
7246
+
7247
+ If left unspecified, the runtime engine defaults to standard unless the spark_version contains
7248
+ -photon-, in which case Photon will be used.
7199
7249
  :param single_user_name: str (optional)
7200
7250
  Single user name if data_security_mode is `SINGLE_USER`
7201
7251
  :param spark_conf: Dict[str,str] (optional)