databricks-sdk 0.20.0__py3-none-any.whl → 0.21.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 (33) hide show
  1. databricks/sdk/__init__.py +21 -6
  2. databricks/sdk/_widgets/__init__.py +2 -2
  3. databricks/sdk/config.py +3 -2
  4. databricks/sdk/oauth.py +1 -1
  5. databricks/sdk/runtime/__init__.py +85 -11
  6. databricks/sdk/runtime/dbutils_stub.py +1 -1
  7. databricks/sdk/service/_internal.py +1 -1
  8. databricks/sdk/service/billing.py +42 -0
  9. databricks/sdk/service/catalog.py +245 -44
  10. databricks/sdk/service/compute.py +334 -13
  11. databricks/sdk/service/dashboards.py +14 -0
  12. databricks/sdk/service/files.py +154 -12
  13. databricks/sdk/service/iam.py +161 -0
  14. databricks/sdk/service/jobs.py +95 -8
  15. databricks/sdk/service/ml.py +350 -0
  16. databricks/sdk/service/oauth2.py +70 -0
  17. databricks/sdk/service/pipelines.py +66 -8
  18. databricks/sdk/service/provisioning.py +78 -36
  19. databricks/sdk/service/serving.py +28 -0
  20. databricks/sdk/service/settings.py +1292 -203
  21. databricks/sdk/service/sharing.py +56 -0
  22. databricks/sdk/service/sql.py +138 -11
  23. databricks/sdk/service/vectorsearch.py +95 -60
  24. databricks/sdk/service/workspace.py +141 -1
  25. databricks/sdk/version.py +1 -1
  26. {databricks_sdk-0.20.0.dist-info → databricks_sdk-0.21.0.dist-info}/METADATA +3 -1
  27. databricks_sdk-0.21.0.dist-info/RECORD +53 -0
  28. databricks/sdk/runtime/stub.py +0 -48
  29. databricks_sdk-0.20.0.dist-info/RECORD +0 -54
  30. {databricks_sdk-0.20.0.dist-info → databricks_sdk-0.21.0.dist-info}/LICENSE +0 -0
  31. {databricks_sdk-0.20.0.dist-info → databricks_sdk-0.21.0.dist-info}/NOTICE +0 -0
  32. {databricks_sdk-0.20.0.dist-info → databricks_sdk-0.21.0.dist-info}/WHEEL +0 -0
  33. {databricks_sdk-0.20.0.dist-info → databricks_sdk-0.21.0.dist-info}/top_level.txt +0 -0
@@ -64,6 +64,20 @@ class AddInstanceProfile:
64
64
  skip_validation=d.get('skip_validation', None))
65
65
 
66
66
 
67
+ @dataclass
68
+ class AddResponse:
69
+
70
+ def as_dict(self) -> dict:
71
+ """Serializes the AddResponse into a dictionary suitable for use as a JSON request body."""
72
+ body = {}
73
+ return body
74
+
75
+ @classmethod
76
+ def from_dict(cls, d: Dict[str, any]) -> AddResponse:
77
+ """Deserializes the AddResponse from a dictionary."""
78
+ return cls()
79
+
80
+
67
81
  @dataclass
68
82
  class Adlsgen2Info:
69
83
  destination: str
@@ -130,7 +144,8 @@ class AwsAttributes:
130
144
  will be overridden."""
131
145
 
132
146
  ebs_volume_iops: Optional[int] = None
133
- """<needs content added>"""
147
+ """If using gp3 volumes, what IOPS to use for the disk. If this is not set, the maximum performance
148
+ of a gp2 volume with the same volume size will be used."""
134
149
 
135
150
  ebs_volume_size: Optional[int] = None
136
151
  """The size of each EBS volume (in GiB) launched for each instance. For general purpose SSD, this
@@ -138,7 +153,8 @@ class AwsAttributes:
138
153
  within the range 500 - 4096."""
139
154
 
140
155
  ebs_volume_throughput: Optional[int] = None
141
- """<needs content added>"""
156
+ """If using gp3 volumes, what throughput to use for the disk. If this is not set, the maximum
157
+ performance of a gp2 volume with the same volume size will be used."""
142
158
 
143
159
  ebs_volume_type: Optional[EbsVolumeType] = None
144
160
  """The type of EBS volumes that will be launched with this cluster."""
@@ -302,6 +318,20 @@ class CancelCommand:
302
318
  context_id=d.get('contextId', None))
303
319
 
304
320
 
321
+ @dataclass
322
+ class CancelResponse:
323
+
324
+ def as_dict(self) -> dict:
325
+ """Serializes the CancelResponse into a dictionary suitable for use as a JSON request body."""
326
+ body = {}
327
+ return body
328
+
329
+ @classmethod
330
+ def from_dict(cls, d: Dict[str, any]) -> CancelResponse:
331
+ """Deserializes the CancelResponse from a dictionary."""
332
+ return cls()
333
+
334
+
305
335
  @dataclass
306
336
  class ChangeClusterOwner:
307
337
  cluster_id: str
@@ -323,6 +353,20 @@ class ChangeClusterOwner:
323
353
  return cls(cluster_id=d.get('cluster_id', None), owner_username=d.get('owner_username', None))
324
354
 
325
355
 
356
+ @dataclass
357
+ class ChangeClusterOwnerResponse:
358
+
359
+ def as_dict(self) -> dict:
360
+ """Serializes the ChangeClusterOwnerResponse into a dictionary suitable for use as a JSON request body."""
361
+ body = {}
362
+ return body
363
+
364
+ @classmethod
365
+ def from_dict(cls, d: Dict[str, any]) -> ChangeClusterOwnerResponse:
366
+ """Deserializes the ChangeClusterOwnerResponse from a dictionary."""
367
+ return cls()
368
+
369
+
326
370
  @dataclass
327
371
  class ClientsTypes:
328
372
  jobs: Optional[bool] = None
@@ -2263,6 +2307,20 @@ class DeleteCluster:
2263
2307
  return cls(cluster_id=d.get('cluster_id', None))
2264
2308
 
2265
2309
 
2310
+ @dataclass
2311
+ class DeleteClusterResponse:
2312
+
2313
+ def as_dict(self) -> dict:
2314
+ """Serializes the DeleteClusterResponse into a dictionary suitable for use as a JSON request body."""
2315
+ body = {}
2316
+ return body
2317
+
2318
+ @classmethod
2319
+ def from_dict(cls, d: Dict[str, any]) -> DeleteClusterResponse:
2320
+ """Deserializes the DeleteClusterResponse from a dictionary."""
2321
+ return cls()
2322
+
2323
+
2266
2324
  @dataclass
2267
2325
  class DeleteInstancePool:
2268
2326
  instance_pool_id: str
@@ -2280,6 +2338,20 @@ class DeleteInstancePool:
2280
2338
  return cls(instance_pool_id=d.get('instance_pool_id', None))
2281
2339
 
2282
2340
 
2341
+ @dataclass
2342
+ class DeleteInstancePoolResponse:
2343
+
2344
+ def as_dict(self) -> dict:
2345
+ """Serializes the DeleteInstancePoolResponse into a dictionary suitable for use as a JSON request body."""
2346
+ body = {}
2347
+ return body
2348
+
2349
+ @classmethod
2350
+ def from_dict(cls, d: Dict[str, any]) -> DeleteInstancePoolResponse:
2351
+ """Deserializes the DeleteInstancePoolResponse from a dictionary."""
2352
+ return cls()
2353
+
2354
+
2283
2355
  @dataclass
2284
2356
  class DeletePolicy:
2285
2357
  policy_id: str
@@ -2297,6 +2369,34 @@ class DeletePolicy:
2297
2369
  return cls(policy_id=d.get('policy_id', None))
2298
2370
 
2299
2371
 
2372
+ @dataclass
2373
+ class DeletePolicyResponse:
2374
+
2375
+ def as_dict(self) -> dict:
2376
+ """Serializes the DeletePolicyResponse into a dictionary suitable for use as a JSON request body."""
2377
+ body = {}
2378
+ return body
2379
+
2380
+ @classmethod
2381
+ def from_dict(cls, d: Dict[str, any]) -> DeletePolicyResponse:
2382
+ """Deserializes the DeletePolicyResponse from a dictionary."""
2383
+ return cls()
2384
+
2385
+
2386
+ @dataclass
2387
+ class DeleteResponse:
2388
+
2389
+ def as_dict(self) -> dict:
2390
+ """Serializes the DeleteResponse into a dictionary suitable for use as a JSON request body."""
2391
+ body = {}
2392
+ return body
2393
+
2394
+ @classmethod
2395
+ def from_dict(cls, d: Dict[str, any]) -> DeleteResponse:
2396
+ """Deserializes the DeleteResponse from a dictionary."""
2397
+ return cls()
2398
+
2399
+
2300
2400
  @dataclass
2301
2401
  class DestroyContext:
2302
2402
  cluster_id: str
@@ -2316,6 +2416,20 @@ class DestroyContext:
2316
2416
  return cls(cluster_id=d.get('clusterId', None), context_id=d.get('contextId', None))
2317
2417
 
2318
2418
 
2419
+ @dataclass
2420
+ class DestroyResponse:
2421
+
2422
+ def as_dict(self) -> dict:
2423
+ """Serializes the DestroyResponse into a dictionary suitable for use as a JSON request body."""
2424
+ body = {}
2425
+ return body
2426
+
2427
+ @classmethod
2428
+ def from_dict(cls, d: Dict[str, any]) -> DestroyResponse:
2429
+ """Deserializes the DestroyResponse from a dictionary."""
2430
+ return cls()
2431
+
2432
+
2319
2433
  @dataclass
2320
2434
  class DiskSpec:
2321
2435
  disk_count: Optional[int] = None
@@ -2670,6 +2784,20 @@ class EditCluster:
2670
2784
  workload_type=_from_dict(d, 'workload_type', WorkloadType))
2671
2785
 
2672
2786
 
2787
+ @dataclass
2788
+ class EditClusterResponse:
2789
+
2790
+ def as_dict(self) -> dict:
2791
+ """Serializes the EditClusterResponse into a dictionary suitable for use as a JSON request body."""
2792
+ body = {}
2793
+ return body
2794
+
2795
+ @classmethod
2796
+ def from_dict(cls, d: Dict[str, any]) -> EditClusterResponse:
2797
+ """Deserializes the EditClusterResponse from a dictionary."""
2798
+ return cls()
2799
+
2800
+
2673
2801
  @dataclass
2674
2802
  class EditInstancePool:
2675
2803
  instance_pool_id: str
@@ -2731,6 +2859,20 @@ class EditInstancePool:
2731
2859
  node_type_id=d.get('node_type_id', None))
2732
2860
 
2733
2861
 
2862
+ @dataclass
2863
+ class EditInstancePoolResponse:
2864
+
2865
+ def as_dict(self) -> dict:
2866
+ """Serializes the EditInstancePoolResponse into a dictionary suitable for use as a JSON request body."""
2867
+ body = {}
2868
+ return body
2869
+
2870
+ @classmethod
2871
+ def from_dict(cls, d: Dict[str, any]) -> EditInstancePoolResponse:
2872
+ """Deserializes the EditInstancePoolResponse from a dictionary."""
2873
+ return cls()
2874
+
2875
+
2734
2876
  @dataclass
2735
2877
  class EditPolicy:
2736
2878
  policy_id: str
@@ -2799,6 +2941,34 @@ class EditPolicy:
2799
2941
  policy_id=d.get('policy_id', None))
2800
2942
 
2801
2943
 
2944
+ @dataclass
2945
+ class EditPolicyResponse:
2946
+
2947
+ def as_dict(self) -> dict:
2948
+ """Serializes the EditPolicyResponse into a dictionary suitable for use as a JSON request body."""
2949
+ body = {}
2950
+ return body
2951
+
2952
+ @classmethod
2953
+ def from_dict(cls, d: Dict[str, any]) -> EditPolicyResponse:
2954
+ """Deserializes the EditPolicyResponse from a dictionary."""
2955
+ return cls()
2956
+
2957
+
2958
+ @dataclass
2959
+ class EditResponse:
2960
+
2961
+ def as_dict(self) -> dict:
2962
+ """Serializes the EditResponse into a dictionary suitable for use as a JSON request body."""
2963
+ body = {}
2964
+ return body
2965
+
2966
+ @classmethod
2967
+ def from_dict(cls, d: Dict[str, any]) -> EditResponse:
2968
+ """Deserializes the EditResponse from a dictionary."""
2969
+ return cls()
2970
+
2971
+
2802
2972
  @dataclass
2803
2973
  class EventDetails:
2804
2974
  attributes: Optional[ClusterAttributes] = None
@@ -3686,6 +3856,20 @@ class InstallLibraries:
3686
3856
  return cls(cluster_id=d.get('cluster_id', None), libraries=_repeated_dict(d, 'libraries', Library))
3687
3857
 
3688
3858
 
3859
+ @dataclass
3860
+ class InstallLibrariesResponse:
3861
+
3862
+ def as_dict(self) -> dict:
3863
+ """Serializes the InstallLibrariesResponse into a dictionary suitable for use as a JSON request body."""
3864
+ body = {}
3865
+ return body
3866
+
3867
+ @classmethod
3868
+ def from_dict(cls, d: Dict[str, any]) -> InstallLibrariesResponse:
3869
+ """Deserializes the InstallLibrariesResponse from a dictionary."""
3870
+ return cls()
3871
+
3872
+
3689
3873
  @dataclass
3690
3874
  class InstancePoolAccessControlRequest:
3691
3875
  group_name: Optional[str] = None
@@ -4763,6 +4947,20 @@ class PermanentDeleteCluster:
4763
4947
  return cls(cluster_id=d.get('cluster_id', None))
4764
4948
 
4765
4949
 
4950
+ @dataclass
4951
+ class PermanentDeleteClusterResponse:
4952
+
4953
+ def as_dict(self) -> dict:
4954
+ """Serializes the PermanentDeleteClusterResponse into a dictionary suitable for use as a JSON request body."""
4955
+ body = {}
4956
+ return body
4957
+
4958
+ @classmethod
4959
+ def from_dict(cls, d: Dict[str, any]) -> PermanentDeleteClusterResponse:
4960
+ """Deserializes the PermanentDeleteClusterResponse from a dictionary."""
4961
+ return cls()
4962
+
4963
+
4766
4964
  @dataclass
4767
4965
  class PinCluster:
4768
4966
  cluster_id: str
@@ -4780,6 +4978,20 @@ class PinCluster:
4780
4978
  return cls(cluster_id=d.get('cluster_id', None))
4781
4979
 
4782
4980
 
4981
+ @dataclass
4982
+ class PinClusterResponse:
4983
+
4984
+ def as_dict(self) -> dict:
4985
+ """Serializes the PinClusterResponse into a dictionary suitable for use as a JSON request body."""
4986
+ body = {}
4987
+ return body
4988
+
4989
+ @classmethod
4990
+ def from_dict(cls, d: Dict[str, any]) -> PinClusterResponse:
4991
+ """Deserializes the PinClusterResponse from a dictionary."""
4992
+ return cls()
4993
+
4994
+
4783
4995
  @dataclass
4784
4996
  class Policy:
4785
4997
  created_at_timestamp: Optional[int] = None
@@ -4955,6 +5167,20 @@ class RemoveInstanceProfile:
4955
5167
  return cls(instance_profile_arn=d.get('instance_profile_arn', None))
4956
5168
 
4957
5169
 
5170
+ @dataclass
5171
+ class RemoveResponse:
5172
+
5173
+ def as_dict(self) -> dict:
5174
+ """Serializes the RemoveResponse into a dictionary suitable for use as a JSON request body."""
5175
+ body = {}
5176
+ return body
5177
+
5178
+ @classmethod
5179
+ def from_dict(cls, d: Dict[str, any]) -> RemoveResponse:
5180
+ """Deserializes the RemoveResponse from a dictionary."""
5181
+ return cls()
5182
+
5183
+
4958
5184
  @dataclass
4959
5185
  class ResizeCluster:
4960
5186
  cluster_id: str
@@ -4990,6 +5216,20 @@ class ResizeCluster:
4990
5216
  num_workers=d.get('num_workers', None))
4991
5217
 
4992
5218
 
5219
+ @dataclass
5220
+ class ResizeClusterResponse:
5221
+
5222
+ def as_dict(self) -> dict:
5223
+ """Serializes the ResizeClusterResponse into a dictionary suitable for use as a JSON request body."""
5224
+ body = {}
5225
+ return body
5226
+
5227
+ @classmethod
5228
+ def from_dict(cls, d: Dict[str, any]) -> ResizeClusterResponse:
5229
+ """Deserializes the ResizeClusterResponse from a dictionary."""
5230
+ return cls()
5231
+
5232
+
4993
5233
  @dataclass
4994
5234
  class RestartCluster:
4995
5235
  cluster_id: str
@@ -5011,6 +5251,20 @@ class RestartCluster:
5011
5251
  return cls(cluster_id=d.get('cluster_id', None), restart_user=d.get('restart_user', None))
5012
5252
 
5013
5253
 
5254
+ @dataclass
5255
+ class RestartClusterResponse:
5256
+
5257
+ def as_dict(self) -> dict:
5258
+ """Serializes the RestartClusterResponse into a dictionary suitable for use as a JSON request body."""
5259
+ body = {}
5260
+ return body
5261
+
5262
+ @classmethod
5263
+ def from_dict(cls, d: Dict[str, any]) -> RestartClusterResponse:
5264
+ """Deserializes the RestartClusterResponse from a dictionary."""
5265
+ return cls()
5266
+
5267
+
5014
5268
  class ResultType(Enum):
5015
5269
 
5016
5270
  ERROR = 'error'
@@ -5261,6 +5515,20 @@ class StartCluster:
5261
5515
  return cls(cluster_id=d.get('cluster_id', None))
5262
5516
 
5263
5517
 
5518
+ @dataclass
5519
+ class StartClusterResponse:
5520
+
5521
+ def as_dict(self) -> dict:
5522
+ """Serializes the StartClusterResponse into a dictionary suitable for use as a JSON request body."""
5523
+ body = {}
5524
+ return body
5525
+
5526
+ @classmethod
5527
+ def from_dict(cls, d: Dict[str, any]) -> StartClusterResponse:
5528
+ """Deserializes the StartClusterResponse from a dictionary."""
5529
+ return cls()
5530
+
5531
+
5264
5532
  class State(Enum):
5265
5533
  """Current state of the cluster."""
5266
5534
 
@@ -5415,6 +5683,20 @@ class UninstallLibraries:
5415
5683
  return cls(cluster_id=d.get('cluster_id', None), libraries=_repeated_dict(d, 'libraries', Library))
5416
5684
 
5417
5685
 
5686
+ @dataclass
5687
+ class UninstallLibrariesResponse:
5688
+
5689
+ def as_dict(self) -> dict:
5690
+ """Serializes the UninstallLibrariesResponse into a dictionary suitable for use as a JSON request body."""
5691
+ body = {}
5692
+ return body
5693
+
5694
+ @classmethod
5695
+ def from_dict(cls, d: Dict[str, any]) -> UninstallLibrariesResponse:
5696
+ """Deserializes the UninstallLibrariesResponse from a dictionary."""
5697
+ return cls()
5698
+
5699
+
5418
5700
  @dataclass
5419
5701
  class UnpinCluster:
5420
5702
  cluster_id: str
@@ -5432,6 +5714,34 @@ class UnpinCluster:
5432
5714
  return cls(cluster_id=d.get('cluster_id', None))
5433
5715
 
5434
5716
 
5717
+ @dataclass
5718
+ class UnpinClusterResponse:
5719
+
5720
+ def as_dict(self) -> dict:
5721
+ """Serializes the UnpinClusterResponse into a dictionary suitable for use as a JSON request body."""
5722
+ body = {}
5723
+ return body
5724
+
5725
+ @classmethod
5726
+ def from_dict(cls, d: Dict[str, any]) -> UnpinClusterResponse:
5727
+ """Deserializes the UnpinClusterResponse from a dictionary."""
5728
+ return cls()
5729
+
5730
+
5731
+ @dataclass
5732
+ class UpdateResponse:
5733
+
5734
+ def as_dict(self) -> dict:
5735
+ """Serializes the UpdateResponse into a dictionary suitable for use as a JSON request body."""
5736
+ body = {}
5737
+ return body
5738
+
5739
+ @classmethod
5740
+ def from_dict(cls, d: Dict[str, any]) -> UpdateResponse:
5741
+ """Deserializes the UpdateResponse from a dictionary."""
5742
+ return cls()
5743
+
5744
+
5435
5745
  @dataclass
5436
5746
  class VolumesStorageInfo:
5437
5747
  destination: str
@@ -6164,8 +6474,10 @@ class ClustersAPI:
6164
6474
  if cluster_id is not None: body['cluster_id'] = cluster_id
6165
6475
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
6166
6476
 
6167
- self._api.do('POST', '/api/2.0/clusters/delete', body=body, headers=headers)
6168
- return Wait(self.wait_get_cluster_terminated, cluster_id=cluster_id)
6477
+ op_response = self._api.do('POST', '/api/2.0/clusters/delete', body=body, headers=headers)
6478
+ return Wait(self.wait_get_cluster_terminated,
6479
+ response=DeleteClusterResponse.from_dict(op_response),
6480
+ cluster_id=cluster_id)
6169
6481
 
6170
6482
  def delete_and_wait(self, cluster_id: str, timeout=timedelta(minutes=20)) -> ClusterDetails:
6171
6483
  return self.delete(cluster_id=cluster_id).result(timeout=timeout)
@@ -6369,8 +6681,10 @@ class ClustersAPI:
6369
6681
  if workload_type is not None: body['workload_type'] = workload_type.as_dict()
6370
6682
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
6371
6683
 
6372
- self._api.do('POST', '/api/2.0/clusters/edit', body=body, headers=headers)
6373
- return Wait(self.wait_get_cluster_running, cluster_id=cluster_id)
6684
+ op_response = self._api.do('POST', '/api/2.0/clusters/edit', body=body, headers=headers)
6685
+ return Wait(self.wait_get_cluster_running,
6686
+ response=EditClusterResponse.from_dict(op_response),
6687
+ cluster_id=cluster_id)
6374
6688
 
6375
6689
  def edit_and_wait(
6376
6690
  self,
@@ -6668,8 +6982,10 @@ class ClustersAPI:
6668
6982
  if num_workers is not None: body['num_workers'] = num_workers
6669
6983
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
6670
6984
 
6671
- self._api.do('POST', '/api/2.0/clusters/resize', body=body, headers=headers)
6672
- return Wait(self.wait_get_cluster_running, cluster_id=cluster_id)
6985
+ op_response = self._api.do('POST', '/api/2.0/clusters/resize', body=body, headers=headers)
6986
+ return Wait(self.wait_get_cluster_running,
6987
+ response=ResizeClusterResponse.from_dict(op_response),
6988
+ cluster_id=cluster_id)
6673
6989
 
6674
6990
  def resize_and_wait(self,
6675
6991
  cluster_id: str,
@@ -6700,8 +7016,10 @@ class ClustersAPI:
6700
7016
  if restart_user is not None: body['restart_user'] = restart_user
6701
7017
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
6702
7018
 
6703
- self._api.do('POST', '/api/2.0/clusters/restart', body=body, headers=headers)
6704
- return Wait(self.wait_get_cluster_running, cluster_id=cluster_id)
7019
+ op_response = self._api.do('POST', '/api/2.0/clusters/restart', body=body, headers=headers)
7020
+ return Wait(self.wait_get_cluster_running,
7021
+ response=RestartClusterResponse.from_dict(op_response),
7022
+ cluster_id=cluster_id)
6705
7023
 
6706
7024
  def restart_and_wait(self,
6707
7025
  cluster_id: str,
@@ -6767,8 +7085,10 @@ class ClustersAPI:
6767
7085
  if cluster_id is not None: body['cluster_id'] = cluster_id
6768
7086
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
6769
7087
 
6770
- self._api.do('POST', '/api/2.0/clusters/start', body=body, headers=headers)
6771
- return Wait(self.wait_get_cluster_running, cluster_id=cluster_id)
7088
+ op_response = self._api.do('POST', '/api/2.0/clusters/start', body=body, headers=headers)
7089
+ return Wait(self.wait_get_cluster_running,
7090
+ response=StartClusterResponse.from_dict(op_response),
7091
+ cluster_id=cluster_id)
6772
7092
 
6773
7093
  def start_and_wait(self, cluster_id: str, timeout=timedelta(minutes=20)) -> ClusterDetails:
6774
7094
  return self.start(cluster_id=cluster_id).result(timeout=timeout)
@@ -6946,8 +7266,9 @@ class CommandExecutionAPI:
6946
7266
  if context_id is not None: body['contextId'] = context_id
6947
7267
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
6948
7268
 
6949
- self._api.do('POST', '/api/1.2/commands/cancel', body=body, headers=headers)
7269
+ op_response = self._api.do('POST', '/api/1.2/commands/cancel', body=body, headers=headers)
6950
7270
  return Wait(self.wait_command_status_command_execution_cancelled,
7271
+ response=CancelResponse.from_dict(op_response),
6951
7272
  cluster_id=cluster_id,
6952
7273
  command_id=command_id,
6953
7274
  context_id=context_id)
@@ -39,6 +39,20 @@ class PublishRequest:
39
39
  warehouse_id=d.get('warehouse_id', None))
40
40
 
41
41
 
42
+ @dataclass
43
+ class PublishResponse:
44
+
45
+ def as_dict(self) -> dict:
46
+ """Serializes the PublishResponse into a dictionary suitable for use as a JSON request body."""
47
+ body = {}
48
+ return body
49
+
50
+ @classmethod
51
+ def from_dict(cls, d: Dict[str, any]) -> PublishResponse:
52
+ """Deserializes the PublishResponse from a dictionary."""
53
+ return cls()
54
+
55
+
42
56
  class LakeviewAPI:
43
57
  """These APIs provide specific management operations for Lakeview dashboards. Generic resource management can
44
58
  be done with Workspace API (import, export, get-status, list, delete)."""