databricks-sdk 0.19.1__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 (35) hide show
  1. databricks/sdk/__init__.py +28 -6
  2. databricks/sdk/_widgets/__init__.py +2 -2
  3. databricks/sdk/config.py +3 -2
  4. databricks/sdk/core.py +4 -2
  5. databricks/sdk/mixins/workspace.py +2 -1
  6. databricks/sdk/oauth.py +1 -1
  7. databricks/sdk/runtime/__init__.py +85 -11
  8. databricks/sdk/runtime/dbutils_stub.py +1 -1
  9. databricks/sdk/service/_internal.py +1 -1
  10. databricks/sdk/service/billing.py +64 -1
  11. databricks/sdk/service/catalog.py +796 -84
  12. databricks/sdk/service/compute.py +391 -13
  13. databricks/sdk/service/dashboards.py +15 -0
  14. databricks/sdk/service/files.py +289 -15
  15. databricks/sdk/service/iam.py +214 -0
  16. databricks/sdk/service/jobs.py +242 -143
  17. databricks/sdk/service/ml.py +407 -0
  18. databricks/sdk/service/oauth2.py +83 -0
  19. databricks/sdk/service/pipelines.py +78 -8
  20. databricks/sdk/service/provisioning.py +108 -36
  21. databricks/sdk/service/serving.py +101 -35
  22. databricks/sdk/service/settings.py +1316 -186
  23. databricks/sdk/service/sharing.py +94 -18
  24. databricks/sdk/service/sql.py +230 -13
  25. databricks/sdk/service/vectorsearch.py +105 -60
  26. databricks/sdk/service/workspace.py +175 -1
  27. databricks/sdk/version.py +1 -1
  28. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/METADATA +3 -1
  29. databricks_sdk-0.21.0.dist-info/RECORD +53 -0
  30. databricks/sdk/runtime/stub.py +0 -48
  31. databricks_sdk-0.19.1.dist-info/RECORD +0 -54
  32. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/LICENSE +0 -0
  33. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/NOTICE +0 -0
  34. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/WHEEL +0 -0
  35. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/top_level.txt +0 -0
@@ -597,6 +597,20 @@ class CustomerManagedKey:
597
597
  use_cases=_repeated_enum(d, 'use_cases', KeyUseCase))
598
598
 
599
599
 
600
+ @dataclass
601
+ class DeleteResponse:
602
+
603
+ def as_dict(self) -> dict:
604
+ """Serializes the DeleteResponse into a dictionary suitable for use as a JSON request body."""
605
+ body = {}
606
+ return body
607
+
608
+ @classmethod
609
+ def from_dict(cls, d: Dict[str, any]) -> DeleteResponse:
610
+ """Deserializes the DeleteResponse from a dictionary."""
611
+ return cls()
612
+
613
+
600
614
  class EndpointUseCase(Enum):
601
615
  """This enumeration represents the type of Databricks VPC [endpoint service] that was used when
602
616
  creating this VPC endpoint.
@@ -1062,6 +1076,20 @@ class PrivateAccessSettings:
1062
1076
  region=d.get('region', None))
1063
1077
 
1064
1078
 
1079
+ @dataclass
1080
+ class ReplaceResponse:
1081
+
1082
+ def as_dict(self) -> dict:
1083
+ """Serializes the ReplaceResponse into a dictionary suitable for use as a JSON request body."""
1084
+ body = {}
1085
+ return body
1086
+
1087
+ @classmethod
1088
+ def from_dict(cls, d: Dict[str, any]) -> ReplaceResponse:
1089
+ """Deserializes the ReplaceResponse from a dictionary."""
1090
+ return cls()
1091
+
1092
+
1065
1093
  @dataclass
1066
1094
  class RootBucketInfo:
1067
1095
  """Root S3 bucket information."""
@@ -1142,6 +1170,20 @@ class StsRole:
1142
1170
  return cls(external_id=d.get('external_id', None), role_arn=d.get('role_arn', None))
1143
1171
 
1144
1172
 
1173
+ @dataclass
1174
+ class UpdateResponse:
1175
+
1176
+ def as_dict(self) -> dict:
1177
+ """Serializes the UpdateResponse into a dictionary suitable for use as a JSON request body."""
1178
+ body = {}
1179
+ return body
1180
+
1181
+ @classmethod
1182
+ def from_dict(cls, d: Dict[str, any]) -> UpdateResponse:
1183
+ """Deserializes the UpdateResponse from a dictionary."""
1184
+ return cls()
1185
+
1186
+
1145
1187
  @dataclass
1146
1188
  class UpdateWorkspaceRequest:
1147
1189
  aws_region: Optional[str] = None
@@ -1162,8 +1204,6 @@ class UpdateWorkspaceRequest:
1162
1204
  is available only for updating failed workspaces."""
1163
1205
 
1164
1206
  network_connectivity_config_id: Optional[str] = None
1165
- """The ID of the network connectivity configuration object, which is the parent resource of this
1166
- private endpoint rule object."""
1167
1207
 
1168
1208
  network_id: Optional[str] = None
1169
1209
  """The ID of the workspace's network configuration object. Used only if you already use a
@@ -1581,6 +1621,7 @@ class CredentialsAPI:
1581
1621
  if aws_credentials is not None: body['aws_credentials'] = aws_credentials.as_dict()
1582
1622
  if credentials_name is not None: body['credentials_name'] = credentials_name
1583
1623
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1624
+
1584
1625
  res = self._api.do('POST',
1585
1626
  f'/api/2.0/accounts/{self._api.account_id}/credentials',
1586
1627
  body=body,
@@ -1600,6 +1641,7 @@ class CredentialsAPI:
1600
1641
  """
1601
1642
 
1602
1643
  headers = {'Accept': 'application/json', }
1644
+
1603
1645
  self._api.do('DELETE',
1604
1646
  f'/api/2.0/accounts/{self._api.account_id}/credentials/{credentials_id}',
1605
1647
  headers=headers)
@@ -1616,6 +1658,7 @@ class CredentialsAPI:
1616
1658
  """
1617
1659
 
1618
1660
  headers = {'Accept': 'application/json', }
1661
+
1619
1662
  res = self._api.do('GET',
1620
1663
  f'/api/2.0/accounts/{self._api.account_id}/credentials/{credentials_id}',
1621
1664
  headers=headers)
@@ -1630,6 +1673,7 @@ class CredentialsAPI:
1630
1673
  """
1631
1674
 
1632
1675
  headers = {'Accept': 'application/json', }
1676
+
1633
1677
  res = self._api.do('GET', f'/api/2.0/accounts/{self._api.account_id}/credentials', headers=headers)
1634
1678
  return [Credential.from_dict(v) for v in res]
1635
1679
 
@@ -1685,6 +1729,7 @@ class EncryptionKeysAPI:
1685
1729
  if gcp_key_info is not None: body['gcp_key_info'] = gcp_key_info.as_dict()
1686
1730
  if use_cases is not None: body['use_cases'] = [v.value for v in use_cases]
1687
1731
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1732
+
1688
1733
  res = self._api.do('POST',
1689
1734
  f'/api/2.0/accounts/{self._api.account_id}/customer-managed-keys',
1690
1735
  body=body,
@@ -1704,6 +1749,7 @@ class EncryptionKeysAPI:
1704
1749
  """
1705
1750
 
1706
1751
  headers = {'Accept': 'application/json', }
1752
+
1707
1753
  self._api.do(
1708
1754
  'DELETE',
1709
1755
  f'/api/2.0/accounts/{self._api.account_id}/customer-managed-keys/{customer_managed_key_id}',
@@ -1732,6 +1778,7 @@ class EncryptionKeysAPI:
1732
1778
  """
1733
1779
 
1734
1780
  headers = {'Accept': 'application/json', }
1781
+
1735
1782
  res = self._api.do(
1736
1783
  'GET',
1737
1784
  f'/api/2.0/accounts/{self._api.account_id}/customer-managed-keys/{customer_managed_key_id}',
@@ -1756,6 +1803,7 @@ class EncryptionKeysAPI:
1756
1803
  """
1757
1804
 
1758
1805
  headers = {'Accept': 'application/json', }
1806
+
1759
1807
  res = self._api.do('GET',
1760
1808
  f'/api/2.0/accounts/{self._api.account_id}/customer-managed-keys',
1761
1809
  headers=headers)
@@ -1812,6 +1860,7 @@ class NetworksAPI:
1812
1860
  if vpc_endpoints is not None: body['vpc_endpoints'] = vpc_endpoints.as_dict()
1813
1861
  if vpc_id is not None: body['vpc_id'] = vpc_id
1814
1862
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1863
+
1815
1864
  res = self._api.do('POST',
1816
1865
  f'/api/2.0/accounts/{self._api.account_id}/networks',
1817
1866
  body=body,
@@ -1833,6 +1882,7 @@ class NetworksAPI:
1833
1882
  """
1834
1883
 
1835
1884
  headers = {'Accept': 'application/json', }
1885
+
1836
1886
  self._api.do('DELETE',
1837
1887
  f'/api/2.0/accounts/{self._api.account_id}/networks/{network_id}',
1838
1888
  headers=headers)
@@ -1849,6 +1899,7 @@ class NetworksAPI:
1849
1899
  """
1850
1900
 
1851
1901
  headers = {'Accept': 'application/json', }
1902
+
1852
1903
  res = self._api.do('GET',
1853
1904
  f'/api/2.0/accounts/{self._api.account_id}/networks/{network_id}',
1854
1905
  headers=headers)
@@ -1865,6 +1916,7 @@ class NetworksAPI:
1865
1916
  """
1866
1917
 
1867
1918
  headers = {'Accept': 'application/json', }
1919
+
1868
1920
  res = self._api.do('GET', f'/api/2.0/accounts/{self._api.account_id}/networks', headers=headers)
1869
1921
  return [Network.from_dict(v) for v in res]
1870
1922
 
@@ -1936,6 +1988,7 @@ class PrivateAccessAPI:
1936
1988
  if public_access_enabled is not None: body['public_access_enabled'] = public_access_enabled
1937
1989
  if region is not None: body['region'] = region
1938
1990
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1991
+
1939
1992
  res = self._api.do('POST',
1940
1993
  f'/api/2.0/accounts/{self._api.account_id}/private-access-settings',
1941
1994
  body=body,
@@ -1960,6 +2013,7 @@ class PrivateAccessAPI:
1960
2013
  """
1961
2014
 
1962
2015
  headers = {'Accept': 'application/json', }
2016
+
1963
2017
  self._api.do(
1964
2018
  'DELETE',
1965
2019
  f'/api/2.0/accounts/{self._api.account_id}/private-access-settings/{private_access_settings_id}',
@@ -1983,6 +2037,7 @@ class PrivateAccessAPI:
1983
2037
  """
1984
2038
 
1985
2039
  headers = {'Accept': 'application/json', }
2040
+
1986
2041
  res = self._api.do(
1987
2042
  'GET',
1988
2043
  f'/api/2.0/accounts/{self._api.account_id}/private-access-settings/{private_access_settings_id}',
@@ -1998,6 +2053,7 @@ class PrivateAccessAPI:
1998
2053
  """
1999
2054
 
2000
2055
  headers = {'Accept': 'application/json', }
2056
+
2001
2057
  res = self._api.do('GET',
2002
2058
  f'/api/2.0/accounts/{self._api.account_id}/private-access-settings',
2003
2059
  headers=headers)
@@ -2072,6 +2128,7 @@ class PrivateAccessAPI:
2072
2128
  if public_access_enabled is not None: body['public_access_enabled'] = public_access_enabled
2073
2129
  if region is not None: body['region'] = region
2074
2130
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2131
+
2075
2132
  self._api.do(
2076
2133
  'PUT',
2077
2134
  f'/api/2.0/accounts/{self._api.account_id}/private-access-settings/{private_access_settings_id}',
@@ -2114,6 +2171,7 @@ class StorageAPI:
2114
2171
  if storage_configuration_name is not None:
2115
2172
  body['storage_configuration_name'] = storage_configuration_name
2116
2173
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2174
+
2117
2175
  res = self._api.do('POST',
2118
2176
  f'/api/2.0/accounts/{self._api.account_id}/storage-configurations',
2119
2177
  body=body,
@@ -2133,6 +2191,7 @@ class StorageAPI:
2133
2191
  """
2134
2192
 
2135
2193
  headers = {'Accept': 'application/json', }
2194
+
2136
2195
  self._api.do(
2137
2196
  'DELETE',
2138
2197
  f'/api/2.0/accounts/{self._api.account_id}/storage-configurations/{storage_configuration_id}',
@@ -2150,6 +2209,7 @@ class StorageAPI:
2150
2209
  """
2151
2210
 
2152
2211
  headers = {'Accept': 'application/json', }
2212
+
2153
2213
  res = self._api.do(
2154
2214
  'GET',
2155
2215
  f'/api/2.0/accounts/{self._api.account_id}/storage-configurations/{storage_configuration_id}',
@@ -2165,6 +2225,7 @@ class StorageAPI:
2165
2225
  """
2166
2226
 
2167
2227
  headers = {'Accept': 'application/json', }
2228
+
2168
2229
  res = self._api.do('GET',
2169
2230
  f'/api/2.0/accounts/{self._api.account_id}/storage-configurations',
2170
2231
  headers=headers)
@@ -2215,6 +2276,7 @@ class VpcEndpointsAPI:
2215
2276
  if region is not None: body['region'] = region
2216
2277
  if vpc_endpoint_name is not None: body['vpc_endpoint_name'] = vpc_endpoint_name
2217
2278
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2279
+
2218
2280
  res = self._api.do('POST',
2219
2281
  f'/api/2.0/accounts/{self._api.account_id}/vpc-endpoints',
2220
2282
  body=body,
@@ -2240,6 +2302,7 @@ class VpcEndpointsAPI:
2240
2302
  """
2241
2303
 
2242
2304
  headers = {'Accept': 'application/json', }
2305
+
2243
2306
  self._api.do('DELETE',
2244
2307
  f'/api/2.0/accounts/{self._api.account_id}/vpc-endpoints/{vpc_endpoint_id}',
2245
2308
  headers=headers)
@@ -2260,6 +2323,7 @@ class VpcEndpointsAPI:
2260
2323
  """
2261
2324
 
2262
2325
  headers = {'Accept': 'application/json', }
2326
+
2263
2327
  res = self._api.do('GET',
2264
2328
  f'/api/2.0/accounts/{self._api.account_id}/vpc-endpoints/{vpc_endpoint_id}',
2265
2329
  headers=headers)
@@ -2278,6 +2342,7 @@ class VpcEndpointsAPI:
2278
2342
  """
2279
2343
 
2280
2344
  headers = {'Accept': 'application/json', }
2345
+
2281
2346
  res = self._api.do('GET', f'/api/2.0/accounts/{self._api.account_id}/vpc-endpoints', headers=headers)
2282
2347
  return [VpcEndpoint.from_dict(v) for v in res]
2283
2348
 
@@ -2466,6 +2531,7 @@ class WorkspacesAPI:
2466
2531
  body['storage_customer_managed_key_id'] = storage_customer_managed_key_id
2467
2532
  if workspace_name is not None: body['workspace_name'] = workspace_name
2468
2533
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2534
+
2469
2535
  op_response = self._api.do('POST',
2470
2536
  f'/api/2.0/accounts/{self._api.account_id}/workspaces',
2471
2537
  body=body,
@@ -2528,6 +2594,7 @@ class WorkspacesAPI:
2528
2594
  """
2529
2595
 
2530
2596
  headers = {'Accept': 'application/json', }
2597
+
2531
2598
  self._api.do('DELETE',
2532
2599
  f'/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}',
2533
2600
  headers=headers)
@@ -2555,6 +2622,7 @@ class WorkspacesAPI:
2555
2622
  """
2556
2623
 
2557
2624
  headers = {'Accept': 'application/json', }
2625
+
2558
2626
  res = self._api.do('GET',
2559
2627
  f'/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}',
2560
2628
  headers=headers)
@@ -2572,6 +2640,7 @@ class WorkspacesAPI:
2572
2640
  """
2573
2641
 
2574
2642
  headers = {'Accept': 'application/json', }
2643
+
2575
2644
  res = self._api.do('GET', f'/api/2.0/accounts/{self._api.account_id}/workspaces', headers=headers)
2576
2645
  return [Workspace.from_dict(v) for v in res]
2577
2646
 
@@ -2608,7 +2677,10 @@ class WorkspacesAPI:
2608
2677
  the private access settings ID to upgrade a workspace to add support for front-end, back-end, or both
2609
2678
  types of connectivity. You cannot remove (downgrade) any existing front-end or back-end PrivateLink
2610
2679
  support on a workspace. - Custom tags. Given you provide an empty custom tags, the update would not be
2611
- applied.
2680
+ applied. - Network connectivity configuration ID to add serverless stable IP support. You can add or
2681
+ update the network connectivity configuration ID to ensure the workspace uses the same set of stable
2682
+ IP CIDR blocks to access your resources. You cannot remove a network connectivity configuration from
2683
+ the workspace once attached, you can only switch to another one.
2612
2684
 
2613
2685
  After calling the `PATCH` operation to update the workspace configuration, make repeated `GET`
2614
2686
  requests with the workspace ID and check the workspace status. The workspace is successful if the
@@ -2619,28 +2691,29 @@ class WorkspacesAPI:
2619
2691
 
2620
2692
  ### Update a running workspace You can update a Databricks workspace configuration for running
2621
2693
  workspaces for some fields, but not all fields. For a running workspace, this request supports
2622
- updating the following fields only: - Credential configuration ID
2623
-
2624
- - Network configuration ID. Used only if you already use a customer-managed VPC. You cannot convert a
2625
- running workspace from a Databricks-managed VPC to a customer-managed VPC. You can use a network
2626
- configuration update in this API for a failed or running workspace to add support for PrivateLink,
2627
- although you also need to add a private access settings object.
2628
-
2629
- - Key configuration ID for managed services (control plane storage, such as notebook source and
2630
- Databricks SQL queries). Databricks does not directly encrypt the data with the customer-managed key
2631
- (CMK). Databricks uses both the CMK and the Databricks managed key (DMK) that is unique to your
2632
- workspace to encrypt the Data Encryption Key (DEK). Databricks uses the DEK to encrypt your
2633
- workspace's managed services persisted data. If the workspace does not already have a CMK for managed
2634
- services, adding this ID enables managed services encryption for new or updated data. Existing managed
2635
- services data that existed before adding the key remains not encrypted with the DEK until it is
2636
- modified. If the workspace already has customer-managed keys for managed services, this request
2637
- rotates (changes) the CMK keys and the DEK is re-encrypted with the DMK and the new CMK. - Key
2694
+ updating the following fields only: - Credential configuration ID - Network configuration ID. Used
2695
+ only if you already use a customer-managed VPC. You cannot convert a running workspace from a
2696
+ Databricks-managed VPC to a customer-managed VPC. You can use a network configuration update in this
2697
+ API for a failed or running workspace to add support for PrivateLink, although you also need to add a
2698
+ private access settings object. - Key configuration ID for managed services (control plane storage,
2699
+ such as notebook source and Databricks SQL queries). Databricks does not directly encrypt the data
2700
+ with the customer-managed key (CMK). Databricks uses both the CMK and the Databricks managed key (DMK)
2701
+ that is unique to your workspace to encrypt the Data Encryption Key (DEK). Databricks uses the DEK to
2702
+ encrypt your workspace's managed services persisted data. If the workspace does not already have a CMK
2703
+ for managed services, adding this ID enables managed services encryption for new or updated data.
2704
+ Existing managed services data that existed before adding the key remains not encrypted with the DEK
2705
+ until it is modified. If the workspace already has customer-managed keys for managed services, this
2706
+ request rotates (changes) the CMK keys and the DEK is re-encrypted with the DMK and the new CMK. - Key
2638
2707
  configuration ID for workspace storage (root S3 bucket and, optionally, EBS volumes). You can set this
2639
2708
  only if the workspace does not already have a customer-managed key configuration for workspace
2640
2709
  storage. - Private access settings ID to add PrivateLink support. You can add or update the private
2641
2710
  access settings ID to upgrade a workspace to add support for front-end, back-end, or both types of
2642
2711
  connectivity. You cannot remove (downgrade) any existing front-end or back-end PrivateLink support on
2643
- a workspace. - Custom tags. Given you provide an empty custom tags, the update would not be applied.
2712
+ a workspace. - Custom tags. Given you provide an empty custom tags, the update would not be applied. -
2713
+ Network connectivity configuration ID to add serverless stable IP support. You can add or update the
2714
+ network connectivity configuration ID to ensure the workspace uses the same set of stable IP CIDR
2715
+ blocks to access your resources. You cannot remove a network connectivity configuration from the
2716
+ workspace once attached, you can only switch to another one.
2644
2717
 
2645
2718
  **Important**: To update a running workspace, your workspace must have no running compute resources
2646
2719
  that run in your workspace's VPC in the Classic data plane. For example, stop all all-purpose
@@ -2655,15 +2728,13 @@ class WorkspacesAPI:
2655
2728
  [Account Console]. However, you cannot use or create clusters for another 20 minutes after that status
2656
2729
  change. This results in a total of up to 40 minutes in which you cannot create clusters. If you create
2657
2730
  or use clusters before this time interval elapses, clusters do not launch successfully, fail, or could
2658
- cause other unexpected behavior.
2659
-
2660
- * For workspaces with a customer-managed VPC, the workspace status stays at status `RUNNING` and the
2661
- VPC change happens immediately. A change to the storage customer-managed key configuration ID might
2662
- take a few minutes to update, so continue to check the workspace until you observe that it has been
2663
- updated. If the update fails, the workspace might revert silently to its original configuration. After
2664
- the workspace has been updated, you cannot use or create clusters for another 20 minutes. If you
2665
- create or use clusters before this time interval elapses, clusters do not launch successfully, fail,
2666
- or could cause other unexpected behavior.
2731
+ cause other unexpected behavior. * For workspaces with a customer-managed VPC, the workspace status
2732
+ stays at status `RUNNING` and the VPC change happens immediately. A change to the storage
2733
+ customer-managed key configuration ID might take a few minutes to update, so continue to check the
2734
+ workspace until you observe that it has been updated. If the update fails, the workspace might revert
2735
+ silently to its original configuration. After the workspace has been updated, you cannot use or create
2736
+ clusters for another 20 minutes. If you create or use clusters before this time interval elapses,
2737
+ clusters do not launch successfully, fail, or could cause other unexpected behavior.
2667
2738
 
2668
2739
  If you update the _storage_ customer-managed key configurations, it takes 20 minutes for the changes
2669
2740
  to fully take effect. During the 20 minute wait, it is important that you stop all REST API calls to
@@ -2696,8 +2767,6 @@ class WorkspacesAPI:
2696
2767
  The ID of the workspace's managed services encryption key configuration object. This parameter is
2697
2768
  available only for updating failed workspaces.
2698
2769
  :param network_connectivity_config_id: str (optional)
2699
- The ID of the network connectivity configuration object, which is the parent resource of this
2700
- private endpoint rule object.
2701
2770
  :param network_id: str (optional)
2702
2771
  The ID of the workspace's network configuration object. Used only if you already use a
2703
2772
  customer-managed VPC. For failed workspaces only, you can switch from a Databricks-managed VPC to a
@@ -2726,11 +2795,14 @@ class WorkspacesAPI:
2726
2795
  if storage_customer_managed_key_id is not None:
2727
2796
  body['storage_customer_managed_key_id'] = storage_customer_managed_key_id
2728
2797
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2729
- self._api.do('PATCH',
2730
- f'/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}',
2731
- body=body,
2732
- headers=headers)
2733
- return Wait(self.wait_get_workspace_running, workspace_id=workspace_id)
2798
+
2799
+ op_response = self._api.do('PATCH',
2800
+ f'/api/2.0/accounts/{self._api.account_id}/workspaces/{workspace_id}',
2801
+ body=body,
2802
+ headers=headers)
2803
+ return Wait(self.wait_get_workspace_running,
2804
+ response=UpdateResponse.from_dict(op_response),
2805
+ workspace_id=workspace_id)
2734
2806
 
2735
2807
  def update_and_wait(
2736
2808
  self,