gcore 0.3.0__py3-none-any.whl → 0.4.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 gcore might be problematic. Click here for more details.

Files changed (120) hide show
  1. gcore/__init__.py +2 -1
  2. gcore/_base_client.py +22 -0
  3. gcore/_client.py +9 -0
  4. gcore/_version.py +1 -1
  5. gcore/pagination.py +61 -1
  6. gcore/resources/__init__.py +14 -0
  7. gcore/resources/cloud/baremetal/flavors.py +11 -137
  8. gcore/resources/cloud/baremetal/images.py +10 -12
  9. gcore/resources/cloud/baremetal/servers.py +31 -28
  10. gcore/resources/cloud/billing_reservations.py +2 -2
  11. gcore/resources/cloud/file_shares/file_shares.py +7 -8
  12. gcore/resources/cloud/floating_ips.py +7 -12
  13. gcore/resources/cloud/gpu_baremetal_clusters/gpu_baremetal_clusters.py +31 -20
  14. gcore/resources/cloud/gpu_baremetal_clusters/images.py +9 -10
  15. gcore/resources/cloud/gpu_baremetal_clusters/interfaces.py +2 -2
  16. gcore/resources/cloud/gpu_baremetal_clusters/servers.py +8 -4
  17. gcore/resources/cloud/inference/deployments/deployments.py +10 -2
  18. gcore/resources/cloud/inference/registry_credentials.py +2 -2
  19. gcore/resources/cloud/inference/secrets.py +8 -8
  20. gcore/resources/cloud/instances/flavors.py +9 -233
  21. gcore/resources/cloud/instances/images.py +47 -37
  22. gcore/resources/cloud/instances/instances.py +47 -32
  23. gcore/resources/cloud/instances/interfaces.py +2 -2
  24. gcore/resources/cloud/ip_ranges.py +34 -2
  25. gcore/resources/cloud/load_balancers/l7_policies/l7_policies.py +10 -2
  26. gcore/resources/cloud/load_balancers/listeners.py +17 -8
  27. gcore/resources/cloud/load_balancers/load_balancers.py +73 -21
  28. gcore/resources/cloud/load_balancers/metrics.py +2 -2
  29. gcore/resources/cloud/load_balancers/pools/health_monitors.py +2 -2
  30. gcore/resources/cloud/load_balancers/pools/members.py +6 -2
  31. gcore/resources/cloud/networks/networks.py +81 -17
  32. gcore/resources/cloud/networks/routers.py +18 -18
  33. gcore/resources/cloud/networks/subnets.py +51 -11
  34. gcore/resources/cloud/projects.py +38 -24
  35. gcore/resources/cloud/quotas/quotas.py +6 -6
  36. gcore/resources/cloud/quotas/requests.py +8 -8
  37. gcore/resources/cloud/registries/artifacts.py +4 -4
  38. gcore/resources/cloud/registries/registries.py +14 -16
  39. gcore/resources/cloud/registries/repositories.py +4 -4
  40. gcore/resources/cloud/registries/tags.py +2 -2
  41. gcore/resources/cloud/registries/users.py +21 -22
  42. gcore/resources/cloud/reserved_fixed_ips/reserved_fixed_ips.py +20 -20
  43. gcore/resources/cloud/reserved_fixed_ips/vip.py +10 -10
  44. gcore/resources/cloud/security_groups/rules.py +6 -6
  45. gcore/resources/cloud/security_groups/security_groups.py +70 -31
  46. gcore/resources/cloud/tasks.py +4 -4
  47. gcore/resources/cloud/users/role_assignments.py +12 -14
  48. gcore/resources/cloud/volumes.py +139 -49
  49. gcore/resources/iam/__init__.py +47 -0
  50. gcore/resources/iam/api_tokens.py +521 -0
  51. gcore/resources/iam/iam.py +199 -0
  52. gcore/resources/iam/users.py +642 -0
  53. gcore/resources/waap/__init__.py +0 -14
  54. gcore/resources/waap/waap.py +0 -32
  55. gcore/types/cloud/baremetal/__init__.py +0 -1
  56. gcore/types/cloud/baremetal/image_list_params.py +1 -5
  57. gcore/types/cloud/baremetal/server_create_params.py +4 -8
  58. gcore/types/cloud/baremetal/server_list_params.py +1 -5
  59. gcore/types/cloud/ddos_profile.py +9 -3
  60. gcore/types/cloud/file_share_create_params.py +3 -5
  61. gcore/types/cloud/floating_ip_create_params.py +2 -4
  62. gcore/types/cloud/floating_ip_list_params.py +1 -5
  63. gcore/types/cloud/gpu_baremetal_cluster_create_params.py +2 -3
  64. gcore/types/cloud/gpu_baremetal_clusters/image_upload_params.py +2 -4
  65. gcore/types/cloud/health_monitor.py +6 -1
  66. gcore/types/cloud/instance_create_params.py +7 -8
  67. gcore/types/cloud/instance_list_params.py +1 -5
  68. gcore/types/cloud/instances/__init__.py +0 -2
  69. gcore/types/cloud/instances/image_create_from_volume_params.py +2 -4
  70. gcore/types/cloud/instances/image_list_params.py +1 -5
  71. gcore/types/cloud/instances/image_upload_params.py +2 -4
  72. gcore/types/cloud/load_balancer_create_params.py +8 -4
  73. gcore/types/cloud/load_balancer_list_params.py +1 -5
  74. gcore/types/cloud/load_balancer_update_params.py +24 -0
  75. gcore/types/cloud/load_balancers/pool_create_params.py +6 -1
  76. gcore/types/cloud/load_balancers/pool_update_params.py +6 -1
  77. gcore/types/cloud/load_balancers/pools/member_add_params.py +6 -1
  78. gcore/types/cloud/member.py +6 -1
  79. gcore/types/cloud/network_create_params.py +2 -3
  80. gcore/types/cloud/network_list_params.py +4 -5
  81. gcore/types/cloud/network_update_params.py +28 -2
  82. gcore/types/cloud/networks/router_list_params.py +2 -2
  83. gcore/types/cloud/networks/subnet_create_params.py +2 -3
  84. gcore/types/cloud/networks/subnet_list_params.py +1 -5
  85. gcore/types/cloud/networks/subnet_update_params.py +25 -0
  86. gcore/types/cloud/registries/__init__.py +1 -0
  87. gcore/types/cloud/registries/user_refresh_secret_response.py +31 -0
  88. gcore/types/cloud/reserved_fixed_ip_list_params.py +2 -2
  89. gcore/types/cloud/security_group_list_params.py +3 -7
  90. gcore/types/cloud/security_group_update_params.py +25 -0
  91. gcore/types/cloud/tag_update_map_param.py +2 -2
  92. gcore/types/cloud/volume_list_params.py +1 -5
  93. gcore/types/cloud/volume_update_params.py +29 -3
  94. gcore/types/iam/__init__.py +17 -0
  95. gcore/types/iam/account_overview.py +488 -0
  96. gcore/types/iam/api_token.py +78 -0
  97. gcore/types/iam/api_token_create.py +15 -0
  98. gcore/types/iam/api_token_create_params.py +42 -0
  99. gcore/types/iam/api_token_list.py +81 -0
  100. gcore/types/iam/api_token_list_params.py +41 -0
  101. gcore/types/iam/user.py +86 -0
  102. gcore/types/iam/user_detailed.py +104 -0
  103. gcore/types/iam/user_invite.py +15 -0
  104. gcore/types/iam/user_invite_params.py +37 -0
  105. gcore/types/iam/user_list_params.py +15 -0
  106. gcore/types/iam/user_update.py +104 -0
  107. gcore/types/iam/user_update_params.py +52 -0
  108. gcore/types/waap/__init__.py +0 -1
  109. gcore/types/waap/domains/custom_rule_create_params.py +7 -3
  110. gcore/types/waap/domains/custom_rule_update_params.py +7 -3
  111. gcore/types/waap/waap_custom_rule.py +7 -3
  112. {gcore-0.3.0.dist-info → gcore-0.4.0.dist-info}/METADATA +40 -3
  113. {gcore-0.3.0.dist-info → gcore-0.4.0.dist-info}/RECORD +115 -101
  114. gcore/resources/waap/clients.py +0 -135
  115. gcore/types/cloud/baremetal/flavor_list_suitable_params.py +0 -22
  116. gcore/types/cloud/instances/flavor_list_for_resize_params.py +0 -16
  117. gcore/types/cloud/instances/flavor_list_suitable_params.py +0 -59
  118. gcore/types/waap/client_me_response.py +0 -34
  119. {gcore-0.3.0.dist-info → gcore-0.4.0.dist-info}/WHEEL +0 -0
  120. {gcore-0.3.0.dist-info → gcore-0.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Iterable
5
+ from typing import List, Iterable, Optional
6
6
  from typing_extensions import Literal, overload
7
7
 
8
8
  import httpx
@@ -79,8 +79,11 @@ class VolumesResource(SyncAPIResource):
79
79
  extra_body: Body | None = None,
80
80
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
81
81
  ) -> TaskIDList:
82
- """
83
- Create volume
82
+ """Create a new volume in the project and region.
83
+
84
+ The volume can be created from
85
+ scratch, from an image, or from a snapshot. Optionally attach the volume to an
86
+ instance during creation.
84
87
 
85
88
  Args:
86
89
  project_id: Project ID
@@ -145,8 +148,11 @@ class VolumesResource(SyncAPIResource):
145
148
  extra_body: Body | None = None,
146
149
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
147
150
  ) -> TaskIDList:
148
- """
149
- Create volume
151
+ """Create a new volume in the project and region.
152
+
153
+ The volume can be created from
154
+ scratch, from an image, or from a snapshot. Optionally attach the volume to an
155
+ instance during creation.
150
156
 
151
157
  Args:
152
158
  project_id: Project ID
@@ -211,8 +217,11 @@ class VolumesResource(SyncAPIResource):
211
217
  extra_body: Body | None = None,
212
218
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
213
219
  ) -> TaskIDList:
214
- """
215
- Create volume
220
+ """Create a new volume in the project and region.
221
+
222
+ The volume can be created from
223
+ scratch, from an image, or from a snapshot. Optionally attach the volume to an
224
+ instance during creation.
216
225
 
217
226
  Args:
218
227
  project_id: Project ID
@@ -311,7 +320,8 @@ class VolumesResource(SyncAPIResource):
311
320
  *,
312
321
  project_id: int | None = None,
313
322
  region_id: int | None = None,
314
- name: str,
323
+ name: str | NotGiven = NOT_GIVEN,
324
+ tags: Optional[TagUpdateMapParam] | NotGiven = NOT_GIVEN,
315
325
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
316
326
  # The extra values given here take precedence over values defined on the client or passed to this method.
317
327
  extra_headers: Headers | None = None,
@@ -320,7 +330,7 @@ class VolumesResource(SyncAPIResource):
320
330
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
321
331
  ) -> Volume:
322
332
  """
323
- Rename volume
333
+ Rename a volume or update tags
324
334
 
325
335
  Args:
326
336
  project_id: Project ID
@@ -329,7 +339,27 @@ class VolumesResource(SyncAPIResource):
329
339
 
330
340
  volume_id: Volume ID
331
341
 
332
- name: Name.
342
+ name: Name
343
+
344
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
345
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
346
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
347
+ cannot be modified. **Examples:**
348
+
349
+ - **Add/update tags:**
350
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
351
+ updates existing ones.
352
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
353
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
354
+ tags are preserved).
355
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
356
+ specified tags.
357
+ - **Mixed operations:**
358
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
359
+ adds/updates 'environment' and '`cost_center`' while removing
360
+ '`deprecated_tag`', preserving other existing tags.
361
+ - **Replace all:** first delete existing tags with null values, then add new
362
+ ones in the same request.
333
363
 
334
364
  extra_headers: Send extra headers
335
365
 
@@ -347,7 +377,13 @@ class VolumesResource(SyncAPIResource):
347
377
  raise ValueError(f"Expected a non-empty value for `volume_id` but received {volume_id!r}")
348
378
  return self._patch(
349
379
  f"/cloud/v1/volumes/{project_id}/{region_id}/{volume_id}",
350
- body=maybe_transform({"name": name}, volume_update_params.VolumeUpdateParams),
380
+ body=maybe_transform(
381
+ {
382
+ "name": name,
383
+ "tags": tags,
384
+ },
385
+ volume_update_params.VolumeUpdateParams,
386
+ ),
351
387
  options=make_request_options(
352
388
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
353
389
  ),
@@ -376,8 +412,11 @@ class VolumesResource(SyncAPIResource):
376
412
  extra_body: Body | None = None,
377
413
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
378
414
  ) -> SyncOffsetPage[Volume]:
379
- """
380
- List volumes
415
+ """Retrieve a list of volumes in the project and region.
416
+
417
+ The list can be filtered
418
+ by various parameters like bootable status, metadata/tags, attachments, instance
419
+ ID, name, and ID.
381
420
 
382
421
  Args:
383
422
  project_id: Project ID
@@ -404,9 +443,7 @@ class VolumesResource(SyncAPIResource):
404
443
 
405
444
  tag_key: Optional. Filter by tag keys. ?`tag_key`=key1&`tag_key`=key2
406
445
 
407
- tag_key_value: Optional. Filter by tag key-value pairs. curl -G --data-urlencode
408
- "`tag_key_value`={"key": "value"}" --url
409
- "https://example.com/cloud/v1/resource/1/1"
446
+ tag_key_value: Optional. Filter by tag key-value pairs.
410
447
 
411
448
  extra_headers: Send extra headers
412
449
 
@@ -461,8 +498,10 @@ class VolumesResource(SyncAPIResource):
461
498
  extra_body: Body | None = None,
462
499
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
463
500
  ) -> TaskIDList:
464
- """
465
- Delete volume
501
+ """Delete a volume and all its snapshots.
502
+
503
+ The volume must be in an available state
504
+ to be deleted.
466
505
 
467
506
  Args:
468
507
  project_id: Project ID
@@ -573,8 +612,10 @@ class VolumesResource(SyncAPIResource):
573
612
  extra_body: Body | None = None,
574
613
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
575
614
  ) -> Volume:
576
- """
577
- Change volume type
615
+ """Change the type of a volume.
616
+
617
+ The volume must not have any snapshots to change
618
+ its type.
578
619
 
579
620
  Args:
580
621
  project_id: Project ID
@@ -673,7 +714,7 @@ class VolumesResource(SyncAPIResource):
673
714
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
674
715
  ) -> Volume:
675
716
  """
676
- Get volume
717
+ Retrieve detailed information about a specific volume.
677
718
 
678
719
  Args:
679
720
  project_id: Project ID
@@ -718,8 +759,10 @@ class VolumesResource(SyncAPIResource):
718
759
  extra_body: Body | None = None,
719
760
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
720
761
  ) -> TaskIDList:
721
- """
722
- Extend volume
762
+ """Increase the size of a volume.
763
+
764
+ The new size must be greater than the current
765
+ size.
723
766
 
724
767
  Args:
725
768
  project_id: Project ID
@@ -766,8 +809,10 @@ class VolumesResource(SyncAPIResource):
766
809
  extra_body: Body | None = None,
767
810
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
768
811
  ) -> None:
769
- """
770
- Revert volume to it's last snapshot
812
+ """Revert a volume to its last snapshot.
813
+
814
+ The volume must be in an available state
815
+ to be reverted.
771
816
 
772
817
  Args:
773
818
  project_id: Project ID
@@ -843,8 +888,11 @@ class AsyncVolumesResource(AsyncAPIResource):
843
888
  extra_body: Body | None = None,
844
889
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
845
890
  ) -> TaskIDList:
846
- """
847
- Create volume
891
+ """Create a new volume in the project and region.
892
+
893
+ The volume can be created from
894
+ scratch, from an image, or from a snapshot. Optionally attach the volume to an
895
+ instance during creation.
848
896
 
849
897
  Args:
850
898
  project_id: Project ID
@@ -909,8 +957,11 @@ class AsyncVolumesResource(AsyncAPIResource):
909
957
  extra_body: Body | None = None,
910
958
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
911
959
  ) -> TaskIDList:
912
- """
913
- Create volume
960
+ """Create a new volume in the project and region.
961
+
962
+ The volume can be created from
963
+ scratch, from an image, or from a snapshot. Optionally attach the volume to an
964
+ instance during creation.
914
965
 
915
966
  Args:
916
967
  project_id: Project ID
@@ -975,8 +1026,11 @@ class AsyncVolumesResource(AsyncAPIResource):
975
1026
  extra_body: Body | None = None,
976
1027
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
977
1028
  ) -> TaskIDList:
978
- """
979
- Create volume
1029
+ """Create a new volume in the project and region.
1030
+
1031
+ The volume can be created from
1032
+ scratch, from an image, or from a snapshot. Optionally attach the volume to an
1033
+ instance during creation.
980
1034
 
981
1035
  Args:
982
1036
  project_id: Project ID
@@ -1075,7 +1129,8 @@ class AsyncVolumesResource(AsyncAPIResource):
1075
1129
  *,
1076
1130
  project_id: int | None = None,
1077
1131
  region_id: int | None = None,
1078
- name: str,
1132
+ name: str | NotGiven = NOT_GIVEN,
1133
+ tags: Optional[TagUpdateMapParam] | NotGiven = NOT_GIVEN,
1079
1134
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1080
1135
  # The extra values given here take precedence over values defined on the client or passed to this method.
1081
1136
  extra_headers: Headers | None = None,
@@ -1084,7 +1139,7 @@ class AsyncVolumesResource(AsyncAPIResource):
1084
1139
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1085
1140
  ) -> Volume:
1086
1141
  """
1087
- Rename volume
1142
+ Rename a volume or update tags
1088
1143
 
1089
1144
  Args:
1090
1145
  project_id: Project ID
@@ -1093,7 +1148,27 @@ class AsyncVolumesResource(AsyncAPIResource):
1093
1148
 
1094
1149
  volume_id: Volume ID
1095
1150
 
1096
- name: Name.
1151
+ name: Name
1152
+
1153
+ tags: Update key-value tags using JSON Merge Patch semantics (RFC 7386). Provide
1154
+ key-value pairs to add or update tags. Set tag values to `null` to remove tags.
1155
+ Unspecified tags remain unchanged. Read-only tags are always preserved and
1156
+ cannot be modified. **Examples:**
1157
+
1158
+ - **Add/update tags:**
1159
+ `{'tags': {'environment': 'production', 'team': 'backend'}}` adds new tags or
1160
+ updates existing ones.
1161
+ - **Delete tags:** `{'tags': {'`old_tag`': null}}` removes specific tags.
1162
+ - **Remove all tags:** `{'tags': null}` removes all user-managed tags (read-only
1163
+ tags are preserved).
1164
+ - **Partial update:** `{'tags': {'environment': 'staging'}}` only updates
1165
+ specified tags.
1166
+ - **Mixed operations:**
1167
+ `{'tags': {'environment': 'production', '`cost_center`': 'engineering', '`deprecated_tag`': null}}`
1168
+ adds/updates 'environment' and '`cost_center`' while removing
1169
+ '`deprecated_tag`', preserving other existing tags.
1170
+ - **Replace all:** first delete existing tags with null values, then add new
1171
+ ones in the same request.
1097
1172
 
1098
1173
  extra_headers: Send extra headers
1099
1174
 
@@ -1111,7 +1186,13 @@ class AsyncVolumesResource(AsyncAPIResource):
1111
1186
  raise ValueError(f"Expected a non-empty value for `volume_id` but received {volume_id!r}")
1112
1187
  return await self._patch(
1113
1188
  f"/cloud/v1/volumes/{project_id}/{region_id}/{volume_id}",
1114
- body=await async_maybe_transform({"name": name}, volume_update_params.VolumeUpdateParams),
1189
+ body=await async_maybe_transform(
1190
+ {
1191
+ "name": name,
1192
+ "tags": tags,
1193
+ },
1194
+ volume_update_params.VolumeUpdateParams,
1195
+ ),
1115
1196
  options=make_request_options(
1116
1197
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1117
1198
  ),
@@ -1140,8 +1221,11 @@ class AsyncVolumesResource(AsyncAPIResource):
1140
1221
  extra_body: Body | None = None,
1141
1222
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1142
1223
  ) -> AsyncPaginator[Volume, AsyncOffsetPage[Volume]]:
1143
- """
1144
- List volumes
1224
+ """Retrieve a list of volumes in the project and region.
1225
+
1226
+ The list can be filtered
1227
+ by various parameters like bootable status, metadata/tags, attachments, instance
1228
+ ID, name, and ID.
1145
1229
 
1146
1230
  Args:
1147
1231
  project_id: Project ID
@@ -1168,9 +1252,7 @@ class AsyncVolumesResource(AsyncAPIResource):
1168
1252
 
1169
1253
  tag_key: Optional. Filter by tag keys. ?`tag_key`=key1&`tag_key`=key2
1170
1254
 
1171
- tag_key_value: Optional. Filter by tag key-value pairs. curl -G --data-urlencode
1172
- "`tag_key_value`={"key": "value"}" --url
1173
- "https://example.com/cloud/v1/resource/1/1"
1255
+ tag_key_value: Optional. Filter by tag key-value pairs.
1174
1256
 
1175
1257
  extra_headers: Send extra headers
1176
1258
 
@@ -1225,8 +1307,10 @@ class AsyncVolumesResource(AsyncAPIResource):
1225
1307
  extra_body: Body | None = None,
1226
1308
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1227
1309
  ) -> TaskIDList:
1228
- """
1229
- Delete volume
1310
+ """Delete a volume and all its snapshots.
1311
+
1312
+ The volume must be in an available state
1313
+ to be deleted.
1230
1314
 
1231
1315
  Args:
1232
1316
  project_id: Project ID
@@ -1337,8 +1421,10 @@ class AsyncVolumesResource(AsyncAPIResource):
1337
1421
  extra_body: Body | None = None,
1338
1422
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1339
1423
  ) -> Volume:
1340
- """
1341
- Change volume type
1424
+ """Change the type of a volume.
1425
+
1426
+ The volume must not have any snapshots to change
1427
+ its type.
1342
1428
 
1343
1429
  Args:
1344
1430
  project_id: Project ID
@@ -1439,7 +1525,7 @@ class AsyncVolumesResource(AsyncAPIResource):
1439
1525
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1440
1526
  ) -> Volume:
1441
1527
  """
1442
- Get volume
1528
+ Retrieve detailed information about a specific volume.
1443
1529
 
1444
1530
  Args:
1445
1531
  project_id: Project ID
@@ -1484,8 +1570,10 @@ class AsyncVolumesResource(AsyncAPIResource):
1484
1570
  extra_body: Body | None = None,
1485
1571
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1486
1572
  ) -> TaskIDList:
1487
- """
1488
- Extend volume
1573
+ """Increase the size of a volume.
1574
+
1575
+ The new size must be greater than the current
1576
+ size.
1489
1577
 
1490
1578
  Args:
1491
1579
  project_id: Project ID
@@ -1532,8 +1620,10 @@ class AsyncVolumesResource(AsyncAPIResource):
1532
1620
  extra_body: Body | None = None,
1533
1621
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1534
1622
  ) -> None:
1535
- """
1536
- Revert volume to it's last snapshot
1623
+ """Revert a volume to its last snapshot.
1624
+
1625
+ The volume must be in an available state
1626
+ to be reverted.
1537
1627
 
1538
1628
  Args:
1539
1629
  project_id: Project ID
@@ -0,0 +1,47 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from .iam import (
4
+ IamResource,
5
+ AsyncIamResource,
6
+ IamResourceWithRawResponse,
7
+ AsyncIamResourceWithRawResponse,
8
+ IamResourceWithStreamingResponse,
9
+ AsyncIamResourceWithStreamingResponse,
10
+ )
11
+ from .users import (
12
+ UsersResource,
13
+ AsyncUsersResource,
14
+ UsersResourceWithRawResponse,
15
+ AsyncUsersResourceWithRawResponse,
16
+ UsersResourceWithStreamingResponse,
17
+ AsyncUsersResourceWithStreamingResponse,
18
+ )
19
+ from .api_tokens import (
20
+ APITokensResource,
21
+ AsyncAPITokensResource,
22
+ APITokensResourceWithRawResponse,
23
+ AsyncAPITokensResourceWithRawResponse,
24
+ APITokensResourceWithStreamingResponse,
25
+ AsyncAPITokensResourceWithStreamingResponse,
26
+ )
27
+
28
+ __all__ = [
29
+ "APITokensResource",
30
+ "AsyncAPITokensResource",
31
+ "APITokensResourceWithRawResponse",
32
+ "AsyncAPITokensResourceWithRawResponse",
33
+ "APITokensResourceWithStreamingResponse",
34
+ "AsyncAPITokensResourceWithStreamingResponse",
35
+ "UsersResource",
36
+ "AsyncUsersResource",
37
+ "UsersResourceWithRawResponse",
38
+ "AsyncUsersResourceWithRawResponse",
39
+ "UsersResourceWithStreamingResponse",
40
+ "AsyncUsersResourceWithStreamingResponse",
41
+ "IamResource",
42
+ "AsyncIamResource",
43
+ "IamResourceWithRawResponse",
44
+ "AsyncIamResourceWithRawResponse",
45
+ "IamResourceWithStreamingResponse",
46
+ "AsyncIamResourceWithStreamingResponse",
47
+ ]